diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..12f7450 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,49 @@ +###> 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 +/.github/ + +#docs +public/docs \ No newline at end of file diff --git a/.env b/.env old mode 100644 new mode 100755 index 81526e6..c90b4d2 --- a/.env +++ b/.env @@ -29,16 +29,16 @@ MAILER_DSN=null://null # For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db" # For a PostgreSQL database, use: "postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8" # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml -DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7 +DATABASE_URL=mysql://btd:password@db:3306/btd?serverVersion=mariadb-10.11.0 ###< doctrine/doctrine-bundle ### # Routing information ROUTE_PROTOCOL=http ROUTE_HOST=localhost -ROUTE_BASE=/btd +ROUTE_BASE= # Piwik -MATOMO_ENABLED=${-:false} +MATOMO_ENABLED=false # BTD specific -UPLOAD_PATH=data/uploads +UPLOAD_PATH=/uploads diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..4d4f870 --- /dev/null +++ b/.github/workflows/main.yml @@ -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/btd + 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/572/trigger/pipeline \ No newline at end of file diff --git a/.gitignore b/.gitignore index 69d2a05..05b8d19 100644 --- a/.gitignore +++ b/.gitignore @@ -8,33 +8,39 @@ /vendor/ ###< symfony/framework-bundle ### -###> symfony/phpunit-bridge ### -.phpunit -.phpunit.result.cache -/phpunit.xml -###< symfony/phpunit-bridge ### - -# Temporary while doing the upgrade. -/old +###> phpunit/phpunit ### +.phpunit.cache/ +coverage/ +###< phpunit/phpunit ### -# documentation -/docs/src/build -/web/docs +###> friendsofphp/php-cs-fixer ### +/.php-cs-fixer.cache +###< friendsofphp/php-cs-fixer ### -# PHPStorm config. +# Editors /.idea -.yarn-integrity -public/yarn -config/deploy.yml -*.sql -data/uploads -config/deploy.yaml -public/docs -src/.preload.php +.vscode -###> phpunit/phpunit ### -/phpunit.xml -.phpunit.result.cache -###< phpunit/phpunit ### +# Bundles +/public/js/jquery.collection.js +/templates/jquery.collection.html.twig -Makefile.local +# Yarn packages. +node_modules + +# Docker +.data + +# MISC +/*.sql +/data +/src/.preload.php + +# Code coverage and QA reports +public/dev + +# Mac DS_Store +.DS_Store + +#docs +public/docs diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.php similarity index 88% rename from .php-cs-fixer.dist.php rename to .php-cs-fixer.php index 6900fdd..424801a 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.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..c6a4f2f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +FROM python:3.12-slim AS btd-docs +WORKDIR /app + +# build python deps +COPY docs/requirements.txt /app/ +RUN pip install -r requirements.txt + +COPY docs /app + +RUN sphinx-build source _site + +FROM node:21.6-slim AS btd-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 btd +ENV GIT_REPO=https://github.com/sfu-dhil/btd + +# 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=btd-prod-assets /app/node_modules /var/www/html/public/node_modules +# copy docs +COPY --chown=www-data:www-data --chmod=775 --from=btd-docs /app/_site /var/www/html/public/docs/sphinx + +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 b07ee12..fad4d0e 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,147 @@ # Silence output slightly # .SILENT: -DB := dhil_btd -PROJECT := btd +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.legacy +CODE_DIRS := bin config migrations src templates tests -# Override any of the options above by copying them to makefile.local --include Makefile.local +## -- 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) -## -- No targets yet diff --git a/README.md b/README.md index 93ec820..3ba18be 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,188 @@ # Between the Digital -[Between the Digital][btd] (affectionately known as BTD) is a PHP application written using the -[Symfony Framework][symfony]. It is a digital tool for collecting digital art and artefacts. +[Between the Digital][https://dhil.lib.sfu.ca/btd] (affectionately known as BTD) is a PHP application written using the +[Symfony Framework][https://symfony.com]. It is a digital tool for collecting digital art and artefacts. + ## 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-btd]. -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`. -5. Create a MariaDB database and user. - - ```sql - DROP DATABASE IF EXISTS btd; - CREATE DATABASE btd; - DROP USER IF EXISTS btd@localhost; - CREATE USER btd@localhost IDENTIFIED BY 'abc123'; - GRANT ALL ON btd.* TO btd@localhost; - ``` -6. Copy .env to .env.local and edit configuration to suite your needs. -7. 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 btd < btd.sql - ``` - -8. Visit http://localhost/btd -9. 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. - -[btd]: https://dhil.lib.sfu.ca/btd -[symfony]: https://symfony.com -[github-btd]: https://github.com/sfu-dhil/btd -[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 `btd.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 btd_db bash -c "mysql -u btd -ppassword btd < /btd.sql" + +Next you must start the whole application + + docker compose up -d --build + +btd will now be available at `http://localhost:8080/` + +### Create your admin user credentials + + docker exec -it btd_app ./bin/console nines:user:create '' '' + docker exec -it btd_app ./bin/console nines:user:password + docker exec -it btd_app ./bin/console nines:user:promote ROLE_ADMIN + docker exec -it btd_app ./bin/console nines:user:activate + +example: + + docker exec -it btd_app ./bin/console nines:user:create test@test.com 'Test User' 'DHIL' + docker exec -it btd_app ./bin/console nines:user:password test@test.com test_password + docker exec -it btd_app ./bin/console nines:user:promote test@test.com ROLE_ADMIN + docker exec -it btd_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 btd_app + docker logs -f btd_db + docker logs -f btd_mail + +### Accessing the Application + + http://localhost:8080/ + +### Accessing the Database + +Command line: + + docker exec -it btd_db mysql -u btd -ppassword btd + +Through a database management tool: +- Host:`127.0.0.1` +- Port: `13306` +- Username: `btd` +- Password: `password` + +### Accessing Mailhog (catches emails sent by the app) + + http://localhost:8025/ + +### Database Migrations + +Migrate up to latest + + docker exec -it btd_app make migrate + +## Updating Application Dependencies + +### Yarn (javascript) + +First setup an image to build the yarn deps in + + docker build -t btd_yarn_helper --target btd-prod-assets . + +Then run the following as needed + + # add new package + docker run -it --rm -v $(pwd)/public:/app btd_yarn_helper yarn add [package] + + # update a package + docker run -it --rm -v $(pwd)/public:/app btd_yarn_helper yarn upgrade [package] + + # update all packages + docker run -it --rm -v $(pwd)/public:/app btd_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 btd-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 btd_app composer require [vendor/package] + + # add new dev package + docker exec -it btd_app composer require --dev [vendor/package] + + # update a package + docker exec -it btd_app composer update [vendor/package] + + # update all packages + docker exec -it btd_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 btd] + + 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 btd_app make test + +### Generate Code Coverage + + docker exec -it btd_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 btd_app make lint-all + docker exec -it btd_app make symlint + + # or + docker exec -it btd_app make stan + docker exec -it btd_app make twiglint + docker exec -it btd_app make twigcs + docker exec -it btd_app make yamllint + docker exec -it btd_app make symlint + + +Automatically fix some standards errors + + docker exec -it btd_app make fix.all + +### Debug helpers + + docker exec -it btd_app make dump.autowire + docker exec -it btd_app make dump.container + docker exec -it btd_app make dump.env + docker exec -it btd_app make dump.params + docker exec -it btd_app make dump.router + docker exec -it btd_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 5c26c1f..9601f3f 100644 --- a/composer.json +++ b/composer.json @@ -4,62 +4,75 @@ "type": "project", "license": "GPL-2.0-or-later", "require": { - "php": "^7.4", + "php": "^8.2", "ext-ctype": "*", "ext-iconv": "*", "ext-imagick": "*", - "doctrine/annotations": "^1.0", - "doctrine/common": "^2.13", - "doctrine/doctrine-bundle": "^2.3", + "ext-json": "*", + "ext-mbstring": "*", + "beberlei/doctrineextensions": "^1.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/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.*", - "tetranz/select2entity-bundle": "^3.0", - "twig/extra-bundle": "^2.12|^3.0", - "twig/string-extra": "^3.0", - "twig/twig": "^2.12|^3.0", - "ubermichael/nines": "~4.x-dev" + "sfu-dhil/nines": "6.3.18", + "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": "^3.7", + "twig/intl-extra": "^3.7", + "twig/string-extra": "^3.7", + "twig/twig": "^3.7" }, "require-dev": { - "deployer/deployer": "^6.8", - "doctrine/doctrine-fixtures-bundle": "^3.3", - "liip/test-fixtures-bundle": "^1.6", - "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/debug-bundle": "^4.4", - "symfony/maker-bundle": "^1.0", - "symfony/phpunit-bridge": "^5.3", - "symfony/stopwatch": "^4.4", - "symfony/web-profiler-bundle": "^4.4" + "dama/doctrine-test-bundle": "^7.2", + "doctrine/doctrine-fixtures-bundle": "^3.4", + "friendsofphp/php-cs-fixer": "^3.22", + "friendsoftwig/twigcs": "^6.2", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-doctrine": "^1.3", + "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": { @@ -68,7 +81,8 @@ }, "sort-packages": true, "allow-plugins": { - "symfony/flex": true + "symfony/flex": true, + "symfony/runtime": true } }, "autoload": { @@ -110,7 +124,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "4.4.*" + "require": "6.3.*" } } } diff --git a/composer.lock b/composer.lock index c62f651..43c8fe7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,109 +4,101 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8cecac1bab15c02761af9d28547a88d7", + "content-hash": "f21bdd79ba4cd4700514a7f04664fc6b", "packages": [ { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", + "name": "beberlei/doctrineextensions", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + "url": "https://github.com/beberlei/DoctrineExtensions.git", + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" + "doctrine/orm": "^2.19 || ^3.0", + "php": "^7.2 || ^8.0" }, "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } + "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" }, + "type": "library", "autoload": { "psr-4": { - "PackageVersions\\": "src/PackageVersions" + "DoctrineExtensions\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" }, { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "Steve Lacey", + "email": "steve@steve.ly" } ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "description": "A set of extensions to Doctrine 2 that add support for additional query functions available in MySQL, Oracle, PostgreSQL and SQLite.", + "keywords": [ + "database", + "doctrine", + "orm" + ], "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.5.0" }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+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": { @@ -148,22 +140,22 @@ ], "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", - "version": "1.13.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "56cd022adb5514472cb144c087393c1821911d09" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", - "reference": "56cd022adb5514472cb144c087393c1821911d09", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -173,19 +165,13 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", "doctrine/coding-standard": "^9", - "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/cache": "^4.4 || ^5.4 || ^6", "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, "type": "library", "autoload": { "psr-4": { @@ -233,7 +219,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.13.0" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -249,36 +235,38 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:06:54+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "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/", @@ -317,52 +305,56 @@ ], "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": "2.13.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", + "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", + "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3", - "doctrine/reflection": "^1.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.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", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -395,7 +387,7 @@ "email": "ocramius@gmail.com" } ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ "common", @@ -404,7 +396,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/2.13.x" + "source": "https://github.com/doctrine/common/tree/3.4.4" }, "funding": [ { @@ -420,39 +412,44 @@ "type": "tidelift" } ], - "time": "2020-06-05T16:46:05+00:00" + "time": "2024-04-16T13:35:33+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.9", + "version": "3.8.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8" + "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8", - "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b05e48a745f722801f55408d0dbd8003b403dbbd", + "reference": "b05e48a745f722801f55408d0dbd8003b403dbbd", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "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": "2021.1", - "phpstan/phpstan": "1.4.6", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.16", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.22.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." @@ -463,7 +460,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -506,14 +503,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.9" + "source": "https://github.com/doctrine/dbal/tree/3.8.4" }, "funding": [ { @@ -529,29 +525,33 @@ "type": "tidelift" } ], - "time": "2022-05-02T20:28:55+00:00" + "time": "2024-04-25T07:04:44+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "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": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "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" @@ -570,58 +570,68 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2021-03-21T12:59:47+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.3.2", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d6b3c37804539a24ba8a7d647a6144cab2f13242" + "reference": "5418e811a14724068e95e0ba43353b903ada530f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d6b3c37804539a24ba8a7d647a6144cab2f13242", - "reference": "d6b3c37804539a24ba8a7d647a6144cab2f13242", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f", + "reference": "5418e811a14724068e95e0ba43353b903ada530f", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9.0|^3.0", - "doctrine/persistence": "^1.3.3|^2.0", + "doctrine/cache": "^1.11 || ^2.0", + "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", - "symfony/config": "^4.3.3|^5.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0", - "symfony/dependency-injection": "^4.3.3|^5.0", - "symfony/doctrine-bridge": "^4.4.7|^5.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0", - "symfony/service-contracts": "^1.1.1|^2.0" + "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.6", - "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": "^8.0", - "doctrine/orm": "^2.6", + "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", - "psalm/plugin-phpunit": "^0.15.1", - "psalm/plugin-symfony": "^2.2.4", - "symfony/phpunit-bridge": "^5.2", - "symfony/property-info": "^4.3.3|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0", - "symfony/security-bundle": "^4.4|^5.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.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.", @@ -631,7 +641,7 @@ "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -649,15 +659,15 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" + "homepage": "https://www.doctrine-project.org/" } ], "description": "Symfony DoctrineBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database", "dbal", @@ -666,7 +676,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.3.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0" }, "funding": [ { @@ -682,38 +692,45 @@ "type": "tidelift" } ], - "time": "2021-05-06T19:21:22+00:00" + "time": "2024-03-19T07:20:37+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.2", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "3393f411ba25ade21969c33f2053220044854d01" + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/3393f411ba25ade21969c33f2053220044854d01", - "reference": "3393f411ba25ade21969c33f2053220044854d01", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", "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" + "composer/semver": "^3.0", + "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": { @@ -751,7 +768,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.1" }, "funding": [ { @@ -767,38 +784,38 @@ "type": "tidelift" } ], - "time": "2022-02-01T18:08:07+00:00" + "time": "2024-05-14T20:32:18+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" }, "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/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", "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": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -842,7 +859,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.1" }, "funding": [ { @@ -858,42 +875,37 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2024-05-22T20:47:39+00:00" }, { "name": "doctrine/inflector", - "version": "1.4.4", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "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", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector", - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -938,7 +950,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.4.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -954,34 +966,34 @@ "type": "tidelift" } ], - "time": "2021-04-16T17:34:40+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": { @@ -1008,7 +1020,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": [ { @@ -1024,35 +1036,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/", @@ -1084,7 +1097,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": [ { @@ -1100,49 +1113,51 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "doctrine/migrations", - "version": "3.4.2", + "version": "3.7.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "f9b4c8032276460afd9dfa62fb215734b4380d90" + "reference": "954e0a314c2f0eb9fb418210445111747de254a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/f9b4c8032276460afd9dfa62fb215734b4380d90", - "reference": "f9b4c8032276460afd9dfa62fb215734b4380d90", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/954e0a314c2f0eb9fb418210445111747de254a6", + "reference": "954e0a314c2f0eb9fb418210445111747de254a6", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^2.11 || ^3.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", + "doctrine/dbal": "^3.5.1 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0 || ^6.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0 || ^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 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", + "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": "^8.5 || ^9.4", - "symfony/cache": "^3.4.26 || ^4.2.12 || ^5.0 || ^6.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^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.", @@ -1152,12 +1167,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -1190,7 +1199,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.4.2" + "source": "https://github.com/doctrine/migrations/tree/3.7.4" }, "funding": [ { @@ -1206,60 +1215,69 @@ "type": "tidelift" } ], - "time": "2022-04-01T06:38:22+00:00" + "time": "2024-03-06T13:41:11+00:00" }, { "name": "doctrine/orm", - "version": "2.7.5", + "version": "2.19.5", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "01187c9260cd085529ddd1273665217cae659640" + "reference": "94986af28452da42a46a4489d1c958a2e5d710e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/01187c9260cd085529ddd1273665217cae659640", - "reference": "01187c9260cd085529ddd1273665217cae659640", + "url": "https://api.github.com/repos/doctrine/orm/zipball/94986af28452da42a46a4489d1c958a2e5d710e5", + "reference": "94986af28452da42a46a4489d1c958a2e5d710e5", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.11.1", - "doctrine/cache": "^1.9.1", - "doctrine/collections": "^1.5", - "doctrine/common": "^2.11 || ^3.0", - "doctrine/dbal": "^2.9.3", - "doctrine/event-manager": "^1.1", - "doctrine/inflector": "^1.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3 || ^2.0", - "ext-pdo": "*", - "php": "^7.1", - "symfony/console": "^3.0|^4.0|^5.0" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.12.1 || ^2.1.1", + "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.2 || ^2", + "doctrine/inflector": "^1.4 || ^2.0", + "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": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.12.18", - "phpunit/phpunit": "^8.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "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.10.59", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "psr/log": "^1 || ^2 || ^3", + "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", + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, "bin": [ "bin/doctrine" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1296,51 +1314,47 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.7.5" + "source": "https://github.com/doctrine/orm/tree/2.19.5" }, - "time": "2020-12-03T08:52:14+00:00" + "time": "2024-04-30T06:49:54+00:00" }, { "name": "doctrine/persistence", - "version": "1.3.8", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42", + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", - "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/common": "<2.10@dev" + "doctrine/common": "<2.10" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^3.11" + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^11", + "doctrine/common": "^3.0", + "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.30.0 || 5.3.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -1374,7 +1388,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", @@ -1384,7 +1398,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/1.3.x" + "source": "https://github.com/doctrine/persistence/tree/3.3.2" }, "funding": [ { @@ -1400,105 +1414,30 @@ "type": "tidelift" } ], - "time": "2020-06-20T12:56:16+00:00" - }, - { - "name": "doctrine/reflection", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", - "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/common": "^3.3", - "phpstan/phpstan": "^1.4.10", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "support": { - "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.3" - }, - "abandoned": "roave/better-reflection", - "time": "2022-05-31T18:46:25+00:00" + "time": "2024-03-12T14:54:36+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.3", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc" }, "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/d1ac84aef745c69ea034929eb6d65a6908b675cc", + "reference": "d1ac84aef745c69ea034929eb6d65a6908b675cc", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" }, "bin": [ "bin/sql-formatter" @@ -1528,33 +1467,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.4.0" }, - "time": "2022-05-23T21:33:49+00:00" + "time": "2024-05-08T08:12:09+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.25", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1562,7 +1500,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1590,7 +1528,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1598,26 +1536,86 @@ "type": "github" } ], - "time": "2020-12-29T14:50:06+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", @@ -1628,7 +1626,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -1668,7 +1666,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": [ { @@ -1680,53 +1678,107 @@ "type": "tidelift" } ], - "time": "2022-05-05T09:31:05+00:00" + "time": "2024-03-20T12:50:41+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "7.4.5", + "name": "google/recaptcha", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + "url": "https://github.com/google/recaptcha.git", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "url": "https://api.github.com/repos/google/recaptcha/zipball/d59a801e98a4e9174814a6d71bbc268dff1202df", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" + "php": ">=8" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "friendsofphp/php-cs-fixer": "^3.14", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "files": [ + "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.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "" + }, + "require": { + "ext-json": "*", + "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" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "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": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ "src/functions_include.php" ], "psr-4": { @@ -1788,7 +1840,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": [ { @@ -1804,38 +1856,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/" } @@ -1872,7 +1923,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": [ { @@ -1888,26 +1939,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": { @@ -1915,17 +1966,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": { @@ -1987,7 +2039,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": [ { @@ -2003,42 +2055,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", @@ -2048,12 +2101,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": { @@ -2076,7 +2130,7 @@ } ], "description": "Knplabs component library", - "homepage": "http://github.com/KnpLabs/knp-components", + "homepage": "https://github.com/KnpLabs/knp-components", "keywords": [ "components", "knp", @@ -2086,36 +2140,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": "2.6.1", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenu.git", - "reference": "56ffccc3ed8f7b69ec6e6d587e9f840c0a270739" + "reference": "c39403f7c427d1b72cc56f38df0a075b4b9191fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/56ffccc3ed8f7b69ec6e6d587e9f840c0a270739", - "reference": "56ffccc3ed8f7b69ec6e6d587e9f840c0a270739", + "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/c39403f7c427d1b72cc56f38df0a075b4b9191fe", + "reference": "c39403f7c427d1b72cc56f38df0a075b4b9191fe", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^8.1" }, "conflict": { - "twig/twig": "<1.40|>=2,<2.9" + "twig/twig": "<1.42.3 || >=2,<2.9" }, "require-dev": { - "psr/container": "^1.0", - "symfony/http-foundation": "~2.4|~3.0|^4.0", - "symfony/phpunit-bridge": "~3.3|^4.0", - "symfony/routing": "~2.3|~3.0|^4.0", - "twig/twig": "^1.40|^2.9" + "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" @@ -2123,7 +2179,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -2145,7 +2201,7 @@ "email": "stof@notk.org" }, { - "name": "Symfony Community", + "name": "The Community", "homepage": "https://github.com/KnpLabs/KnpMenu/contributors" } ], @@ -2157,38 +2213,40 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenu/issues", - "source": "https://github.com/KnpLabs/KnpMenu/tree/2.6.1" + "source": "https://github.com/KnpLabs/KnpMenu/tree/v3.5.0" }, - "time": "2021-02-19T07:45:31+00:00" + "time": "2024-03-23T15:35:09+00:00" }, { "name": "knplabs/knp-menu-bundle", - "version": "v2.3.0", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "78b0cebf8e1490f12ba6555511282954de83f627" + "reference": "6a1e3e1f4131f9a5a967e36717a1fe680c183637" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/78b0cebf8e1490f12ba6555511282954de83f627", - "reference": "78b0cebf8e1490f12ba6555511282954de83f627", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/6a1e3e1f4131f9a5a967e36717a1fe680c183637", + "reference": "6a1e3e1f4131f9a5a967e36717a1fe680c183637", "shasum": "" }, "require": { - "knplabs/knp-menu": "~2.3", - "php": "^7.1", - "symfony/framework-bundle": "^3.4 | ^4.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": { - "symfony/expression-language": "^3.4 | ^4.0", - "symfony/phpunit-bridge": "^3.4 | ^4.0", - "symfony/templating": "^3.4 | ^4.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": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -2220,41 +2278,41 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/master" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.4.2" }, - "time": "2019-09-19T08:51:48+00:00" + "time": "2024-06-03T08:48:36+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": { @@ -2274,15 +2332,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", @@ -2294,35 +2352,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", @@ -2330,9 +2388,6 @@ }, "type": "library", "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -2362,108 +2417,311 @@ "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": { + "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": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "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": { + "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" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/8d43ef5c841032c87e2de015972c06f3865ef718", + "reference": "8d43ef5c841032c87e2de015972c06f3865ef718", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" }, "suggest": { - "solarium/solarium": "*" + "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": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "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/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2024-03-23T07:42:40+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + }, + "dist": { + "type": "zip", + "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": { "psr-4": { - "Minimalcode\\Search\\": "src/Minimalcode/Search/" + "Masterminds\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ { - "name": "Fabio Piro", - "email": "pirofabio@gmail.com" + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" } ], - "description": "Fluent Lucene-Sorl Query Builder for PHP", - "homepage": "http://minimalcode.org", + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", "keywords": [ - "builder", - "lucene", - "query", - "solr" + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" ], "support": { - "issues": "https://github.com/minimalcode-org/search/issues", - "source": "https://github.com/minimalcode-org/search/tree/master" + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" }, - "time": "2017-02-05T00:00:15+00:00" + "time": "2024-03-31T07:05:07+00:00" }, { "name": "monolog/monolog", - "version": "1.27.1", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "3.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "aws/aws-sdk-php": "^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" + "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-mongo": "Allow sending log messages to a MongoDB server", + "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 PHP Driver", + "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", - "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" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -2477,11 +2735,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -2489,7 +2747,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -2501,7 +2759,7 @@ "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2024-04-12T21:02:21+00:00" }, { "name": "ninsuo/symfony-collection", @@ -2542,38 +2800,39 @@ }, { "name": "nyholm/psr7", - "version": "1.5.1", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/Nyholm/psr7.git", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a" + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a", - "reference": "f734364e38a876a23be4d906a2a089e1315be18a", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", + "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", "shasum": "" }, "require": { - "php": ">=7.1", - "php-http/message-factory": "^1.0", + "php": ">=7.2", "psr/http-factory": "^1.0", - "psr/http-message": "^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", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", "symfony/error-handler": "^4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -2603,7 +2862,7 @@ ], "support": { "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.5.1" + "source": "https://github.com/Nyholm/psr7/tree/1.8.1" }, "funding": [ { @@ -2615,61 +2874,7 @@ "type": "github" } ], - "time": "2022-06-22T07:13:36+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" - }, - "time": "2015-12-19T14:08:53+00:00" + "time": "2023-11-13T09:31:12+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2726,28 +2931,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "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": { @@ -2771,37 +2983,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.1" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-05-21T05:55:05+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": { @@ -2827,26 +3047,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.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "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.1" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2024-05-31T08:52:43+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": { @@ -2866,7 +3133,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -2876,28 +3143,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/" @@ -2924,9 +3244,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", @@ -2980,21 +3300,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": { @@ -3014,7 +3334,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -3026,27 +3346,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.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "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/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -3066,10 +3386,10 @@ "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", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -3081,31 +3401,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2024-04-15T12:06:14+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": { @@ -3120,7 +3440,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -3134,31 +3454,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": { @@ -3177,6 +3500,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -3186,36 +3510,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/", @@ -3236,9 +3560,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", @@ -3286,20 +3610,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", @@ -3357,99 +3681,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.18", "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": "1c3006561cf9cbd814f38e7ac8c205ef0465c81f" }, "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" + "name": "Michael Joyce", + "email": "ubermichael@gmail.com" + }, + { + "name": "Andrew Gardener", + "email": "andrew.e.gardner@gmail.com" } ], - "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" + "description": "Some useful bundles.", + "time": "2024-05-22T17:46:48+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": { @@ -3477,7 +3814,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": [ { @@ -3493,60 +3830,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/" ] @@ -3565,14 +3903,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": [ { @@ -3588,33 +3926,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", @@ -3651,7 +3986,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": [ { @@ -3667,46 +4002,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/" @@ -3718,18 +4043,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": [ { @@ -3745,58 +4075,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/" @@ -3816,10 +4131,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": [ { @@ -3835,36 +4150,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/" @@ -3884,10 +4215,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "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": [ { @@ -3903,50 +4240,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": { @@ -3974,7 +4305,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": [ { @@ -3990,29 +4321,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", @@ -4041,7 +4372,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": [ { @@ -4057,73 +4388,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" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.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" + "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" }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" + "require-dev": { + "doctrine/annotations": "^1.13.1|^2", + "doctrine/collections": "^1.0|^2.0", + "doctrine/data-fixtures": "^1.1", + "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": { @@ -4151,7 +4482,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": [ { @@ -4167,27 +4498,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": { @@ -4220,7 +4556,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + "source": "https://github.com/symfony/dotenv/tree/v6.3.12" }, "funding": [ { @@ -4236,32 +4572,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": { @@ -4288,7 +4630,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": [ { @@ -4304,47 +4646,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": { @@ -4372,7 +4710,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": [ { @@ -4388,33 +4726,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", @@ -4451,7 +4786,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": [ { @@ -4467,26 +4802,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": { @@ -4514,7 +4850,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": [ { @@ -4530,26 +4866,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": { @@ -4577,7 +4913,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": [ { @@ -4593,25 +4929,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": { @@ -4639,7 +4977,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": [ { @@ -4655,32 +4993,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": { @@ -4704,7 +5042,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": [ { @@ -4720,61 +5058,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" - }, - "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" + "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" }, - "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." + "require-dev": { + "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": { @@ -4802,7 +5139,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": [ { @@ -4818,109 +5155,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" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "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.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": { @@ -4948,7 +5283,7 @@ "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": [ { @@ -4964,49 +5299,32 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-01-23T16:21:43+00:00" }, { - "name": "symfony/http-client", - "version": "v4.4.44", + "name": "symfony/html-sanitizer", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "900632460c2ed5fa656b13cb911ff8f702918618" + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "77d508d1d91f9894a9d7b2384bf832a70197752a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/900632460c2ed5fa656b13cb911ff8f702918618", - "reference": "900632460c2ed5fa656b13cb911ff8f702918618", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/77d508d1d91f9894a9d7b2384bf832a70197752a", + "reference": "77d508d1d91f9894a9d7b2384bf832a70197752a", "shasum": "" }, "require": { - "php": ">=7.1.3", - "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" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1|2.0" - }, - "require-dev": { - "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" + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpClient\\": "" + "Symfony\\Component\\HtmlSanitizer\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5018,18 +5336,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "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/http-client/tree/v4.4.44" + "source": "https://github.com/symfony/html-sanitizer/tree/v6.3.12" }, "funding": [ { @@ -5045,42 +5368,61 @@ "type": "tidelift" } ], - "time": "2022-07-27T17:16:03+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "name": "symfony/http-client", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "url": "https://github.com/symfony/http-client.git", + "reference": "510c51058dbef5db7d49c704954f32d6527d17f8" }, "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/zipball/510c51058dbef5db7d49c704954f32d6527d17f8", + "reference": "510c51058dbef5db7d49c704954f32d6527d17f8", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^2.5|^3" }, - "suggest": { - "symfony/http-client-implementation": "" + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.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": "^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": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5096,18 +5438,13 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to HTTP clients", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "http" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/http-client/tree/v6.3.12" }, "funding": [ { @@ -5123,39 +5460,41 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2024-01-29T14:46:07+00:00" }, { - "name": "symfony/http-foundation", - "version": "v4.4.44", + "name": "symfony/http-client-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "9bc83c2f78949fc64503134a3139a7b055890d06" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "20414d96f391677bf80078aa55baece78b82647d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9bc83c2f78949fc64503134a3139a7b055890d06", - "reference": "9bc83c2f78949fc64503134a3139a7b055890d06", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "php": ">=8.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Contracts\\HttpClient\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5164,18 +5503,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Generic abstractions related to HTTP clients", "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.44" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" }, "funding": [ { @@ -5191,72 +5538,45 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.4.44", + "name": "symfony/http-foundation", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "9e444442334fae9637ef3209bc2abddfef49e714" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "3b72add708d48e8c08f7152df2d0b8d5303408fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9e444442334fae9637ef3209bc2abddfef49e714", - "reference": "9e444442334fae9637ef3209bc2abddfef49e714", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3b72add708d48e8c08f7152df2d0b8d5303408fa", + "reference": "3b72add708d48e8c08f7152df2d0b8d5303408fa", "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", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "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" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "symfony/cache": "<6.3" }, "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": "" + "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": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5276,10 +5596,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a structured process for converting a Request into a Response", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.44" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.12" }, "funding": [ { @@ -5295,31 +5615,81 @@ "type": "tidelift" } ], - "time": "2022-07-29T12:23:38+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { - "name": "symfony/inflector", - "version": "v4.4.44", + "name": "symfony/http-kernel", + "version": "v6.3.12", "source": { "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "66185be61805b1e44a5c4000929e700228d426cc" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/66185be61805b1e44a5c4000929e700228d426cc", - "reference": "66185be61805b1e44a5c4000929e700228d426cc", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b", + "reference": "f7d160e46a6e0d3183e7a3846d4e3b4d04d5898b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "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": "<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|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "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": { "psr-4": { - "Symfony\\Component\\Inflector\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5331,26 +5701,18 @@ ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Converts words between their singular and plural forms (English only)", + "description": "Provides a structured process for converting a Request into a Response", "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": [ { @@ -5366,42 +5728,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/" ] @@ -5428,7 +5783,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", @@ -5439,7 +5794,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v4.4.44" + "source": "https://github.com/symfony/intl/tree/v6.3.12" }, "funding": [ { @@ -5455,44 +5810,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": { @@ -5520,7 +5874,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": [ { @@ -5536,35 +5890,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": { @@ -5596,7 +5958,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": [ { @@ -5612,43 +5974,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": { @@ -5676,7 +6036,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": [ { @@ -5692,34 +6052,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": { @@ -5757,7 +6117,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": [ { @@ -5773,25 +6133,25 @@ "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": "583f56160f716dd435f1cd721fd14b548f4bb510" + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/583f56160f716dd435f1cd721fd14b548f4bb510", - "reference": "583f56160f716dd435f1cd721fd14b548f4bb510", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -5824,7 +6184,79 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.44" + "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/password-hasher.git", + "reference": "513140986f5d6ca1b1ef86f47166a36654571bfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/513140986f5d6ca1b1ef86f47166a36654571bfe", + "reference": "513140986f5d6ca1b1ef86f47166a36654571bfe", + "shasum": "" + }, + "require": { + "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\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v6.3.12" }, "funding": [ { @@ -5840,20 +6272,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": { @@ -5864,9 +6296,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5905,7 +6334,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": [ { @@ -5921,20 +6350,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": { @@ -5945,9 +6374,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5992,7 +6418,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": [ { @@ -6008,20 +6434,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": { @@ -6034,9 +6460,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6079,7 +6502,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": [ { @@ -6095,20 +6518,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": { @@ -6119,9 +6542,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6163,7 +6583,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": [ { @@ -6179,20 +6599,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": { @@ -6206,9 +6626,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6246,7 +6663,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": [ { @@ -6262,20 +6679,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": { @@ -6283,9 +6700,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6322,86 +6736,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": [ { @@ -6417,20 +6752,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": { @@ -6438,9 +6773,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -6484,7 +6816,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": [ { @@ -6500,30 +6832,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" @@ -6534,7 +6864,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -6554,7 +6884,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", @@ -6563,7 +6893,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": [ { @@ -6579,25 +6909,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": { @@ -6625,7 +6954,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": [ { @@ -6641,32 +6970,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": { @@ -6701,11 +7027,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": [ { @@ -6721,44 +7047,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": { @@ -6794,7 +7114,74 @@ "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": [ + { + "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/proxy-manager-bridge", + "version": "v6.3.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "96a0f63d2934991f231bf3d389d5922786dc79ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/96a0f63d2934991f231bf3d389d5922786dc79ca", + "reference": "96a0f63d2934991f231bf3d389d5922786dc79ca", + "shasum": "" + }, + "require": { + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=8.1", + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/config": "^6.1" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "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 integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.3.12" }, "funding": [ { @@ -6810,46 +7197,40 @@ "type": "tidelift" } ], - "time": "2022-07-18T08:30:40+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": { @@ -6883,7 +7264,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v6.3.12" }, "funding": [ { @@ -6899,64 +7280,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" - }, - "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" + "symfony/dotenv": "<5.4" + }, + "require-dev": { + "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/" @@ -6968,18 +7329,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": [ { @@ -6995,55 +7359,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" + "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" }, - "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" - }, - "type": "library", + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Core\\": "" + "Symfony\\Bundle\\SecurityBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7063,10 +7451,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": [ { @@ -7082,40 +7470,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/" @@ -7135,10 +7537,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": [ { @@ -7154,34 +7556,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/" @@ -7201,10 +7605,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": [ { @@ -7220,42 +7624,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": { @@ -7283,7 +7696,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": [ { @@ -7299,57 +7712,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": { @@ -7377,7 +7790,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": [ { @@ -7393,37 +7857,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", @@ -7433,7 +7894,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7460,7 +7924,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": [ { @@ -7476,25 +7940,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": { @@ -7522,7 +7986,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": [ { @@ -7538,38 +8002,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": { @@ -7608,7 +8072,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.11" + "source": "https://github.com/symfony/string/tree/v6.3.12" }, "funding": [ { @@ -7624,55 +8088,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\\": "" }, @@ -7697,7 +8167,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": [ { @@ -7713,32 +8183,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", @@ -7748,7 +8215,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7775,7 +8245,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": [ { @@ -7791,81 +8261,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" - }, - "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", + "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": { + "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": { @@ -7892,7 +8353,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": [ { @@ -7908,51 +8369,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" + "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" - }, - "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" + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" + }, + "require-dev": { + "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": { @@ -7980,7 +8438,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": [ { @@ -7996,69 +8454,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" - }, - "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" + "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" }, - "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": "" + "require-dev": { + "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": { @@ -8086,7 +8534,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": [ { @@ -8102,42 +8550,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" @@ -8175,7 +8618,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": [ { @@ -8191,28 +8634,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": { @@ -8245,10 +8687,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": [ { @@ -8264,40 +8708,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": { @@ -8337,7 +8775,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": [ { @@ -8353,35 +8791,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": { @@ -8408,7 +8847,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": [ { @@ -8424,7 +8863,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "tetranz/select2entity-bundle", @@ -8485,27 +8924,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", @@ -8515,11 +8954,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\\": "" @@ -8548,7 +8982,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": [ { @@ -8560,40 +8994,34 @@ "type": "tidelift" } ], - "time": "2022-01-04T13:58:53+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { - "name": "twig/string-extra", - "version": "v3.4.0", + "name": "twig/intl-extra", + "version": "v3.8.0", "source": { "type": "git", - "url": "https://github.com/twigphp/string-extra.git", - "reference": "03608ae2e9c270a961e8cf1b75751e8635ad3e3c" + "url": "https://github.com/twigphp/intl-extra.git", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/03608ae2e9c270a961e8cf1b75751e8635ad3e3c", - "reference": "03608ae2e9c270a961e8cf1b75751e8635ad3e3c", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/7b3db67c700735f473a265a97e1adaeba3e6ca0c", + "reference": "7b3db67c700735f473a265a97e1adaeba3e6ca0c", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/string": "^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.7|^3.0" + "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\\String\\": "" + "Twig\\Extra\\Intl\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8611,16 +9039,14 @@ "role": "Lead Developer" } ], - "description": "A Twig extension for Symfony String", + "description": "A Twig extension for Intl", "homepage": "https://twig.symfony.com", "keywords": [ - "html", - "string", - "twig", - "unicode" + "intl", + "twig" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.4.0" + "source": "https://github.com/twigphp/intl-extra/tree/v3.8.0" }, "funding": [ { @@ -8632,45 +9058,43 @@ "type": "tidelift" } ], - "time": "2022-01-02T10:02:25+00:00" + "time": "2023-11-21T17:27:48+00:00" }, { - "name": "twig/twig", - "version": "v3.4.2", + "name": "twig/string-extra", + "version": "v3.8.0", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077" + "url": "https://github.com/twigphp/string-extra.git", + "reference": "b0c9037d96baff79abe368dc092a59b726517548" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077", - "reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/b0c9037d96baff79abe368dc092a59b726517548", + "reference": "b0c9037d96baff79abe368dc092a59b726517548", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^3.0" }, "require-dev": { - "psr/container": "^1.0", - "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.4-dev" - } - }, "autoload": { "psr-4": { - "Twig\\": "src/" - } - }, + "Twig\\Extra\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { @@ -8678,25 +9102,18 @@ "email": "fabien@symfony.com", "homepage": "http://fabien.potencier.org", "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", + "description": "A Twig extension for Symfony String", "homepage": "https://twig.symfony.com", "keywords": [ - "templating" + "html", + "string", + "twig", + "unicode" ], "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.2" + "source": "https://github.com/twigphp/string-extra/tree/v3.8.0" }, "funding": [ { @@ -8708,72 +9125,86 @@ "type": "tidelift" } ], - "time": "2022-08-12T06:47:24+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { - "name": "ubermichael/nines", - "version": "4.x-dev", + "name": "twig/twig", + "version": "v3.10.3", "source": { "type": "git", - "url": "https://github.com/ubermichael/nines-bundles.git", - "reference": "7afebb299aa03cb0ad4e2145bbe09a18fa08c3e8" + "url": "https://github.com/twigphp/Twig.git", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ubermichael/nines-bundles/zipball/7afebb299aa03cb0ad4e2145bbe09a18fa08c3e8", - "reference": "7afebb299aa03cb0ad4e2145bbe09a18fa08c3e8", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1", - "ext-json": "*", - "guzzlehttp/guzzle": "^6.5|^7.3", - "knplabs/knp-menu-bundle": "^2.0", - "knplabs/knp-paginator-bundle": "^5.0", - "minimalcode/search": "^1.0", - "nyholm/psr7": "^1.4", - "php": ">=7.2.0", - "sensio/framework-extra-bundle": "^5.1|^6.1", - "solarium/solarium": "^6.0", - "twig/string-extra": "^3.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "doctrine/doctrine-fixtures-bundle": "^3.3", - "liip/test-fixtures-bundle": "^1.0.0", - "symfony/browser-kit": "4.4.*", - "symfony/css-selector": "4.4.*", - "symfony/phpunit-bridge": "^5.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, - "default-branch": true, "type": "library", "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "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" + "Twig\\": "src/" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ - "gpl" + "BSD-3-Clause" ], "authors": [ { - "name": "Michael Joyce", - "email": "ubermichael@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" } ], - "description": "Some useful bundles.", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], "support": { - "source": "https://github.com/ubermichael/nines-bundles/tree/4.x", - "issues": "https://github.com/ubermichael/nines-bundles/issues" + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.10.3" }, - "time": "2022-02-17T22:01:17+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2024-05-16T10:04:27+00:00" }, { "name": "webmozart/assert", @@ -8836,41 +9267,31 @@ ], "packages-dev": [ { - "name": "deployer/deployer", - "version": "v6.9.0", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/deployphp/deployer.git", - "reference": "c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/deployphp/deployer/zipball/c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2", - "reference": "c4380effdc9f6d9c6ae549bb76f0a22bcb1d31d2", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "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" + "php": ">=5.3", + "react/stream": "^1.2" }, "require-dev": { - "phpunit/phpunit": "^8" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, - "bin": [ - "bin/dep" - ], "type": "library", "autoload": { - "files": [ - "src/Support/helpers.php", - "src/functions.php" - ], "psr-4": { - "Deployer\\": "src/" + "Clue\\React\\NDJson\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -8879,54 +9300,67 @@ ], "authors": [ { - "name": "Anton Medvedev", - "email": "anton@medv.io" + "name": "Christian Lück", + "email": "christian@clue.engineering" } ], - "description": "Deployment Tool", - "homepage": "https://deployer.org", + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", + "keywords": [ + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" + ], "support": { - "docs": "https://deployer.org/docs", - "issues": "https://github.com/deployphp/deployer/issues", - "source": "https://github.com/deployphp/deployer" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, "funding": [ { - "url": "https://github.com/antonmedv", + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", "type": "github" } ], - "time": "2022-08-03T18:09:01+00:00" + "time": "2022-12-23T10:58:28+00:00" }, { - "name": "deployer/phar-update", - "version": "v2.2.0", + "name": "composer/pcre", + "version": "3.1.4", "source": { "type": "git", - "url": "https://github.com/deployphp/phar-update.git", - "reference": "9ad07422f2cd43a1382ee8e134bdcd3a374848e3" + "url": "https://github.com/composer/pcre.git", + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/deployphp/phar-update/zipball/9ad07422f2cd43a1382ee8e134bdcd3a374848e3", - "reference": "9ad07422f2cd43a1382ee8e134bdcd3a374848e3", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/console": "~2.7|~3.0|~4.0|~5.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "mikey179/vfsstream": "1.1.0", - "phpunit/phpunit": "3.7.*", - "symfony/process": "~2.7|~3.0|~4.0|~5.0" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Deployer\\Component\\PharUpdate\\": "src/", - "Deployer\\Component\\PHPUnit\\": "src/PHPUnit/", - "Deployer\\Component\\Version\\": "src/Version/" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8935,75 +9369,68 @@ ], "authors": [ { - "name": "Kevin Herrera", - "email": "kevin@herrera.io", - "homepage": "http://kevin.herrera.io" - }, - { - "name": "Anton Medvedev", - "email": "anton@medv.io", - "homepage": "https://medv.io" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Integrates Phar Update to Symfony Console.", - "homepage": "https://github.com/deployphp/phar-update", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "console", - "phar", - "update" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "issues": "https://github.com/deployphp/phar-update/issues", - "source": "https://github.com/deployphp/phar-update/tree/v2.2.0" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.4" }, - "abandoned": true, - "time": "2019-12-12T13:45:57+00:00" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-27T13:40:54+00:00" }, { - "name": "doctrine/data-fixtures", - "version": "1.5.3", + "name": "composer/semver", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42" + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ba37bfb776de763c5bf04a36d074cd5f5a083c42", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { - "doctrine/common": "^2.13|^3.0", - "doctrine/persistence": "^1.3.3|^2.0|^3.0", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "doctrine/dbal": "<2.13", - "doctrine/phpcr-odm": "<1.3.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/dbal": "^2.13 || ^3.0", - "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.7.0", - "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" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", - "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", - "doctrine/orm": "For loading ORM fixtures", - "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -9012,72 +9439,77 @@ ], "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Data Fixtures for all Doctrine Object Managers", - "homepage": "https://www.doctrine-project.org", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "database" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.3" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-04-19T10:01:44+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { - "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.2", + "name": "composer/xdebug-handler", + "version": "3.0.5", "source": { "type": "git", - "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/601988c5b46dbd20a0f886f967210aba378a6fd5", - "reference": "601988c5b46dbd20a0f886f967210aba378a6fd5", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "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" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^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" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, - "type": "symfony-bundle", + "type": "library", "autoload": { "psr-4": { - "Doctrine\\Bundle\\FixturesBundle\\": "" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -9086,95 +9518,77 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Doctrine Project", - "homepage": "https://www.doctrine-project.org" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Symfony DoctrineFixturesBundle", - "homepage": "https://www.doctrine-project.org", + "description": "Restarts a process without Xdebug.", "keywords": [ - "Fixture", - "persistence" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.2" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2022-04-28T17:58:29+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { - "name": "liip/test-fixtures-bundle", - "version": "1.12.0", + "name": "dama/doctrine-test-bundle", + "version": "v7.3.0", "source": { "type": "git", - "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "252ab82556e2468780255b5c1893d8c9401624ea" + "url": "https://github.com/dmaicher/doctrine-test-bundle.git", + "reference": "688eea6529ea894b83deada10c83662d7804f34b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/252ab82556e2468780255b5c1893d8c9401624ea", - "reference": "252ab82556e2468780255b5c1893d8c9401624ea", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/688eea6529ea894b83deada10c83662d7804f34b", + "reference": "688eea6529ea894b83deada10c83662d7804f34b", "shasum": "" }, "require": { - "doctrine/common": "^2.13 || ^3.0", - "php": "^7.2 || ^8.0", - "symfony/framework-bundle": "^3.4 || ^4.4 || ^5.0", - "symfony/yaml": "^3.4 || ^4.4 || ^5.0" + "doctrine/dbal": "^3.3", + "doctrine/doctrine-bundle": "^2.2.2", + "ext-json": "*", + "php": "^7.3 || ^8.0", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^5.4 || ^6.0", + "symfony/framework-bundle": "^5.4 || ^6.0" }, "require-dev": { - "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.8 || ^2.0", - "doctrine/doctrine-fixtures-bundle": "^3.0.2", - "doctrine/orm": "^2.6", - "doctrine/phpcr-bundle": "^2.0", - "doctrine/phpcr-odm": "^1.3", - "jackalope/jackalope-doctrine-dbal": "^1.5", - "monolog/monolog": "^1.11 || ^2.0", - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/monolog-bridge": ">=3", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^3.4 || ^4.4 || ^5.0", - "theofidry/alice-data-fixtures": "^1.0.1" - }, - "suggest": { - "doctrine/dbal": "Required when using the fixture loading functionality with an ORM and SQLite", - "doctrine/doctrine-fixtures-bundle": "Required when using the fixture loading functionality", - "doctrine/orm": "Required when using the fixture loading functionality with an ORM and SQLite", - "hautelook/alice-bundle": "Required when using loadFixtureFiles functionality with custom providers", - "theofidry/alice-data-fixtures": "Required when using loadFixtureFiles functionality" + "behat/behat": "^3.0", + "doctrine/cache": "^1.12", + "phpstan/phpstan": "^1.2", + "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": "1.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { "psr-4": { - "Liip\\TestFixturesBundle\\": "src/" + "DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle" } }, "notification-url": "https://packagist.org/downloads/", @@ -9183,120 +9597,941 @@ ], "authors": [ { - "name": "Liip AG", - "homepage": "http://www.liip.ch/" - }, - { - "name": "Community contributions", - "homepage": "https://github.com/liip/LiipTestFixturesBundle/contributors" + "name": "David Maicher", + "email": "mail@dmaicher.de" } ], - "description": "This bundles enables efficient loading of Doctrine fixtures in functional test-cases for Symfony applications", + "description": "Symfony bundle to isolate doctrine database tests and improve test performance", "keywords": [ - "fixtures", + "doctrine", + "isolation", + "performance", "symfony", - "testing" + "tests" ], "support": { - "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/1.12.0" + "issues": "https://github.com/dmaicher/doctrine-test-bundle/issues", + "source": "https://github.com/dmaicher/doctrine-test-bundle/tree/v7.3.0" }, - "time": "2021-07-17T16:52:27+00:00" + "time": "2023-11-27T21:29:42+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.11.0", + "name": "doctrine/data-fixtures", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + "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.14 || ^3", + "ext-sqlite3": "*", + "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)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" }, "type": "library", "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "database" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2022-03-03T13:19:32+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.14.0", - "source": { - "type": "git", + "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%2Fdata-fixtures", + "type": "tidelift" + } + ], + "time": "2023-11-24T11:18:31+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "3.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/d13a08ebf244f74c8adb8ff15aa55d01c404e534", + "reference": "d13a08ebf244f74c8adb8ff15aa55d01c404e534", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "^1.3", + "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": "^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\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.6.1" + }, + "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%2Fdoctrine-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2024-05-07T07:16:35+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.58.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/04e9424025677a86914b9a4944dbbf4060bb0aff", + "reference": "04e9424025677a86914b9a4944dbbf4060bb0aff", + "shasum": "" + }, + "require": { + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "fidry/cpu-core-counter": "^1.0", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^3.0", + "react/socket": "^1.0", + "react/stream": "^1.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": "^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.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", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.58.1" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-05-29T16:39:07+00:00" + }, + { + "name": "friendsoftwig/twigcs", + "version": "6.4.0", + "source": { + "type": "git", + "url": "https://github.com/friendsoftwig/twigcs.git", + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/954e1af488d649cf329f35deaedf2b8fe2cf4b56", + "reference": "954e1af488d649cf329f35deaedf2b8fe2cf4b56", + "shasum": "" + }, + "require": { + "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": "^9.6.15", + "symfony/phpunit-bridge": "^7.0.1" + }, + "bin": [ + "bin/twigcs" + ], + "type": "library", + "autoload": { + "psr-4": { + "FriendsOfTwig\\Twigcs\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tristan Maindron", + "email": "tmaindron@gmail.com" + } + ], + "description": "Checkstyle automation for Twig", + "support": { + "issues": "https://github.com/friendsoftwig/twigcs/issues", + "source": "https://github.com/friendsoftwig/twigcs/tree/6.4.0" + }, + "time": "2023-12-05T07:36:35+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nikic/php-parser", + "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/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + }, + "time": "2024-03-05T20:51:40+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "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", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "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": "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.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+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", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.11.4", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9100a76ce8015b9aa7125b9171ae3a76887b6c82", + "reference": "9100a76ce8015b9aa7125b9171ae3a76887b6c82", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "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", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2024-06-06T12:19:22+00:00" + }, + { + "name": "phpstan/phpstan-doctrine", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-doctrine.git", + "reference": "a223e357c5f153b446b8a5da57dbc1132eb7a88d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/a223e357c5f153b446b8a5da57dbc1132eb7a88d", + "reference": "a223e357c5f153b446b8a5da57dbc1132eb7a88d", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.11" + }, + "conflict": { + "doctrine/collections": "<1.0", + "doctrine/common": "<2.7", + "doctrine/mongodb-odm": "<1.2", + "doctrine/orm": "<2.5", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "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": "^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.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": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Doctrine extensions for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-doctrine/issues", + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.4.1" + }, + "time": "2024-05-28T15:37:29+00:00" + }, + { + "name": "phpstan/phpstan-symfony", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-symfony.git", + "reference": "af6ae0f4b91bc080265e80776af26da3e5befb28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/af6ae0f4b91bc080265e80776af26da3e5befb28", + "reference": "af6ae0f4b91bc080265e80776af26da3e5befb28", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "ext-simplexml": "*", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.11" + }, + "conflict": { + "symfony/framework-bundle": "<3.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "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": "^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": "^5.4", + "symfony/service-contracts": "^2.2.0" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } }, - "bin": [ - "bin/php-parse" + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lukáš Unger", + "email": "looky.msc@gmail.com", + "homepage": "https://lookyman.net" + } ], + "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.4.3" + }, + "time": "2024-05-30T15:01:27+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.31", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + }, + "dist": { + "type": "zip", + "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.18 || ^5.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "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": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "9.2-dev" } }, "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9304,45 +10539,55 @@ ], "authors": [ { - "name": "Nikita Popov" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A PHP parser written in PHP", + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "parser", - "php" + "coverage", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, - "time": "2022-05-31T20:59:12+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:37:42+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "phpunit/php-file-iterator", + "version": "3.0.6", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -9355,47 +10600,60 @@ "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" + "role": "lead" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -9407,138 +10665,206 @@ ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", - "role": "Developer" + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "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" + "php": ">=7.3" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "timer" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "time": "2021-12-08T12:19:24+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "name": "phpunit/phpunit", + "version": "9.6.19", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", + "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", + "ext-json": "*", "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "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.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.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.2", + "sebastian/version": "^3.0.2" }, "suggest": { - "ext-pcov": "*", - "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" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-master": "9.6-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -9554,398 +10880,513 @@ "role": "lead" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "coverage", + "phpunit", "testing", "xunit" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" }, "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2024-04-05T04:35:58+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Cache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ - "filesystem", - "iterator" + "cache", + "caching", + "promise", + "reactphp" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2022-11-30T15:59:55+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "react/child-process", + "version": "v0.6.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", "shasum": "" }, "require": { - "php": ">=7.3" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\ChildProcess\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "Event-driven library for executing child processes with ReactPHP.", "keywords": [ - "process" + "event-driven", + "process", + "reactphp" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2022-09-16T13:41:56+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "react/dns", + "version": "v1.12.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/reactphp/dns.git", + "reference": "c134600642fa615b46b41237ef243daa65bb64ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/reactphp/dns/zipball/c134600642fa615b46b41237ef243daa65bb64ec", + "reference": "c134600642fa615b46b41237ef243daa65bb64ec", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7 || ^1.2.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-timer": "^1.9" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.12.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } + ], + "time": "2023-11-29T12:41:06+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "React\\EventLoop\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", "keywords": [ - "template" + "asynchronous", + "event-loop" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-11-13T13:48:05+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "react/promise", + "version": "v3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "timer" + "promise", + "promises" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2024-05-24T10:39:05+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.21", + "name": "react/socket", + "version": "v1.15.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "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-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/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" }, "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" }, - "bin": [ - "phpunit" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] + "psr-4": { + "React\\Socket\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", "keywords": [ - "phpunit", - "testing", - "xunit" + "Connection", + "Socket", + "async", + "reactphp", + "stream" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" }, "funding": [ { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2023-12-15T11:02:10+00:00" }, { - "name": "pimple/pimple", - "version": "v3.5.0", + "name": "react/stream", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + "url": "https://github.com/reactphp/stream.git", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Pimple": "src/" + "psr-4": { + "React\\Stream\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -9954,33 +11395,61 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", "keywords": [ - "container", - "dependency injection" + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" ], "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.3.0" }, - "time": "2021-10-28T11:13:42+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-16T10:52:11+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": { @@ -10015,7 +11484,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": [ { @@ -10023,7 +11492,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -10138,16 +11607,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": { @@ -10200,7 +11669,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": [ { @@ -10208,24 +11677,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": { @@ -10257,7 +11726,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": [ { @@ -10265,20 +11734,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": { @@ -10323,7 +11792,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": [ { @@ -10331,20 +11800,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": { @@ -10386,7 +11855,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": [ { @@ -10394,20 +11863,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": { @@ -10463,7 +11932,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": [ { @@ -10471,20 +11940,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": { @@ -10527,7 +11996,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": [ { @@ -10535,24 +12004,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": { @@ -10584,7 +12053,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": [ { @@ -10592,7 +12061,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -10708,16 +12177,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": { @@ -10756,10 +12225,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": [ { @@ -10767,20 +12236,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": { @@ -10792,7 +12261,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -10813,8 +12282,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": [ { @@ -10822,20 +12290,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": { @@ -10847,7 +12315,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -10870,7 +12338,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": [ { @@ -10878,7 +12346,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -10935,31 +12403,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": { @@ -10987,7 +12451,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": [ { @@ -11003,25 +12467,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": { @@ -11053,7 +12516,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": [ { @@ -11069,42 +12532,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": { @@ -11132,7 +12590,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": [ { @@ -11148,37 +12606,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": { @@ -11206,7 +12657,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": [ { @@ -11222,51 +12673,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": { @@ -11288,13 +12742,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": [ { @@ -11310,34 +12765,32 @@ "type": "tidelift" } ], - "time": "2022-04-21T18:16:11+00:00" + "time": "2024-02-01T10:05:38+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.11", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "31b1549f54b1a1890e725a0c1c8c2de6ef2205b3" + "reference": "937f47cc64922f283bb0c474f33415bba0a9fc0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/31b1549f54b1a1890e725a0c1c8c2de6ef2205b3", - "reference": "31b1549f54b1a1890e725a0c1c8c2de6ef2205b3", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/937f47cc64922f283bb0c474f33415bba0a9fc0d", + "reference": "937f47cc64922f283bb0c474f33415bba0a9fc0d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=7.1.3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^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" @@ -11357,7 +12810,8 @@ "Symfony\\Bridge\\PhpUnit\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -11377,7 +12831,83 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.11" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.8" + }, + "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-06-02T15:48:50+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": [ { @@ -11393,42 +12923,41 @@ "type": "tidelift" } ], - "time": "2022-07-28T13:33:28+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": { @@ -11455,8 +12984,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": [ { @@ -11472,20 +13004,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": { @@ -11514,7 +13046,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": [ { @@ -11522,22 +13054,22 @@ "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-imagick": "*", + "ext-json": "*", + "ext-mbstring": "*" }, "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 3164fd1..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'])) { - foreach ($env as $k => $v) { - $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && 0 !== strpos($k, 'HTTP_') ? $_SERVER[$k] : $v); - } -} elseif (!class_exists(Dotenv::class)) { - throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); -} 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 a4c1a51..daa4c59 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -11,16 +11,15 @@ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true], - Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Tetranz\Select2EntityBundle\TetranzSelect2EntityBundle::class => ['all' => true], Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], - Liip\TestFixturesBundle\LiipTestFixturesBundle::class => ['dev' => true, 'test' => true], + DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true], Nines\BlogBundle\NinesBlogBundle::class => ['all' => true], Nines\DublinCoreBundle\NinesDublinCoreBundle::class => ['all' => true], Nines\EditorBundle\NinesEditorBundle::class => ['all' => true], - Nines\FeedbackBundle\NinesFeedbackBundle::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 2d4c030..0000000 --- a/config/deploy.yaml.dist +++ /dev/null @@ -1,25 +0,0 @@ - -10.0.0.10: - stage: staging - 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: btd - repository: ~ - branch: main - shared_dirs: - - var/logs - - var/sessions - - var/cache - writable_dirs: - - var/logs - - var/sessions - - var/cache - composer_options: 'install --no-progress --optimize-autoloader --no-interaction' - site_path: /btd - context: system_u:object_r:httpd_sys_rw_content_t:s0 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/easy_log_handler.yaml b/config/packages/dev/easy_log_handler.yaml deleted file mode 100644 index 27bfc60..0000000 --- a/config/packages/dev/easy_log_handler.yaml +++ /dev/null @@ -1,16 +0,0 @@ -services: - EasyCorp\EasyLog\EasyLogHandler: - public: false - arguments: ['%kernel.logs_dir%/%kernel.environment%.log'] - -#// FIXME: How to add this configuration automatically without messing up with the monolog configuration? -#monolog: -# handlers: -# buffered: -# type: buffer -# handler: easylog -# channels: ['!event'] -# level: debug -# easylog: -# type: service -# id: EasyCorp\EasyLog\EasyLogHandler 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 82f27ba..d13b097 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -6,10 +6,6 @@ doctrine: default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci - - # IMPORTANT: You MUST configure your server version, - # either here or in the DATABASE_URL env var (see .env file) - #server_version: '5.7' orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware @@ -17,10 +13,36 @@ doctrine: mappings: App: is_bundle: false - type: annotation + type: attribute dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App - dql: - string_functions: - match: Nines\UtilBundle\Extensions\Doctrine\MySQL\MatchAgainst + +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 2bd977a..67ce50f 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -19,3 +19,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 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_blog.yaml b/config/packages/nines_blog.yaml index 12452cc..3954701 100644 --- a/config/packages/nines_blog.yaml +++ b/config/packages/nines_blog.yaml @@ -1,4 +1,6 @@ -parameters: - nines_blog.excerpt_length: 100 - nines_blog.homepage_posts: 3 - nines_blog.menu_posts: 5 +nines_blog: + excerpt_length: 100 + homepage_posts: 3 + menu_posts: 5 + default_status: draft + default_category: post diff --git a/config/packages/nines_feedback.yaml b/config/packages/nines_feedback.yaml deleted file mode 100644 index 98af1b7..0000000 --- a/config/packages/nines_feedback.yaml +++ /dev/null @@ -1,12 +0,0 @@ -nines_feedback: - default_status: submitted - public_status: published - subject: New feedback received - sender: noreply@example.com - recipients: - - user@example.com - - another@example.com - routing: - nines_blog: - class: Nines\BlogBundle\Entity\Page - route: nines_blog_page_show diff --git a/config/packages/nines_user.yaml b/config/packages/nines_user.yaml index 021cdd1..6c0a21f 100644 --- a/config/packages/nines_user.yaml +++ b/config/packages/nines_user.yaml @@ -4,7 +4,6 @@ nines_user: - 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/nines_util.yaml b/config/packages/nines_util.yaml index 2bf0f76..fa8cefe 100644 --- a/config/packages/nines_util.yaml +++ b/config/packages/nines_util.yaml @@ -1,2 +1,4 @@ nines_util: trim_length: 50 + sender: 'donotreply@%router.request_context.host%' + routing: ~ 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 51050b0..5787d3a 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 @@ -38,7 +39,6 @@ security: - ROLE_BLOG_ADMIN - ROLE_CONTENT_ADMIN - ROLE_DC_ADMIN - - ROLE_FEEDBACK_ADMIN - ROLE_MEDIA_ADMIN - ROLE_USER_ADMIN - ROLE_USER @@ -47,15 +47,13 @@ security: # 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 } + - { 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 } # 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%/dublin_core/element, roles: ROLE_USER } diff --git a/config/packages/test/doctrine.yaml b/config/packages/test/doctrine.yaml deleted file mode 100644 index a8ce267..0000000 --- a/config/packages/test/doctrine.yaml +++ /dev/null @@ -1,5 +0,0 @@ -doctrine: - dbal: - driver: pdo_sqlite - path: "%kernel.cache_dir%/test.db" - url: null diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml deleted file mode 100644 index 9834e77..0000000 --- a/config/packages/test/framework.yaml +++ /dev/null @@ -1,8 +0,0 @@ -framework: - test: true - session: - storage_id: session.storage.mock_file - -liip_test_fixtures: - cache_db: - sqlite: liip_test_fixtures.services_database_backup.sqlite 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 46fc4a4..de1dba1 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -7,15 +7,19 @@ 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_layout.html.twig' + # - "@NinesUtil/form/fields.html.twig" - '@TetranzSelect2Entity/Form/fields.html.twig' - 'jquery.collection.html.twig' globals: + asset_prefix: '%env(default::string:ROUTE_BASE)%' text_service: '@Nines\UtilBundle\Services\Text' - comment_service: '@Nines\FeedbackBundle\Services\CommentService' nines_editor_config: js/editor-config.js matomo_enabled: '%dhil.matomo_enabled%' matomo_url: '%dhil.matomo_url%' matomo_siteid: '%dhil.matomo_siteid%' matomo_domain: '%dhil.matomo_domain%' + +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..73e96b2 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 \ No newline at end of file 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 new file mode 100644 index 0000000..5ebcdb2 --- /dev/null +++ b/config/preload.php @@ -0,0 +1,5 @@ + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 0000000..1341cdc --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,2 @@ +Sphinx==7.1.2 +sphinx-autobuild==2021.3.14 \ No newline at end of file diff --git a/docs/source/category-fields.rst b/docs/source/category-fields.rst new file mode 100644 index 0000000..f387b3f --- /dev/null +++ b/docs/source/category-fields.rst @@ -0,0 +1,25 @@ +.. _category-field: + +Category Fields +--------------- + +Each of the categories has fields for name, label, and +description. + +name + The name field used internally to identify and group the elements in + a category. It should be lowercase with no spaces. You can use + dashes, periods, or underscores to replace the spaces if you need + to. + +label + Labels are human readable. They are free text, although you should + try to keep them very short but descriptive. They should probably be + capitalised following the :ref:`styleguide`. + +description + Provide a description of the category element, so that other people + will be able to choose correctly when entering data based on your + categories. + + diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..37c65a3 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,340 @@ +# -*- coding: utf-8 -*- +# +# Between the Digital documentation build configuration file, created by +# sphinx-quickstart on Sun Apr 2 11:51:13 2017. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.todo', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The encoding of source files. +# +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Between the Digital' +copyright = u'2017, Michael Joyce' +author = u'Michael Joyce' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = u'0.9' +# The full version, including alpha/beta/rc tags. +release = u'0.9' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# +# today = '' +# +# Else, today_fmt is used as the format for a strftime call. +# +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True + + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'pyramid' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. +# " v documentation" by default. +# +# html_title = u'Between the Digital v0.9' + +# A shorter title for the navigation bar. Default is the same as html_title. +# +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# +# html_logo = None + +# The name of an image file (relative to this directory) to use as a favicon of +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['.static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# +# html_extra_path = [] + +# If not None, a 'Last updated on:' timestamp is inserted at every page +# bottom, using the given strftime format. +# The empty string is equivalent to '%b %d, %Y'. +# +# html_last_updated_fmt = None + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# +# html_additional_pages = {} + +# If false, no module index is generated. +# +# html_domain_indices = True + +# If false, no index is generated. +# +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Language to be used for generating the HTML full-text search index. +# Sphinx supports the following languages: +# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' +# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' +# +# html_search_language = 'en' + +# A dictionary with options for the search language support, empty by default. +# 'ja' uses this config value. +# 'zh' user can custom change `jieba` dictionary path. +# +# html_search_options = {'type': 'default'} + +# The name of a javascript file (relative to the configuration directory) that +# implements a search results scorer. If empty, the default will be used. +# +# html_search_scorer = 'scorer.js' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'BetweentheDigitaldoc' + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'BetweentheDigital.tex', u'Between the Digital Documentation', + u'Michael Joyce', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# +# latex_use_parts = False + +# If true, show page references after internal links. +# +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# +# latex_appendices = [] + +# It false, will not define \strong, \code, itleref, \crossref ... but only +# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added +# packages. +# +# latex_keep_old_macro_names = True + +# If false, no module index is generated. +# +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'betweenthedigital', u'Between the Digital Documentation', + [author], 1) +] + +# If true, show URL addresses after external links. +# +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'BetweentheDigital', u'Between the Digital Documentation', + author, 'BetweentheDigital', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +# +# texinfo_appendices = [] + +# If false, no module index is generated. +# +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# +# texinfo_no_detailmenu = False diff --git a/docs/source/config.rst b/docs/source/config.rst new file mode 100644 index 0000000..59ef40a --- /dev/null +++ b/docs/source/config.rst @@ -0,0 +1,50 @@ +.. _config: + +Configuration +============= + +Most of the application is configured with the symfony parameters.yml +file in app/config/parameters.yml. + +.. code-block:: yaml + + parameters: + # database configuration + database_host: 127.0.0.1 + database_port: null + database_name: btd + database_user: btd + database_password: abc123 + + # mailer configuration + mailer_transport: smtp + mailer_host: 127.0.0.1 + mailer_user: null + mailer_password: null + + # A secret key that's used to generate certain security-related tokens + secret: d2d31e391ebe8e7f307f64f1348d2c84b030cc66 + + # Router and cookie information + router.request_context.scheme: http + router.request_context.host: example.com + router.request_context.base_url: /path/to/application + + # words in a generated excerpt + nines_blog.excerpt_length: 50 + + # number of posts to show on the home page + nines_blog.homepage_posts: 3 + + # number of posts to show in the drop down menu. + nines_blog.menu_posts: 5 + + # path to store the upload files. + btd.media_upload_path: '%kernel.root_dir%/data/uploads' + + # size of the generated thumbnails. + btd.media_thumbnail_size: 256 + +.. todo:: + + Does the btd.media_thumbnail_size parameter actually get used anywhere? diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..e89e9f3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,55 @@ +.. _home: + +Welcome to Between the Digital's documentation! +=============================================== + +Between the Physical and the Virtual: Anthropology, Art, and Emergent +Digital Hybrid Spaces + +Kate Hennessy, School of Interactive Arts and Technology + +This project is grounded in the ongoing work of the `Ethnographic +Terminalia Collective`_, which since 2009 has staged annual exhibitions +in major North American cities that explore the intersections of art +and anthropology. It will develop an open access web-based archive of +the ETC exhibitions and pedagogical tool for teaching about +anthropology and art. + +User Manual +----------- + +.. toctree:: + :maxdepth: 1 + + location + venue + venue-category + project + +Administrator Manual +-------------------- + +.. toctree:: + :maxdepth: 1 + + styleguide + category-fields + metadata + workflow + users + roles + +Developer Manual +---------------- + +.. toctree:: + :maxdepth: 1 + + requirements + install + update + config + todo + +.. _Ethnographic Terminalia Collective: + http://ethnographicterminalia.org/ diff --git a/docs/source/install.rst b/docs/source/install.rst new file mode 100644 index 0000000..931e816 --- /dev/null +++ b/docs/source/install.rst @@ -0,0 +1,130 @@ +.. _install: + +Installation +============ + +.. note:: + + BTD doesn't use labeled or numbered releases. The code in the + master branch of the repository should be runnable. + +Make sure the requirements are satisfied. + +The BTD application is based on Symfony 3.2. Installation follows the normal +process for installing a Symfony application. + +1. Get the code from GitHub. + +.. code-block:: bash + + git clone https://github.com/sfu-dhil/btd.git + +2. Get the submodules from Git. There is quite a bit of reusable code in the + application, and it's organized with git submodules. + +.. code-block:: bash + + git submodule init + git submodule update --recursive --remote + +3. Create a database and database user. + +.. code-block:: sql + + create database btd; + grant all on btd.* to btd@localhost; + set password for btd@localhost = password('hotpockets'); + +4. `Install composer`_ if it isn't already installed somewhere. + +5. Install the composer dependencies. Composer will ask for some + configuration variables during installation. + +.. code-block:: bash + + composer install --no-dev -o + +Sometimes composer runs out of memory. If that happens, try this alternate. + +.. code-block:: bash + + php -d memory_limit=-1 `which composer` install --no-dev -o + +6. Update file permissions. The user running the web server must be + able to write to `var/cache/*` and `var/logs/*` and + `var/sessions/*`. The symfony docs provide `recommended commands`_ + depending on your OS. + +7. Load the schema into the database. This is done with the + symfony console. + +.. code-block:: bash + + ./bin/console doctrine:schema:update --force + +8. Create an application user with full admin privileges. This is also done + with the symfony console. + +.. code-block:: bash + + ./bin/console fos:user:create admin@example.com + ./bin/console fos:user:promote admin@example.com ROLE_ADMIN + +9. Install bower, npm, and nodejs if you haven't already. Then use bower to + download and install the javascript and css dependencies. + +.. code-block:: bash + + bower install + +10. Download and install CkEditor. It is a nice GUI editor for web content. It + isn't redistributable itself, so must be downloaded separately. + +.. code-block:: bash + + ./bin/console ckeditor:install + ./bin/console assets:install web --symlink + +11. Configure the web server. The application's `web/` directory must + be accessible to the world. Symfony provides `example + configurations`_ for most server setups. + +12. The documentation module should be built seperately. You need the Sphinx + to be already installed. Check the `DHIL Documentation Guide`_ for more + information. + +Navigate to the 'btd/docs' directory in the command line and type: + +.. code-block:: bash + + make html + +13. Start the web server you are using. A quick way to run the application is + by using the built-in php server. + +.. note:: I've you've configured Apache to run the site, this step isn't + necessary. Visit http://localhost/path/to/app_dev.php. + +.. code-block:: bash + + php bin/console server:start + +Go to the localhost:8000 in your browser. + +At this point, the web interface should be up and running, and you should be +able to login by following the Login link in the top right menu bar. + +That should be it. + +At this point, the web interface should be up and running, and you should +be able to login by following the Login link in the top right menu bar. + +That should be it. + +.. _`Install composer`: https://getcomposer.org/download/ + +.. _`recommended commands`: + http://symfony.com/doc/current/setup/file_permissions.html + +.. _`example configurations`: + http://symfony.com/doc/current/setup/web_server_configuration.html diff --git a/docs/source/location.rst b/docs/source/location.rst new file mode 100644 index 0000000..2f27da9 --- /dev/null +++ b/docs/source/location.rst @@ -0,0 +1,12 @@ +.. _location: + +Location +======== + +A location is a geographic place, usually a city. They are organized +by region (typically a state) and by country. A :ref:`venue` is +associated with a location. When viewing a location entry, a list of +venues associated with the location is also displayed. + +The list of locations is accessible via the Browse menu in the top +menu bar. diff --git a/docs/source/metadata.rst b/docs/source/metadata.rst new file mode 100644 index 0000000..2fabf93 --- /dev/null +++ b/docs/source/metadata.rst @@ -0,0 +1,294 @@ +.. _metadata: + +Metadata for Media Files +======================== + + Metadata is structured information that describes, explains, + locates, or otherwise makes it easier to retrieve, use, or manage an + information resource. Source: NISO (2004) Understanding + Metadata. Bethesda, NISO Press. + +Metadata is used to describe text, images, video, sound, movement, +objects, or events. It can be used to describe a physical object, a +digital creation, or a digital photograph of a physical object. This +application used a simple standard published by the Dublin Core +Metadata Initiative. It structures the metadata into 15 elements, each +of which describes a different aspect of a resource. + +None of the metadata elements are required, and they can all be +repeated if needed. + +Most of the text below has been copied from the `Dublin Core Usage +Guide`_. In the text that follows, "resource" means any describable +object, which in the application is a media file. + +Title +----- + +The name given to the resource. Typically, a Title will be a name by +which the resource is formally known. If in doubt about what +constitutes the title, repeat the Title element and include the +variants in second and subsequent Title iterations. + +Creator +------- + +An entity primarily responsible for making the content of the +resource. Examples of a Creator include a person, an organization, or +a service. Typically the name of the Creator should be used to +indicate the entity. + +Creators should be listed separately, preferably in the same order +that they appear in the publication. Personal names should be listed +surname or family name first, followed by forename or given name. When +in doubt, give the name as it appears, and do not invert. + +In the case of organizations where there is clearly a hierarchy +present, list the parts of the hierarchy from largest to smallest, +separated by full stops and a space. If it is not clear whether there +is a hierarchy present, or unclear which is the larger or smaller +portion of the body, give the name as it appears in the item. + +If the Creator and Publisher are the same, do not repeat the name in +the Publisher area. If the nature of the responsibility is ambiguous, +the recommended practice is to use Publisher for organizations, and +Creator for individuals. In cases of lesser or ambiguous +responsibility, other than creation, use Contributor. + +Subject +------- + +The topic of the content of the resource. Typically, a Subject will be +expressed as keywords or key phrases or classification codes that +describe the topic of the resource. Recommended best practice is to +select a value from a controlled vocabulary or formal classification +scheme. + +Select subject keywords from the Title or Description information, or +from within a text resource. If the subject of the item is a person or +an organization, use the same form of the name as you would if the +person or organization were a Creator or Contributor. + +In general, choose the most significant and unique words for keywords, +avoiding those too general to describe a particular item. Subject +might include classification data if it is available (for example, +Library of Congress Classification Numbers or Dewey Decimal numbers) +or controlled vocabularies (such as Medical Subject Headings or Art +and Architecture Thesaurus descriptors) as well as keywords. + +When including terms from multiple vocabularies, use separate element +iterations. If multiple vocabulary terms or keywords are used, either +separate terms with semi-colons or use separate iterations of the +Subject element. + +Description +----------- + +An account of the content of the resource. Description may include but +is not limited to: an abstract, table of contents, reference to a +graphical representation of content or a free-text account of the +content. + +Since the Description field is a potentially rich source of indexable +terms, care should be taken to provide this element when +possible. Best practice recommendation for this element is to use full +sentences, as description is often used to present information to +users to assist in their selection of appropriate resources from a set +of search results. + +Descriptive information can be copied or automatically extracted from +the item if there is no abstract or other structured description +available. Although the source of the description may be a web page or +other structured text with presentation tags, it is generally not good +practice to include HTML or other structural tags within the +Description element. Applications vary considerably in their ability +to interpret such tags, and their inclusion may negatively affect the +interoperability of the metadata. + +Publisher +--------- + +The entity responsible for making the resource available. Examples of +a Publisher include a person, an organization, or a service. +Typically, the name of a Publisher should be used to indicate the +entity. + +The intent of specifying this field is to identify the entity that +provides access to the resource. If the Creator and Publisher are the +same, do not repeat the name in the Publisher area. If the nature of +the responsibility is ambiguous, the recommended practice is to use +Publisher for organizations, and Creator for individuals. In cases of +ambiguous responsibility, use Contributor. + +.. note:: + + In this application, Between the Digital is publishing the media + files and should probably be included as a publisher. There may be + more than one publisher, especially if the media file has been + published elsewhere. + +Contributor +----------- + +An entity responsible for making contributions to the content of the +resource. Examples of a Contributor include a person, an organization +or a service. Typically, the name of a Contributor should be used to +indicate the entity. + +The same general guidelines for using names of persons or +organizations as Creators apply here. Contributor is the most general +of the elements used for "agents" responsible for the resource, so +should be used when primary responsibility is unknown or irrelevant. + +.. note:: + + Anyone listed as a creator should not also be listed as a + contributor. + +Date +---- + +A date associated with an event in the life cycle of the +resource. Typically, Date will be associated with the creation or +availability of the resource. Recommended best practice for encoding +the date value is to use the YYYY-MM-DD format. + +.. note:: + + The date or date range that media file was created (not uploaded to + the website) is a good starting point. If the file was + significantly altered at a later date, that date should also be + included. + +If the full date is unknown, month and year (YYYY-MM) or just year +(YYYY) may be used. + +Type +---- + +The nature or genre of the content of the resource. Type includes +terms describing general categories, functions, genres, or aggregation +levels for content. Recommended best practice is to select a value +from a the list below. + +* Text +* Image +* Sound +* Video +* Catalogue + +.. note:: + + This field doesn't describe the format of a digital image, only + that the item *is* a digital image. + +.. note:: + + If you are describing a catalog of a an exhibition which contains + images and descriptions of the works, you might want to include + both Text and Image types. + +If the resource is composed of multiple mixed types then multiple or +repeated Type elements should be used to describe the main components. + +Format +------ + +The physical or digital manifestation of the resource. Typically, +Format may include the media-type or dimensions of the +resource. Examples of dimensions include size and duration. Format may +be used to determine the software, hardware or other equipment needed +to display or operate the resource. + +In addition to the specific physical or electronic media format, +information concerning the size of a resource may be included in the +content of the Format element if available. In resource discovery +size, extent or medium of the resource might be used as a criterion to +select resources of interest, since a user may need to evaluate +whether they can make use of the resource within the infrastructure +available to them. + +When more than one category of format information is included in a +single record, they should go in separate iterations of the element. + +.. note:: + + The application will attempt to create Format entries when a media + file is uploaded. You can add additional entries if needed. + +Identifier +---------- + +An unambiguous reference to the resource within a given +context. + +This element can also be used for local identifiers (e.g. ID numbers +or call numbers) assigned by the Creator of the resource to apply to a +particular item. It should not be used for identification of the +metadata record itself. + +.. note:: + + The application will fill in the identifier with the original name + of the file as it was uploaded. + +Source +------ + +A Reference to a resource from which the present resource is +derived. The present resource may be derived from the Source resource +in whole or part. + +.. note:: + + This element doesn't describe how the item was acquired. It isn't + likely to be used for original works of art. + +Language +-------- + +A language of the intellectual content of the resource. Either a coded +value or text string can be represented here. If the content is in +more than one language, the element may be repeated. Examples include +"en" for English, or "Primarily English, with some abstracts also in French." + +Relation +-------- + +A reference to a related resource. Relationships may be expressed +reciprocally (if the resources on both ends of the relationship are +being described) or in one direction only. If text is used instead of +identifying numbers, the reference should be appropriately +specific. For instance, a formal bibliographic citation might be used +to point users to a particular resource. + +Coverage +-------- + +The extent or scope of the content of the resource. Coverage will +typically include a location (a place name or geographic +co-ordinates), time period (a period label, date, or date range) +or jurisdiction (such as a named administrative entity). + +Where appropriate, named places or time periods should be used in +preference to numeric identifiers such as sets of co-ordinates or date +ranges. + +Whether this element is used for spatial or temporal information, care +should be taken to provide consistent information that can be +interpreted by human users. For most applications, place names or +coverage dates might be most useful. + +Rights +------ + +Information about rights held in and over the resource. Typically a +Rights element will contain a rights management statement for the +resource, or reference a service providing such information. + +The Rights element may be used for either a textual statement or a URL +pointing to a rights statement, or a combination, when a brief +statement and a more lengthy one are available. + +.. _`Dublin Core Usage Guide`: + http://dublincore.org/documents/usageguide/elements.shtml diff --git a/docs/source/project.rst b/docs/source/project.rst new file mode 100644 index 0000000..0047670 --- /dev/null +++ b/docs/source/project.rst @@ -0,0 +1,10 @@ +.. _project: + +Project +======= + +The Ethnographic Terminalia Collective organizes it's activities +around the idea of a project, which is a major event. + +Projects take place in one or more :ref:`venue` and are organized into +project categories. diff --git a/docs/source/requirements.rst b/docs/source/requirements.rst new file mode 100644 index 0000000..5fa99fa --- /dev/null +++ b/docs/source/requirements.rst @@ -0,0 +1,39 @@ +.. _requirements: + +Requirements +============ + +PHP 5.5.9 or later is required. + +The application takes uploads of media files (image, video, audio, and +PDF) and generates thumbnails of those files. ImageMagick provides the +thumbnailing, along with some external libraries for video and PDF. + +PHP Extensions: + +* `imagick`_ PHP PECL extension. + +System libraries and packages: + +* `ghostscript`_ to read PDF files. + +* `ffmpeg`_ to read video files. + +* `MySQL`_ or `MariaDB`_. + +PHP dependencies, other than imagick above, are managed with +`Composer`_. The Symfony framework has additional requirements for +PHP. Composer should be installed globally. + +Javascript and CSS dependencies are managed with `Bower`_, which requires +`NPM`_ and `NodeJS`_. + +.. _imagick: http://php.net/manual/en/book.imagick.php +.. _ghostscript: https://www.ghostscript.com/ +.. _ffmpeg: https://ffmpeg.org/ +.. _MySQL: https://www.mysql.com/downloads/ +.. _MariaDB: https://mariadb.org/ +.. _Composer: https://getcomposer.org/ +.. _Bower: https://bower.io/ +.. _NPM: https://www.npmjs.com/ +.. _NodeJS: https://nodejs.org/en/ diff --git a/docs/source/roles.rst b/docs/source/roles.rst new file mode 100644 index 0000000..a9c6cd6 --- /dev/null +++ b/docs/source/roles.rst @@ -0,0 +1,22 @@ +.. _roles: + +User Roles +========== + +Different roles are available. + +ROLE_ADMIN + This role has permission to do anything. Very few people should have + this kind of access. + +ROLE_BLOG_ADMIN + Users with this role are able to add and update announcements and + create new pages for the About menu. + +ROLE_COMMENT_ADMIN + If the commenting system is enabled, users in this role can approve + comments for posting on the website. + +ROLE_CONTENT_ADMIN + This is the most commonly used role. Users with this role will be + able to add and edit content specific for this project. diff --git a/docs/source/styleguide.rst b/docs/source/styleguide.rst new file mode 100644 index 0000000..e047cd9 --- /dev/null +++ b/docs/source/styleguide.rst @@ -0,0 +1,31 @@ +.. _styleguide: + +Style Guide for Data Entry +========================== + +There are a few things that you will want to consider with regards to +style/consistency for uploading data: + +* How should you capitalize titles of artworks, names of + organizations, locations, and personal names? What about the pages + associated with a project? + +* Should terms be capitalized or all lowercase? + +* Where will you draw the term descriptions from (i.e. how would you + describe and ARC as opposed to a gallery)? + +* How granular do you want your categories to be - i.e. do you want to + distinguish between a walk-through video as opposed to a + reproduction of a video artwork? If so, where would that distinction + take place - in “artwork categories” or “media file categories”? + +Recommendations +--------------- + +#. Title case for the names of Projects ("The Photo-Essay is Dead, + Long Live the Photo-Essay!") + +#. Initial caps for project pages ("Workshop registration + instructions") + diff --git a/docs/source/templates/layout.html b/docs/source/templates/layout.html new file mode 100644 index 0000000..ec4c04d --- /dev/null +++ b/docs/source/templates/layout.html @@ -0,0 +1,29 @@ +{% extends '!layout.html' %} + +{% block sidebartoc %} + +

Between the Digital

+ + +{{ super() }} + +{% endblock %} + +{% block footer %} + + + +{% endblock %} diff --git a/docs/source/todo.rst b/docs/source/todo.rst new file mode 100644 index 0000000..383657e --- /dev/null +++ b/docs/source/todo.rst @@ -0,0 +1,6 @@ +.. _todo-label: + +To Do +===== + +.. todolist:: diff --git a/docs/source/update.rst b/docs/source/update.rst new file mode 100644 index 0000000..1bfb89a --- /dev/null +++ b/docs/source/update.rst @@ -0,0 +1,50 @@ +.. _update: + +Updates +======= + +Applying updates from git shouldn't be difficult. + +1. Get the updates from a git remote + +.. code-block:: bash + + git pull + +2. Update the git submodules. + +.. code-block:: bash + + git submodule update --recursive --remote + +3. Install any updated composer dependencies. + +.. code-block:: bash + + composer install --no-dev -o + +Sometimes composer runs out of memory. If that happens, try this alternate. + +.. code-block:: bash + + php -d memory_limit=-1 `which composer` install --no-dev -o + +4. Apply any database schema updates + +.. code-block:: bash + + ./bin/console doctrine:schema:update --force + +5. Update the web assets. + +.. code-block:: bash + + bower install + +6. Clear the cache + +.. code-block:: bash + + ./bin/console cache:clear --env=prod + +That should be it. diff --git a/docs/source/users.rst b/docs/source/users.rst new file mode 100644 index 0000000..86a4350 --- /dev/null +++ b/docs/source/users.rst @@ -0,0 +1,58 @@ +.. _users: + +User Management +=============== + +Keeping track of users is complicated in any application. To that end, +there are several important concepts: + +Authentication + How a user establishes their identity. This is typically done via + logging in with a username and password, but other methods are also + used in different applications. + +Authorization + Different users can do different things. A user that has + authorization to do something is given a permission. + +Role + Users with the same set of permissions are grouped into roles. All + the users that can add and edit content might be have the role + *content admin* for example. Users can have multiple roles. + + Roles are described in :ref:`roles`. + +Authentication +-------------- + +If a user visits the site and hasn't logged in, there isn't much they +can do. The user can look at things, but shouldn't be able to make any changes. + +There's a login link in the top right of every page. The user can use +that login link to sign in to the site with an email address and +password. This authenticates the user. + +Once the user has successfully logged in, that link becomes a user +menu. It includes menu items to logout, change password, and view and +edit the user's profile. + +Authorization +------------- + +Users in the role *user admin* can add and edit users, user +permissions, and user passwords. This is a very powerful role, and +should be given out very carefully. + +Creating New User Accounts +-------------------------- + +For users with the correct authorization, creating a new user account +should be easy. There's a *Users* item in the user menu at the top +right. Follow the link to get a list of users. There's a New button +for creating new users. Fill out the form, and be sure to check the +Account Enabled checkbox. Select the appropriate roles for the user. + +Once a user account has been created, the administrator needs to set a +password for the user. Go to the user list and click on a user's full +name. There is a button there to set the user's password. + diff --git a/docs/source/venue-category.rst b/docs/source/venue-category.rst new file mode 100644 index 0000000..e47e84d --- /dev/null +++ b/docs/source/venue-category.rst @@ -0,0 +1,11 @@ +.. _venue-category: + +Venue Category +============== + +Venue categories group the venues into different types: gallery, +workshop, studio, etc. Venue categories have all the +:ref:`category-field` that the other categorization schemes use in +this app. + +Venue Categories are accessible via the Browse menu in the menu bar. diff --git a/docs/source/venue.rst b/docs/source/venue.rst new file mode 100644 index 0000000..a5c9e35 --- /dev/null +++ b/docs/source/venue.rst @@ -0,0 +1,13 @@ +.. _venue: + +Venue +===== + +Venues are specific locations where a Between the Digital event took +place. Venues could be galleries, artist studios, or even conference +centres. + +A venue is a associated with a :ref:`location` which describes the +venue's geographic place. Venues are also associated with a +:ref:`venue-category` which serves to classify the venue. Multiple +:ref:`project` maybe associated with a venue. diff --git a/docs/source/workflow.rst b/docs/source/workflow.rst new file mode 100644 index 0000000..f5518a4 --- /dev/null +++ b/docs/source/workflow.rst @@ -0,0 +1,222 @@ +.. _workflow: + +Workflow and Data Entry +======================= + +Suggested workflow for adding content to BTD web tool + +The data entry is designed to work on a project-to-project basis. It's +useful to create a paper inventory beforehand, listing all of the +contributors, organizations, locations, and media files that are +included in a project. Once the inventory is complete, you can use +it to check off the data that's already been entered for another +project. + +It's also useful to collect all the digital files together into one +place before you begin. If there are media files that need to be +attached to a project, it would be a good idea to collect them all in +one folder. If several people are collecting data for the same +project, then consider storing it in a folder in `SFU Vault`_ while you +organize everything. + +Describe the Categories and Roles +--------------------------------- + +The categories and roles allow data to be organized in the application +and once it has been deposited to the digital repository. Hopefully +the categories and roles will be reusable from project to project, +although you can always add new categories or roles as needed. The +fields in the categories and roles are described in :ref:`category-field`. + +Each of the categories and roles is accessible via the Browse menu in +the top menu bar. + +Artwork categories +^^^^^^^^^^^^^^^^^^ + +Terms that describe the material or generic features of an artwork, +i.e. installation, dance, performance, painting + +Artwork roles +^^^^^^^^^^^^^ + +Terms that describe the relationship of a person to an artwork, +i.e. artist (or the more specific “painter”, “sculptor”, etc.), +composer, poet + +Media file categories +^^^^^^^^^^^^^^^^^^^^^ + +Terms that describe the generic or content features of the media file, +i.e. a program, an interview, a sample of an artwork. These categories +are intended to describe the content of the media file. The format of +the media file will be described as somewhere else, as metadata. + +Project roles +^^^^^^^^^^^^^ + +Terms that describe the relationship of a person or organization to a +project, i.e. sponsor, curator, designer, etc. + +Project categories +^^^^^^^^^^^^^^^^^^ + +Terms that describe the generic features of a project, i.e. an +exhibition, a workshop, a lecture. + +Venue categories +^^^^^^^^^^^^^^^^ + +Terms that describe the function or type of space in which a project +took place, i.e. gallery, bookstore, university. + +Describe the Project +-------------------- + +Once you've created the categories and roles necessary for your +project, it's time to begin entering information about the project +itself. + +Try not to dupliate any information. For example, if two projects use +the same location, then that location only needs to be entered once. + +Location +^^^^^^^^ + +The geographic location of the project: City, region and country +(i.e. Boston, Massachusetts, USA). + +Venue +^^^^^ + +A venue has a name, address, description, and URL. You can write the +description yourself, or copy/paste it from the venue website. Select +the location and venue category from the drop down menus. + +.. note:: + + The Location and Venue Category entries must already be populated. + +.. todo:: + + Should Venue URL be optional? Should we allow more than one? + +People +^^^^^^ + +A person entry in the database has a full name (John Doe) and a +sortable name (doe, john). The sortable name isn't shown +publicly. Person entries also have biographies. + +.. note:: + + A biography is different from an artist or project + statement. Artist statements are entered elsewhere. + +Organizations +^^^^^^^^^^^^^ + +Organization entries have a name, address, description, URL, contact +information. + +.. todo:: + + Should Organization URL and contact be optional? Should URL be + repeatable? + +Artworks +^^^^^^^^ + +Create one entry for each artwork in the project. Describe the artwork +by entering the title, description, materials, and copyright. + +.. note:: + + You will add images, video, audio and other digital representations + of the artwork in the next step. This step focuses on a textual + description of the work. + +.. todo:: + + Artwork Category seems to be missing from the Artwork data entry + page. + +Media Files +^^^^^^^^^^^ + +Media files are digital images, photographs, video or audio +recordings, or document scans of artworks. Media files can also +include artist photos, PDFs of project programmes, or other +materials. + +Select a media file to upload, and choose the appropriate category +from the drop down list. + +Media File Metadata +^^^^^^^^^^^^^^^^^^^ + +Describe each of the metadata files that you have uploaded. Metadata +element descriptors are provided by Dublin Core and described in +:ref:`metadata`. Use the metadata system to describe the media file +itself, rather than the physical object it might represent. + +Add Media Files to Artworks +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Browse to the artwork entries you created earlier and add media files +to the artworks. + +Add Media Files to People +^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you've uploaded personal photos to the application for use in a +bio, add the media file to the person's entry. + +Add project +^^^^^^^^^^^ + +A project brings together the different parts of of the +application. It is the glue that binds everything together. + +Enter the title, start date, end date, venues, excerpt (if needed), +description, URL, project category. If the excerpt is blank, the +application will create an excerpt from the first 100 words in the +description. + +.. note:: + + Venues and project category are required fields, so if + you haven’t already populated these fields, you won’t be able to + add the project + +Add media to project +^^^^^^^^^^^^^^^^^^^^ + +Associate media files of the art works with the project. You shouldn't +add files of the artists or contributors here: they should be +associated with the Person or Artwork pages as appropriate. + +Add project contributions to project +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Add links between people or organizations and the project. Be sure to +describe the contribution using the contribution role drop down. + +Add artworks to project +^^^^^^^^^^^^^^^^^^^^^^^ + +Create connections between the artworks for a project and the project. + +Add project pages +^^^^^^^^^^^^^^^^^ + +Project pages are things like press releases, call for participation, +registration instructions, or other project-specific information that +needs to be preserved about a project. Don't be shy about creating new +pages for a project to preserve the content, but try not to duplicate +information either. There's a ballance to be found. + +*Created by Deanna Fong and Michael Joyce.* + +.. _SFU Vault: + https://vault.sfu.ca diff --git a/migrations/2020/12/Version20201201224802.php b/migrations/2020/12/Version20201201224802.php index 1f81796..eb76a16 100644 --- a/migrations/2020/12/Version20201201224802.php +++ b/migrations/2020/12/Version20201201224802.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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/2021/02/Version20210224223823.php b/migrations/2021/02/Version20210224223823.php index a470cec..2ff4416 100644 --- a/migrations/2021/02/Version20210224223823.php +++ b/migrations/2021/02/Version20210224223823.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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/06/Version20220627164850.php b/migrations/2022/06/Version20220627164850.php index e412fea..590f135 100644 --- a/migrations/2022/06/Version20220627164850.php +++ b/migrations/2022/06/Version20220627164850.php @@ -10,15 +10,12 @@ /** * Auto-generated Migration: Please modify to your needs! */ -final class Version20220627164850 extends AbstractMigration -{ - public function getDescription(): string - { +final class Version20220627164850 extends AbstractMigration { + public function getDescription() : string { return ''; } - public function up(Schema $schema): void - { + public function up(Schema $schema) : void { // this up() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE artistic_statement CHANGE created created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); $this->addSql('ALTER TABLE artwork CHANGE created created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); @@ -48,8 +45,7 @@ public function up(Schema $schema): void $this->addSql('ALTER TABLE venue_category CHANGE created created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); } - public function down(Schema $schema): void - { + public function down(Schema $schema) : void { // this down() migration is auto-generated, please modify it to your needs $this->addSql('ALTER TABLE artistic_statement CHANGE created created DATETIME NOT NULL, CHANGE updated updated DATETIME NOT NULL'); $this->addSql('ALTER TABLE artwork CHANGE created created DATETIME NOT NULL, CHANGE updated updated DATETIME NOT NULL'); diff --git a/migrations/2024/05/Version20240531230436.php b/migrations/2024/05/Version20240531230436.php new file mode 100644 index 0000000..870b733 --- /dev/null +++ b/migrations/2024/05/Version20240531230436.php @@ -0,0 +1,55 @@ +addSql('ALTER TABLE media_file_field DROP FOREIGN KEY FK_FB533BFB1F1F2A24'); + $this->addSql('ALTER TABLE blog_post DROP FOREIGN KEY FK_BA5AE01D12469DE2'); + $this->addSql('ALTER TABLE blog_post DROP FOREIGN KEY FK_BA5AE01D6BF700BD'); + $this->addSql('ALTER TABLE blog_post DROP FOREIGN KEY FK_BA5AE01DA76ED395'); + $this->addSql('ALTER TABLE comment_note DROP FOREIGN KEY FK_E98B58F8A76ED395'); + $this->addSql('ALTER TABLE comment_note DROP FOREIGN KEY FK_E98B58F8F8697D13'); + $this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C6BF700BD'); + $this->addSql('ALTER TABLE blog_page DROP FOREIGN KEY FK_F4DA3AB0A76ED395'); + + $this->addSql('RENAME TABLE blog_post_category to nines_blog_post_category'); + $this->addSql('RENAME TABLE blog_post to nines_blog_post'); + $this->addSql('RENAME TABLE blog_post_status to nines_blog_post_status'); + $this->addSql('RENAME TABLE blog_page to nines_blog_page'); + $this->addSql('RENAME TABLE element to nines_dc_element'); + + $this->addSql('DROP TABLE comment_note'); + $this->addSql('DROP TABLE comment_status'); + $this->addSql('DROP TABLE comment'); + } + + public function down(Schema $schema) : void { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TABLE comment_note (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, comment_id INT NOT NULL, content LONGTEXT CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_E98B58F8A76ED395 (user_id), INDEX IDX_E98B58F8F8697D13 (comment_id), FULLTEXT INDEX commentnote_ft_idx (content), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('CREATE TABLE comment_status (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(120) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, label VARCHAR(120) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, description LONGTEXT CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_unicode_ci`, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', FULLTEXT INDEX IDX_B1133D0EEA750E86DE44026 (label, description), UNIQUE INDEX UNIQ_B1133D0E5E237E06 (name), FULLTEXT INDEX IDX_B1133D0EEA750E8 (label), FULLTEXT INDEX IDX_B1133D0E6DE44026 (description), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, status_id INT NOT NULL, fullname VARCHAR(120) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, email VARCHAR(120) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, follow_up TINYINT(1) NOT NULL, entity VARCHAR(120) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, content LONGTEXT CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_9474526C6BF700BD (status_id), FULLTEXT INDEX comment_ft_idx (fullname, content), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('ALTER TABLE comment_note ADD CONSTRAINT FK_E98B58F8A76ED395 FOREIGN KEY (user_id) REFERENCES nines_user (id)'); + $this->addSql('ALTER TABLE comment_note ADD CONSTRAINT FK_E98B58F8F8697D13 FOREIGN KEY (comment_id) REFERENCES comment (id)'); + $this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C6BF700BD FOREIGN KEY (status_id) REFERENCES comment_status (id)'); + + $this->addSql('RENAME TABLE nines_blog_post_category to blog_post_category'); + $this->addSql('RENAME TABLE nines_blog_post to blog_post'); + $this->addSql('RENAME TABLE nines_blog_post_status to blog_post_status'); + $this->addSql('RENAME TABLE nines_blog_page to blog_page'); + $this->addSql('RENAME TABLE nines_dc_element to element'); + } +} diff --git a/migrations/2024/05/Version20240531232249.php b/migrations/2024/05/Version20240531232249.php new file mode 100644 index 0000000..27db9cb --- /dev/null +++ b/migrations/2024/05/Version20240531232249.php @@ -0,0 +1,93 @@ +addSql('CREATE TABLE nines_dc_value (id INT AUTO_INCREMENT NOT NULL, element_id INT DEFAULT NULL, data VARCHAR(255) NOT NULL, created DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', entity VARCHAR(120) NOT NULL, INDEX IDX_879CABBA1F1F2A24 (element_id), FULLTEXT INDEX nines_dc_value_ft (data), INDEX nines_dc_value_entity (entity), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); + $this->addSql('ALTER TABLE nines_dc_value ADD CONSTRAINT FK_879CABBA1F1F2A24 FOREIGN KEY (element_id) REFERENCES nines_dc_element (id)'); + $this->addSql('ALTER TABLE artwork_category CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE artwork_role CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE media_file_category CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE media_file_field ADD CONSTRAINT FK_FB533BFB1F1F2A24 FOREIGN KEY (element_id) REFERENCES nines_dc_element (id)'); + $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_page RENAME INDEX idx_f4da3ab0a76ed395 TO IDX_23FD24C7A76ED395'); + $this->addSql('ALTER TABLE nines_blog_page RENAME INDEX blog_page_content TO blog_page_ft'); + $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_blog_post RENAME INDEX idx_ba5ae01d12469de2 TO IDX_6D7DFE6A12469DE2'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX idx_ba5ae01d6bf700bd TO IDX_6D7DFE6A6BF700BD'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX idx_ba5ae01da76ed395 TO IDX_6D7DFE6AA76ED395'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX blog_post_content TO blog_post_ft'); + $this->addSql('ALTER TABLE nines_blog_post_category CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_ca275a0cea750e8 TO IDX_32F5FC8CEA750E8'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_ca275a0c6de44026 TO IDX_32F5FC8C6DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_ca275a0cea750e86de44026 TO IDX_32F5FC8CEA750E86DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX uniq_ca275a0c5e237e06 TO UNIQ_32F5FC8C5E237E06'); + $this->addSql('ALTER TABLE nines_blog_post_status CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_92121d87ea750e8 TO IDX_4A63E2FDEA750E8'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_92121d876de44026 TO IDX_4A63E2FD6DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_92121d87ea750e86de44026 TO IDX_4A63E2FDEA750E86DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX uniq_92121d875e237e06 TO UNIQ_4A63E2FD5E237E06'); + $this->addSql('ALTER TABLE nines_dc_element CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_41405e39ea750e8 TO IDX_C0F4D2B1EA750E8'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_41405e396de44026 TO IDX_C0F4D2B16DE44026'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_41405e39ea750e86de44026 TO IDX_C0F4D2B1EA750E86DE44026'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX uniq_41405e39841cb121 TO UNIQ_C0F4D2B1841CB121'); + $this->addSql('ALTER TABLE project_category CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE project_role CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + $this->addSql('ALTER TABLE venue_category CHANGE name name VARCHAR(191) NOT NULL, CHANGE label label VARCHAR(200) NOT NULL'); + } + + public function down(Schema $schema) : void { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE nines_dc_value DROP FOREIGN KEY FK_879CABBA1F1F2A24'); + $this->addSql('DROP TABLE nines_dc_value'); + $this->addSql('ALTER TABLE artwork_role CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $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 RENAME INDEX blog_post_ft TO blog_post_content'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX idx_6d7dfe6a12469de2 TO IDX_BA5AE01D12469DE2'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX idx_6d7dfe6a6bf700bd TO IDX_BA5AE01D6BF700BD'); + $this->addSql('ALTER TABLE nines_blog_post RENAME INDEX idx_6d7dfe6aa76ed395 TO IDX_BA5AE01DA76ED395'); + $this->addSql('ALTER TABLE media_file_category CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_post_category CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_32f5fc8c6de44026 TO IDX_CA275A0C6DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_32f5fc8cea750e86de44026 TO IDX_CA275A0CEA750E86DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX uniq_32f5fc8c5e237e06 TO UNIQ_CA275A0C5E237E06'); + $this->addSql('ALTER TABLE nines_blog_post_category RENAME INDEX idx_32f5fc8cea750e8 TO IDX_CA275A0CEA750E8'); + $this->addSql('ALTER TABLE project_role CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_dc_element CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_c0f4d2b1ea750e86de44026 TO IDX_41405E39EA750E86DE44026'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX uniq_c0f4d2b1841cb121 TO UNIQ_41405E39841CB121'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_c0f4d2b1ea750e8 TO IDX_41405E39EA750E8'); + $this->addSql('ALTER TABLE nines_dc_element RENAME INDEX idx_c0f4d2b16de44026 TO IDX_41405E396DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_status CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_4a63e2fdea750e86de44026 TO IDX_92121D87EA750E86DE44026'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX uniq_4a63e2fd5e237e06 TO UNIQ_92121D875E237E06'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_4a63e2fdea750e8 TO IDX_92121D87EA750E8'); + $this->addSql('ALTER TABLE nines_blog_post_status RENAME INDEX idx_4a63e2fd6de44026 TO IDX_92121D876DE44026'); + $this->addSql('ALTER TABLE media_file_field DROP FOREIGN KEY FK_FB533BFB1F1F2A24'); + $this->addSql('ALTER TABLE venue_category CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE project_category CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE artwork_category CHANGE name name VARCHAR(120) NOT NULL, CHANGE label label VARCHAR(120) NOT NULL'); + $this->addSql('ALTER TABLE nines_blog_page DROP FOREIGN KEY FK_23FD24C7A76ED395'); + $this->addSql('ALTER TABLE nines_blog_page RENAME INDEX idx_23fd24c7a76ed395 TO IDX_F4DA3AB0A76ED395'); + $this->addSql('ALTER TABLE nines_blog_page RENAME INDEX blog_page_ft TO blog_page_content'); + } +} diff --git a/phpunit.coverage.xml b/phpunit.coverage.xml deleted file mode 100644 index d9c2158..0000000 --- a/phpunit.coverage.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - src - - - src/DataFixtures - src/Kernel.php - src/.preload.php - - - - - - - - - tests - - - - - - - diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..35f8cf5 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + tests + + + + + + src + + + src/DataFixtures + src/Kernel.php + src/.preload.php + + + + + + + + + + + \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist deleted file mode 100644 index 7642a72..0000000 --- a/phpunit.xml.dist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - tests - - - - - - 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/base.css b/public/css/base.css index b4a374c..31bb006 100644 --- a/public/css/base.css +++ b/public/css/base.css @@ -10,20 +10,45 @@ html { } body { /* Margin bottom by footer height */ - margin-bottom: 60px; + margin-bottom: 90px; } + +nav.navbar .dropdown-toggle.show { + background-image: linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%); +} + +nav.navbar .dropdown-menu { + margin: 0; +} + .footer { position: absolute; bottom: 0; width: 100%; /* Set the fixed height of the footer here */ - height: 60px; + height: 70px; background-color: #f5f5f5; } .footer > .container { padding-right: 15px; padding-left: 15px; + padding-top: 10px; +} + +a { + text-decoration: none; +} +a:hover { + text-decoration: underline; +} + +nav.navbar a.nav-link { + padding: 15px; +} + +.navbar a, a.btn { + text-decoration: none !important; } /* Custom app styles */ 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/form.js b/public/js/form.js index deb65d1..e0b4758 100644 --- a/public/js/form.js +++ b/public/js/form.js @@ -50,8 +50,8 @@ allow_up: false, allow_down: false, max: 400, - add: '', - remove: '', + add: '', + remove: '', add_at_the_end: false, }); } @@ -62,8 +62,8 @@ allow_up: false, allow_down: false, max: 400, - add: '', - remove: '', + add: '', + remove: '', add_at_the_end: true, after_add: function(collection, element){ $(element).find('.select2entity').select2entity(); diff --git a/package.json b/public/package.json similarity index 58% rename from package.json rename to public/package.json index efa11a3..0fc18f1 100644 --- a/package.json +++ b/public/package.json @@ -1,5 +1,5 @@ { - "name": "btd-44", + "name": "btd", "version": "1.0.0", "main": "index.js", "repository": "git@github.com:ubermichael/btd.git", @@ -7,12 +7,15 @@ "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", "jquery-ui": "^1.12.1", - "select2": "^4.0.13", - "select2-bootstrap-css": "^1.4.6", + "pdfobject": "^2.3.0", + "select2": "^4.0.12", + "select2-bootstrap-5-theme": "^1.3.0", "symfony-collection": "^2.1.30", - "tinymce": "^5.4.0" + "tinymce": "^5.10.9", + "video.js": "^8.12.0" } } diff --git a/public/yarn.lock b/public/yarn.lock new file mode 100644 index 0000000..8f12a17 --- /dev/null +++ b/public/yarn.lock @@ -0,0 +1,255 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" + integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== + dependencies: + regenerator-runtime "^0.14.0" + +"@videojs/http-streaming@3.12.1": + version "3.12.1" + resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-3.12.1.tgz#0d924879bc395e66e1d112698e0f54920ffae1d7" + integrity sha512-rpB5AMt0QZ9bMXzwiWhynF2NLNnm5g2DZjPOFX6OoFqqXhbe2ngY2nqm9lLRhRVe22YeysQCmAlvBNwGuWFI8Q== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "4.0.0" + aes-decrypter "4.0.1" + global "^4.4.0" + m3u8-parser "^7.1.0" + mpd-parser "^1.3.0" + mux.js "7.0.3" + video.js "^7 || ^8" + +"@videojs/vhs-utils@4.0.0", "@videojs/vhs-utils@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz#4d4dbf5d61a9fbd2da114b84ec747c3a483bc60d" + integrity sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/vhs-utils@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz#665ba70d78258ba1ab977364e2fe9f4d4799c46c" + integrity sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/xhr@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80" + integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q== + dependencies: + "@babel/runtime" "^7.5.5" + global "~4.4.0" + is-function "^1.0.1" + +"@xmldom/xmldom@^0.8.3": + version "0.8.10" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + +aes-decrypter@4.0.1, aes-decrypter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz#c1a81d0bde0e96fed0674488d2a31a6d7ab9b7a7" + integrity sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + pkcs7 "^1.0.4" + +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== + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +global@4.4.0, global@^4.3.1, global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +individual@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" + integrity sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +jquery-ui@>=1.0, jquery-ui@^1.12.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034" + integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q== + dependencies: + jquery ">=1.8.0 <4.0.0" + +jquery@>=1.7, "jquery@>=1.8.0 <4.0.0", jquery@^3.4.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" + integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== + +keycode@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" + integrity sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A== + +m3u8-parser@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-7.1.0.tgz#fa92ee22fc798150397c297152c879fe09f066c6" + integrity sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.5" + global "^4.4.0" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +mpd-parser@^1.2.2, mpd-parser@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-1.3.0.tgz#38c20f4d73542b4ed554158bc1f0fa571dc61388" + integrity sha512-WgeIwxAqkmb9uTn4ClicXpEQYCEduDqRKfmUdp4X8vmghKfBNXZLYpREn9eqrDx/Tf5LhzRcJLSpi4ohfV742Q== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^4.0.0" + "@xmldom/xmldom" "^0.8.3" + global "^4.4.0" + +mux.js@7.0.3, mux.js@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-7.0.3.tgz#18fbbc607faeeaa8c897e0410d2067be2bdc7e1e" + integrity sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ== + dependencies: + "@babel/runtime" "^7.11.2" + global "^4.4.0" + +pdfobject@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pdfobject/-/pdfobject-2.3.0.tgz#467b4ffcd621518aa0e66fc191fdd669f3118b06" + integrity sha512-w/9pXDXTDs3IDmOri/w8lM/w6LHR0/F4fcBLLzH+4csSoyshQ5su0TE7k0FLHZO7aOjVLDGecqd1M89+PVpVAA== + +pkcs7@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb" + integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ== + dependencies: + "@babel/runtime" "^7.5.5" + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +rust-result@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" + integrity sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA== + dependencies: + individual "^2.0.0" + +safe-json-parse@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" + integrity sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ== + dependencies: + rust-result "^1.0.0" + +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== + +url-toolkit@^2.2.1: + version "2.2.5" + resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.5.tgz#58406b18e12c58803e14624df5e374f638b0f607" + integrity sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg== + +"video.js@^7 || ^8", video.js@^8.12.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/video.js/-/video.js-8.12.0.tgz#f85295f55afbef8b29d885e23777d3a64651f536" + integrity sha512-bLjfg3y09CAed1xZ4FujdTW7G9kgL0CJHaBnDKwBUgYuutijCutYPP5yQGCdN6VOi76uEuOpINwmTJSJia6zww== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/http-streaming" "3.12.1" + "@videojs/vhs-utils" "^4.0.0" + "@videojs/xhr" "2.6.0" + aes-decrypter "^4.0.1" + global "4.4.0" + keycode "2.2.0" + m3u8-parser "^7.1.0" + mpd-parser "^1.2.2" + mux.js "^7.0.1" + safe-json-parse "4.0.0" + videojs-contrib-quality-levels "4.1.0" + videojs-font "4.1.0" + videojs-vtt.js "0.15.5" + +videojs-contrib-quality-levels@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz#44c2d2167114a5c8418548b10a25cb409d6cba51" + integrity sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA== + dependencies: + global "^4.4.0" + +videojs-font@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-4.1.0.tgz#3ae1dbaac60b4f0f1c4e6f7ff9662a89df176015" + integrity sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w== + +videojs-vtt.js@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz#567776eaf2a7a928d88b148a8b401ade2406f2ca" + integrity sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ== + dependencies: + global "^4.3.1" diff --git a/src/Command/ExportIslandoraCommand.php b/src/Command/ExportIslandoraCommand.php index e18d91b..2dc8658 100644 --- a/src/Command/ExportIslandoraCommand.php +++ b/src/Command/ExportIslandoraCommand.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Command; use App\Entity\MediaFile; @@ -26,55 +20,37 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +#[\Symfony\Component\Console\Attribute\AsCommand('app:export:islandora', 'Export a project as an islandora collection.')] class ExportIslandoraCommand extends Command { - /** - * @var ObjectManager - */ - private $em; + private ObjectManager $em; - /** - * @var TwigEngine - */ - private $twig; + private TwigEngine $twig; protected function configure() : void { $this - ->setName('app:export:islandora') - ->setDescription('Export a project as an islandora collection.') ->addArgument('project-id', InputArgument::REQUIRED, 'Database ID of the project to export.') ->addArgument('path', InputArgument::REQUIRED, 'File system path to export to.') ; } - protected function execute(InputInterface $input, OutputInterface $output) : void { + protected function execute(InputInterface $input, OutputInterface $output) : int { $project = $this->em->find(Project::class, $input->getArgument('project-id')); $dh = $this->getDirHandle($input->getArgument('path')); $output->writeln("exporting {$project} to {$dh->getRealPath()}"); $this->exportProject($project, $dh); } - /** - * @required - */ + #[\Symfony\Contracts\Service\Attribute\Required] public function setEntityManager(EntityManagerInterface $em) : void { $this->em = $em; } - /** - * @required - */ + #[\Symfony\Contracts\Service\Attribute\Required] public function setLogger(LoggerInterface $logger) : void { $this->logger = $logger; } - /** - * @param string $path - * - * @throws Exception - * - * @return SplFileInfo - */ - public function getDirHandle($path) { + public function getDirHandle(string $path) : SplFileInfo { if ( ! file_exists($path)) { mkdir($path); } diff --git a/src/Command/GenerateThumbnailsCommand.php b/src/Command/GenerateThumbnailsCommand.php index 93d8bba..0d3d95a 100644 --- a/src/Command/GenerateThumbnailsCommand.php +++ b/src/Command/GenerateThumbnailsCommand.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Command; use App\Entity\MediaFile; @@ -18,16 +12,15 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +#[\Symfony\Component\Console\Attribute\AsCommand('app:generate:thumbnails', 'Generate thumbnails for media files.')] class GenerateThumbnailsCommand extends Command { protected function configure() : void { $this - ->setName('app:generate:thumbnails') - ->setDescription('Generate thumbnails for media files.') ->addOption('force', null, InputOption::VALUE_NONE, 'Regenerate all thumbnails.') ; } - protected function execute(InputInterface $input, OutputInterface $output) : void { + protected function execute(InputInterface $input, OutputInterface $output) : int { exit('NOT IMPLEMENTED.'); $em = $this->getContainer()->get('doctrine')->getEntityManager(); $thumbnailer = new Thumbnailer(); diff --git a/src/Controller/ArtisticStatementController.php b/src/Controller/ArtisticStatementController.php index c17608c..49c9201 100644 --- a/src/Controller/ArtisticStatementController.php +++ b/src/Controller/ArtisticStatementController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtisticStatement; @@ -19,30 +13,28 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * ArtisticStatement controller. - * - * @Route("/artistic_statement") */ +#[Route(path: '/artistic_statement')] class ArtisticStatementController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ArtisticStatement entities. - * - * @Route("/", name="artwork_statement_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'artwork_statement_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $qb = $em->createQueryBuilder(); $qb->select('e')->from(ArtisticStatement::class, 'e')->orderBy('e.id', 'ASC'); $query = $qb->getQuery(); - $artisticStatements = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $artisticStatements = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'artisticStatements' => $artisticStatements, @@ -56,12 +48,10 @@ public function indexAction(Request $request, EntityManagerInterface $em) { * App:ArtisticStatement repository. Replace the fieldName with * something appropriate, and adjust the generated search.html.twig * template. - * - * @Route("/search", name="artwork_statement_search", methods={"GET"}) - * - * @Template */ - public function searchAction(Request $request, EntityManagerInterface $em, ArtisticStatementRepository $repo) { + #[Route(path: '/search', name: 'artwork_statement_search', methods: ['GET'])] + #[Template] + public function search(Request $request, EntityManagerInterface $em, ArtisticStatementRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->searchQuery($q); @@ -77,34 +67,9 @@ public function searchAction(Request $request, EntityManagerInterface $em, Artis ]; } - /** - * Full text search for ArtisticStatement entities. - * - * To make this work, add a method like this one to the - * App:ArtisticStatement repository. Replace the fieldName with - * something appropriate, and adjust the generated fulltext.html.twig - * template. - * - * // public function fulltextQuery($q) { - * // $qb = $this->createQueryBuilder('e'); - * // $qb->addSelect("MATCH_AGAINST (e.name, :q 'IN BOOLEAN MODE') as score"); - * // $qb->add('where', "MATCH_AGAINST (e.name, :q 'IN BOOLEAN MODE') > 0.5"); - * // $qb->orderBy('score', 'desc'); - * // $qb->setParameter('q', $q); - * // return $qb->getQuery(); - * // } - * - * Requires a MatchAgainst function be added to doctrine, and appropriate - * fulltext indexes on your ArtisticStatement entity. - * ORM\Index(name="alias_name_idx",columns="name", flags={"fulltext"}) - * - * @Route("/fulltext", name="artwork_statement_fulltext", methods={"GET"}) - * - * @Template - * - * @return array - */ - public function fulltextAction(Request $request, ArtisticStatementRepository $repo) { + #[Route(path: '/fulltext', name: 'artwork_statement_fulltext', methods: ['GET'])] + #[Template] + public function fulltext(Request $request, ArtisticStatementRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -122,13 +87,11 @@ public function fulltextAction(Request $request, ArtisticStatementRepository $re /** * Creates a new ArtisticStatement entity. - * - * @Route("/new", name="artwork_statement_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'artwork_statement_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $artisticStatement = new ArtisticStatement(); $form = $this->createForm(ArtisticStatementType::class, $artisticStatement); $form->handleRequest($request); @@ -150,12 +113,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a ArtisticStatement entity. - * - * @Route("/{id}", name="artwork_statement_show", methods={"GET"}) - * - * @Template */ - public function showAction(ArtisticStatement $artisticStatement) { + #[Route(path: '/{id}', name: 'artwork_statement_show', methods: ['GET'])] + #[Template] + public function show(ArtisticStatement $artisticStatement) : array { return [ 'artisticStatement' => $artisticStatement, ]; @@ -163,13 +124,11 @@ public function showAction(ArtisticStatement $artisticStatement) { /** * Displays a form to edit an existing ArtisticStatement entity. - * - * @Route("/{id}/edit", name="artwork_statement_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, ArtisticStatement $artisticStatement, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'artwork_statement_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, ArtisticStatement $artisticStatement, EntityManagerInterface $em) : array|RedirectResponse { if ( ! $this->isGranted('ROLE_CONTENT_ADMIN')) { $this->addFlash('danger', 'You must login to access this page.'); @@ -193,11 +152,10 @@ public function editAction(Request $request, ArtisticStatement $artisticStatemen /** * Deletes a ArtisticStatement entity. - * - * @Route("/{id}/delete", name="artwork_statement_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, ArtisticStatement $artisticStatement, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'artwork_statement_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(ArtisticStatement $artisticStatement, EntityManagerInterface $em) : RedirectResponse { $em->remove($artisticStatement); $em->flush(); $this->addFlash('success', 'The artisticStatement was deleted.'); diff --git a/src/Controller/ArtworkCategoryController.php b/src/Controller/ArtworkCategoryController.php index 189cb4d..dea7447 100644 --- a/src/Controller/ArtworkCategoryController.php +++ b/src/Controller/ArtworkCategoryController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkCategory; @@ -19,29 +13,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * ArtworkCategory controller. - * - * @Route("/artwork_category") */ +#[Route(path: '/artwork_category')] class ArtworkCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ArtworkCategory entities. - * - * @Route("/", name="artwork_category_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/', name: 'artwork_category_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) : array { $dql = 'SELECT e FROM App:ArtworkCategory e ORDER BY e.id'; $query = $em->createQuery($dql); - $artworkCategories = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $artworkCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'artworkCategories' => $artworkCategories, @@ -50,13 +42,11 @@ public function indexAction(Request $request, EntityManagerInterface $em, MediaF /** * Creates a new ArtworkCategory entity. - * - * @Route("/new", name="artwork_category_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/new', name: 'artwork_category_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $artworkCategory = new ArtworkCategory(); $form = $this->createForm(ArtworkCategoryType::class, $artworkCategory); $form->handleRequest($request); @@ -78,12 +68,10 @@ public function newAction(Request $request, EntityManagerInterface $em, MediaFil /** * Finds and displays a ArtworkCategory entity. - * - * @Route("/{id}", name="artwork_category_show", methods={"GET"}) - * - * @Template */ - public function showAction(ArtworkCategory $artworkCategory) { + #[Route(path: '/{id}', name: 'artwork_category_show', methods: ['GET'])] + #[Template] + public function show(ArtworkCategory $artworkCategory) : array { return [ 'artworkCategory' => $artworkCategory, ]; @@ -91,13 +79,11 @@ public function showAction(ArtworkCategory $artworkCategory) { /** * Displays a form to edit an existing ArtworkCategory entity. - * - * @Route("/{id}/edit", name="artwork_category_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, ArtworkCategory $artworkCategory, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/edit', name: 'artwork_category_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, ArtworkCategory $artworkCategory, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $editForm = $this->createForm(ArtworkCategoryType::class, $artworkCategory); $editForm->handleRequest($request); @@ -116,11 +102,10 @@ public function editAction(Request $request, ArtworkCategory $artworkCategory, E /** * Deletes a ArtworkCategory entity. - * - * @Route("/{id}/delete", name="artwork_category_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, ArtworkCategory $artworkCategory, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/delete', name: 'artwork_category_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(ArtworkCategory $artworkCategory, EntityManagerInterface $em, MediaFileRepository $repo) : RedirectResponse { $em->remove($artworkCategory); $em->flush(); $this->addFlash('success', 'The artworkCategory was deleted.'); diff --git a/src/Controller/ArtworkContributionController.php b/src/Controller/ArtworkContributionController.php index 24fb409..3480851 100644 --- a/src/Controller/ArtworkContributionController.php +++ b/src/Controller/ArtworkContributionController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkContribution; @@ -22,24 +16,21 @@ /** * ArtworkContribution controller. - * - * @Route("/artwork_contribution") */ +#[Route(path: '/artwork_contribution')] class ArtworkContributionController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ArtworkContribution entities. - * - * @Route("/", name="artwork_contribution_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/', name: 'artwork_contribution_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em, MediaFileRepository $repo) : array { $dql = 'SELECT e FROM App:ArtworkContribution e ORDER BY e.id'; $query = $em->createQuery($dql); - $artworkContributions = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $artworkContributions = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'artworkContributions' => $artworkContributions, diff --git a/src/Controller/ArtworkController.php b/src/Controller/ArtworkController.php index 3762e53..571cf76 100644 --- a/src/Controller/ArtworkController.php +++ b/src/Controller/ArtworkController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Artwork; @@ -22,29 +16,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * Artwork controller. - * - * @Route("/artwork") */ +#[Route(path: '/artwork')] class ArtworkController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Artwork entities. - * - * @Route("/", name="artwork_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'artwork_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Artwork e ORDER BY e.id'; $query = $em->createQuery($dql); - $artworks = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $artworks = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'artworks' => $artworks, @@ -53,14 +45,10 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Full text search for Artwork entities. - * - * @Route("/search", name="artwork_search", methods={"GET"}) - * - * @Template - * - * @return array */ - public function searchAction(Request $request, ArtworkRepository $repo) { + #[Route(path: '/search', name: 'artwork_search', methods: ['GET'])] + #[Template] + public function search(Request $request, ArtworkRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -78,13 +66,11 @@ public function searchAction(Request $request, ArtworkRepository $repo) { /** * Creates a new Artwork entity. - * - * @Route("/new", name="artwork_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'artwork_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $artwork = new Artwork(); $form = $this->createForm(ArtworkType::class, $artwork); $form->handleRequest($request); @@ -106,12 +92,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Artwork entity. - * - * @Route("/{id}", name="artwork_show", methods={"GET"}) - * - * @Template */ - public function showAction(Artwork $artwork) { + #[Route(path: '/{id}', name: 'artwork_show', methods: ['GET'])] + #[Template] + public function show(Artwork $artwork) : array { return [ 'artwork' => $artwork, ]; @@ -119,13 +103,11 @@ public function showAction(Artwork $artwork) { /** * Displays a form to edit an existing Artwork entity. - * - * @Route("/{id}/edit", name="artwork_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Artwork $artwork, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'artwork_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Artwork $artwork, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(ArtworkType::class, $artwork); $editForm->handleRequest($request); @@ -144,11 +126,10 @@ public function editAction(Request $request, Artwork $artwork, EntityManagerInte /** * Deletes a Artwork entity. - * - * @Route("/{id}/delete", name="artwork_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Artwork $artwork, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'artwork_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Artwork $artwork, EntityManagerInterface $em) : RedirectResponse { $em->remove($artwork); $em->flush(); $this->addFlash('success', 'The artwork was deleted.'); @@ -156,13 +137,10 @@ public function deleteAction(Request $request, Artwork $artwork, EntityManagerIn return $this->redirectToRoute('artwork_index'); } - /** - * @Route("/{id}/add_media", name="artwork_add_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function addMediaAction(Request $request, Artwork $artwork, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/add_media', name: 'artwork_add_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function addMedia(Request $request, Artwork $artwork, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $q = $request->query->get('q'); if ($q) { @@ -196,13 +174,10 @@ public function addMediaAction(Request $request, Artwork $artwork, EntityManager ]; } - /** - * @Route("/{id}/remove_media", name="artwork_remove_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function removeMediaAction(Request $request, Artwork $artwork, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/remove_media', name: 'artwork_remove_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function removeMedia(Request $request, Artwork $artwork, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $results = $this->paginator->paginate($artwork->getMediaFiles(), $request->query->getInt('page', 1), 25); $removeId = $request->query->get('removeId'); @@ -227,13 +202,10 @@ public function removeMediaAction(Request $request, Artwork $artwork, EntityMana ]; } - /** - * @Route("/{id}/contributions", name="artwork_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function contributionsAction(Request $request, Artwork $artwork, EntityManagerInterface $em) { + #[Route(path: '/{id}/contributions', name: 'artwork_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function contributions(Request $request, Artwork $artwork, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ArtworkContributionsType::class, $artwork, [ 'artwork' => $artwork, ]); @@ -252,13 +224,10 @@ public function contributionsAction(Request $request, Artwork $artwork, EntityMa ]; } - /** - * @Route("/{id}/projects", name="artwork_projects", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function projectsAction(Request $request, Artwork $artwork, EntityManagerInterface $em) { + #[Route(path: '/{id}/projects', name: 'artwork_projects', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function projects(Request $request, Artwork $artwork, EntityManagerInterface $em) : array { $oldProjects = $artwork->getProjects()->toArray(); $form = $this->createForm(ProjectsType::class, $artwork); $form->handleRequest($request); diff --git a/src/Controller/ArtworkRoleController.php b/src/Controller/ArtworkRoleController.php index d84cb5c..9254b3e 100644 --- a/src/Controller/ArtworkRoleController.php +++ b/src/Controller/ArtworkRoleController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkRole; @@ -18,29 +12,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * ArtworkRole controller. - * - * @Route("/artwork_role") */ +#[Route(path: '/artwork_role')] class ArtworkRoleController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ArtworkRole entities. - * - * @Route("/", name="artwork_role_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'artwork_role_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:ArtworkRole e ORDER BY e.id'; $query = $em->createQuery($dql); - $artworkRoles = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $artworkRoles = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'artworkRoles' => $artworkRoles, @@ -49,13 +41,11 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Creates a new ArtworkRole entity. - * - * @Route("/new", name="artwork_role_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'artwork_role_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $artworkRole = new ArtworkRole(); $form = $this->createForm(ArtworkRoleType::class, $artworkRole); $form->handleRequest($request); @@ -77,12 +67,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a ArtworkRole entity. - * - * @Route("/{id}", name="artwork_role_show", methods={"GET"}) - * - * @Template */ - public function showAction(ArtworkRole $artworkRole) { + #[Route(path: '/{id}', name: 'artwork_role_show', methods: ['GET'])] + #[Template] + public function show(ArtworkRole $artworkRole) : array { return [ 'artworkRole' => $artworkRole, ]; @@ -90,13 +78,11 @@ public function showAction(ArtworkRole $artworkRole) { /** * Displays a form to edit an existing ArtworkRole entity. - * - * @Route("/{id}/edit", name="artwork_role_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, ArtworkRole $artworkRole, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'artwork_role_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, ArtworkRole $artworkRole, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(ArtworkRoleType::class, $artworkRole); $editForm->handleRequest($request); @@ -115,11 +101,10 @@ public function editAction(Request $request, ArtworkRole $artworkRole, EntityMan /** * Deletes a ArtworkRole entity. - * - * @Route("/{id}/delete", name="artwork_role_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, ArtworkRole $artworkRole, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'artwork_role_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(ArtworkRole $artworkRole, EntityManagerInterface $em) : RedirectResponse { $em->remove($artworkRole); $em->flush(); $this->addFlash('success', 'The artworkRole was deleted.'); diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php index ffa0ba8..534a8cb 100644 --- a/src/Controller/DefaultController.php +++ b/src/Controller/DefaultController.php @@ -2,36 +2,24 @@ declare(strict_types=1); -/* - * (c) 2021 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 - */ - 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() : void {} } diff --git a/src/Controller/LocationController.php b/src/Controller/LocationController.php index e642451..d7f5c55 100644 --- a/src/Controller/LocationController.php +++ b/src/Controller/LocationController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Location; @@ -18,29 +12,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * Location controller. - * - * @Route("/location") */ +#[Route(path: '/location')] class LocationController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Location entities. - * - * @Route("/", name="location_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'location_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Location e ORDER BY e.id'; $query = $em->createQuery($dql); - $locations = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $locations = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'locations' => $locations, @@ -49,14 +41,10 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Full text search for Location entities. - * - * @Route("/search", name="location_search", methods={"GET"}) - * - * @Template - * - * @return array */ - public function searchAction(Request $request, LocationRepository $repo) { + #[Route(path: '/search', name: 'location_search', methods: ['GET'])] + #[Template] + public function search(Request $request, LocationRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -74,13 +62,11 @@ public function searchAction(Request $request, LocationRepository $repo) { /** * Creates a new Location entity. - * - * @Route("/new", name="location_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'location_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $location = new Location(); $form = $this->createForm('App\Form\LocationType', $location); $form->handleRequest($request); @@ -102,12 +88,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Location entity. - * - * @Route("/{id}", name="location_show", methods={"GET"}) - * - * @Template */ - public function showAction(Location $location) { + #[Route(path: '/{id}', name: 'location_show', methods: ['GET'])] + #[Template] + public function show(Location $location) : array { return [ 'location' => $location, ]; @@ -115,13 +99,11 @@ public function showAction(Location $location) { /** * Displays a form to edit an existing Location entity. - * - * @Route("/{id}/edit", name="location_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Location $location, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'location_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Location $location, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm('App\Form\LocationType', $location); $editForm->handleRequest($request); @@ -140,11 +122,10 @@ public function editAction(Request $request, Location $location, EntityManagerIn /** * Deletes a Location entity. - * - * @Route("/{id}/delete", name="location_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Location $location, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'location_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Location $location, EntityManagerInterface $em) : RedirectResponse { $em->remove($location); $em->flush(); $this->addFlash('success', 'The location was deleted.'); diff --git a/src/Controller/MediaFileCategoryController.php b/src/Controller/MediaFileCategoryController.php index 6939240..aa7c482 100644 --- a/src/Controller/MediaFileCategoryController.php +++ b/src/Controller/MediaFileCategoryController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileCategory; @@ -18,29 +12,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * MediaFileCategory controller. - * - * @Route("/media_file_category") */ +#[Route(path: '/media_file_category')] class MediaFileCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all MediaFileCategory entities. - * - * @Route("/", name="media_file_category_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'media_file_category_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:MediaFileCategory e ORDER BY e.id'; $query = $em->createQuery($dql); - $mediaFileCategories = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $mediaFileCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'mediaFileCategories' => $mediaFileCategories, @@ -49,13 +41,11 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Creates a new MediaFileCategory entity. - * - * @Route("/new", name="media_file_category_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'media_file_category_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $mediaFileCategory = new MediaFileCategory(); $form = $this->createForm(MediaFileCategoryType::class, $mediaFileCategory); $form->handleRequest($request); @@ -77,12 +67,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a MediaFileCategory entity. - * - * @Route("/{id}", name="media_file_category_show", methods={"GET"}) - * - * @Template */ - public function showAction(MediaFileCategory $mediaFileCategory) { + #[Route(path: '/{id}', name: 'media_file_category_show', methods: ['GET'])] + #[Template] + public function show(MediaFileCategory $mediaFileCategory) : array { return [ 'mediaFileCategory' => $mediaFileCategory, ]; @@ -90,13 +78,11 @@ public function showAction(MediaFileCategory $mediaFileCategory) { /** * Displays a form to edit an existing MediaFileCategory entity. - * - * @Route("/{id}/edit", name="media_file_category_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, MediaFileCategory $mediaFileCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'media_file_category_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, MediaFileCategory $mediaFileCategory, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm('App\Form\MediaFileCategoryType', $mediaFileCategory); $editForm->handleRequest($request); @@ -115,11 +101,10 @@ public function editAction(Request $request, MediaFileCategory $mediaFileCategor /** * Deletes a MediaFileCategory entity. - * - * @Route("/{id}/delete", name="media_file_category_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, MediaFileCategory $mediaFileCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'media_file_category_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(MediaFileCategory $mediaFileCategory, EntityManagerInterface $em) : RedirectResponse { $em->remove($mediaFileCategory); $em->flush(); $this->addFlash('success', 'The mediaFileCategory was deleted.'); diff --git a/src/Controller/MediaFileController.php b/src/Controller/MediaFileController.php index 6bf4d87..3f37e39 100644 --- a/src/Controller/MediaFileController.php +++ b/src/Controller/MediaFileController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFile; @@ -26,30 +20,28 @@ use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\File\UploadedFile; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; /** * MediaFile controller. - * - * @Route("/media_file") */ +#[Route(path: '/media_file')] class MediaFileController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all MediaFile entities. - * - * @Route("/", name="media_file_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'media_file_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:MediaFile e ORDER BY e.id'; $query = $em->createQuery($dql); - $mediaFiles = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $mediaFiles = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'mediaFiles' => $mediaFiles, @@ -63,12 +55,10 @@ public function indexAction(Request $request, EntityManagerInterface $em) { * App:MediaFile repository. Replace the fieldName with * something appropriate, and adjust the generated search.html.twig * template. - * - * @Route("/search", name="media_file_search", methods={"GET"}) - * - * @Template */ - public function searchAction(Request $request, MediaFileRepository $repo) { + #[Route(path: '/search', name: 'media_file_search', methods: ['GET'])] + #[Template] + public function search(Request $request, MediaFileRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->searchQuery($q); @@ -86,14 +76,10 @@ public function searchAction(Request $request, MediaFileRepository $repo) { /** * Full text search for MediaFile entities. - * - * @Route("/fulltext", name="media_file_fulltext", methods={"GET"}) - * - * @Template - * - * @return array */ - public function fulltextAction(Request $request, MediaFileRepository $repo) { + #[Route(path: '/fulltext', name: 'media_file_fulltext', methods: ['GET'])] + #[Template] + public function fulltext(Request $request, MediaFileRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -111,13 +97,11 @@ public function fulltextAction(Request $request, MediaFileRepository $repo) { /** * Creates a new MediaFile entity. - * - * @Route("/new", name="media_file_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em, ElementRepository $repo) { + #[Route(path: '/new', name: 'media_file_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em, ElementRepository $repo) : array|RedirectResponse { if ( ! $this->isGranted('ROLE_CONTENT_ADMIN')) { $this->addFlash('danger', 'You must login to access this page.'); @@ -153,12 +137,10 @@ public function newAction(Request $request, EntityManagerInterface $em, ElementR /** * Finds and displays a MediaFile entity. - * - * @Route("/{id}", name="media_file_show", methods={"GET"}) - * - * @Template */ - public function showAction(MediaFile $mediaFile, ElementRepository $repo) { + #[Route(path: '/{id}', name: 'media_file_show', methods: ['GET'])] + #[Template] + public function show(MediaFile $mediaFile, ElementRepository $repo) : array { return [ 'elements' => $repo->findAll(), 'mediaFile' => $mediaFile, @@ -167,36 +149,32 @@ public function showAction(MediaFile $mediaFile, ElementRepository $repo) { /** * Finds and displays a media file. - * - * @Route("/{id}/view", name="media_file_raw", methods={"GET"}) */ - public function mediaAction(MediaFile $mediaFile) { + #[Route(path: '/{id}/view', name: 'media_file_raw', methods: ['GET'])] + public function media(MediaFile $mediaFile) : BinaryFileResponse { return new BinaryFileResponse($mediaFile->getFile()); } /** * Finds and displays a media file. - * - * @Route("/{id}/tn", name="media_file_tn", methods={"GET"}) */ - public function thumbnailAction(MediaFile $mediaFile) { + #[Route(path: '/{id}/tn', name: 'media_file_tn', methods: ['GET'])] + public function thumbnail(MediaFile $mediaFile) : BinaryFileResponse { $tn = $mediaFile->getThumbnail(); - if ($tn) { - return new BinaryFileResponse($tn); + if ( ! $tn) { + throw new NotFoundHttpException('Cannot find thumbnail.'); } - throw new NotFoundHttpException('Cannot find thumbnail.'); + return new BinaryFileResponse($tn); } /** * Displays a form to edit an existing MediaFile entity. - * - * @Route("/{id}/edit", name="media_file_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, MediaFile $mediaFile, FileUploader $uploader, EntityManagerInterface $em, ElementRepository $repo) { + #[Route(path: '/{id}/edit', name: 'media_file_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, MediaFile $mediaFile, FileUploader $uploader, EntityManagerInterface $em, ElementRepository $repo) : array|RedirectResponse { if ( ! $this->isGranted('ROLE_CONTENT_ADMIN')) { $this->addFlash('danger', 'You must login to access this page.'); @@ -218,7 +196,7 @@ public function editAction(Request $request, MediaFile $mediaFile, FileUploader $editForm->handleRequest($request); if ($editForm->isSubmitted() && $editForm->isValid()) { - if (($upload = $editForm->get('newFile')->getData())) { + if ($upload = $editForm->get('newFile')->getData()) { $mediaFile->setFile($upload); $mediaFile->setOriginalName($mediaFile->getFile()->getClientOriginalName()); $mediaFile->preUpdate(); @@ -243,11 +221,10 @@ public function editAction(Request $request, MediaFile $mediaFile, FileUploader /** * Deletes a MediaFile entity. - * - * @Route("/{id}/delete", name="media_file_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, MediaFile $mediaFile, FileUploader $uploader, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'media_file_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(MediaFile $mediaFile, FileUploader $uploader, EntityManagerInterface $em) : RedirectResponse { if ( ! $this->isGranted('ROLE_CONTENT_ADMIN')) { $this->addFlash('danger', 'You must login to access this page.'); @@ -272,13 +249,11 @@ public function deleteAction(Request $request, MediaFile $mediaFile, FileUploade /** * Edit metadata for a media file. - * - * @Route("/{id}/metadata", name="media_file_metadata", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function metadataAction(Request $request, MediaFile $mediaFile, EntityManagerInterface $em, ElementRepository $repo) { + #[Route(path: '/{id}/metadata', name: 'media_file_metadata', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function metadata(Request $request, MediaFile $mediaFile, EntityManagerInterface $em, ElementRepository $repo) : array|RedirectResponse { if ( ! $this->isGranted('ROLE_CONTENT_ADMIN')) { $this->addFlash('danger', 'You must login to access this page.'); diff --git a/src/Controller/OrganizationController.php b/src/Controller/OrganizationController.php index 1d28e27..72f467f 100644 --- a/src/Controller/OrganizationController.php +++ b/src/Controller/OrganizationController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Organization; @@ -21,29 +15,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * Organization controller. - * - * @Route("/organization") */ +#[Route(path: '/organization')] class OrganizationController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Organization entities. - * - * @Route("/", name="organization_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'organization_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Organization e ORDER BY e.id'; $query = $em->createQuery($dql); - $organizations = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $organizations = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'organizations' => $organizations, @@ -52,14 +44,10 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Full text search for Organization entities. - * - * @Route("/search", name="organization_search", methods={"GET"}) - * - * @Template - * - * @return array */ - public function searchAction(Request $request, EntityManagerInterface $em, OrganizationRepository $repo) { + #[Route(path: '/search', name: 'organization_search', methods: ['GET'])] + #[Template] + public function search(Request $request, EntityManagerInterface $em, OrganizationRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -77,13 +65,11 @@ public function searchAction(Request $request, EntityManagerInterface $em, Organ /** * Creates a new Organization entity. - * - * @Route("/new", name="organization_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'organization_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $organization = new Organization(); $form = $this->createForm(OrganizationType::class, $organization); $form->handleRequest($request); @@ -105,12 +91,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Organization entity. - * - * @Route("/{id}", name="organization_show", methods={"GET"}) - * - * @Template */ - public function showAction(Organization $organization) { + #[Route(path: '/{id}', name: 'organization_show', methods: ['GET'])] + #[Template] + public function show(Organization $organization) : ?array { return [ 'organization' => $organization, ]; @@ -118,13 +102,11 @@ public function showAction(Organization $organization) { /** * Displays a form to edit an existing Organization entity. - * - * @Route("/{id}/edit", name="organization_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Organization $organization, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'organization_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Organization $organization, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(OrganizationType::class, $organization); $editForm->handleRequest($request); @@ -143,11 +125,10 @@ public function editAction(Request $request, Organization $organization, EntityM /** * Deletes a Organization entity. - * - * @Route("/{id}/delete", name="organization_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Organization $organization, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'organization_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Organization $organization, EntityManagerInterface $em) : RedirectResponse { $em->remove($organization); $em->flush(); $this->addFlash('success', 'The organization was deleted.'); @@ -155,13 +136,10 @@ public function deleteAction(Request $request, Organization $organization, Entit return $this->redirectToRoute('organization_index'); } - /** - * @Route("/{id}/project_contributions", name="organization_project_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function projectContributionsAction(Request $request, Organization $organization, EntityManagerInterface $em) { + #[Route(path: '/{id}/project_contributions', name: 'organization_project_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function projectContributions(Request $request, Organization $organization, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ProjectContributionsType::class, $organization, [ 'organization' => $organization, ]); @@ -180,13 +158,10 @@ public function projectContributionsAction(Request $request, Organization $organ ]; } - /** - * @Route("/{id}/artwork_contributions", name="organization_artwork_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function artworkContributionsAction(Request $request, Organization $organization, EntityManagerInterface $em) { + #[Route(path: '/{id}/artwork_contributions', name: 'organization_artwork_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function artworkContributions(Request $request, Organization $organization, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ArtworkContributionsType::class, $organization, [ 'organization' => $organization, ]); diff --git a/src/Controller/PersonController.php b/src/Controller/PersonController.php index b1bb420..866491b 100644 --- a/src/Controller/PersonController.php +++ b/src/Controller/PersonController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Person; @@ -23,42 +17,36 @@ 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\Routing\Annotation\Route; /** * Person controller. - * - * @Route("/person") */ +#[Route(path: '/person')] class PersonController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Person entities. - * - * @Route("/", name="person_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'person_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Person e ORDER BY e.sortableName'; $query = $em->createQuery($dql); - $people = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $people = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'people' => $people, ]; } - /** - * @Route("/typeahead", name="person_typeahead", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @return JsonResponse - */ - public function typeaheadAction(Request $request, PersonRepository $repo) { + #[Route(path: '/typeahead', name: 'person_typeahead', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function typeahead(Request $request, PersonRepository $repo) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -77,12 +65,10 @@ public function typeaheadAction(Request $request, PersonRepository $repo) { /** * Search for Person entities. - * - * @Route("/search", name="person_search", methods={"GET"}) - * - * @Template */ - public function searchAction(Request $request, PersonRepository $repo) { + #[Route(path: '/search', name: 'person_search', methods: ['GET'])] + #[Template] + public function search(Request $request, PersonRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->searchQuery($q); @@ -100,14 +86,10 @@ public function searchAction(Request $request, PersonRepository $repo) { /** * Full text search for Person entities. - * - * @Route("/fulltext", name="person_fulltext", methods={"GET"}) - * - * @Template - * - * @return array */ - public function fulltextAction(Request $request, PersonRepository $repo) { + #[Route(path: '/fulltext', name: 'person_fulltext', methods: ['GET'])] + #[Template] + public function fulltext(Request $request, PersonRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -125,13 +107,11 @@ public function fulltextAction(Request $request, PersonRepository $repo) { /** * Creates a new Person entity. - * - * @Route("/new", name="person_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'person_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $person = new Person(); $form = $this->createForm(PersonType::class, $person); $form->handleRequest($request); @@ -153,12 +133,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Person entity. - * - * @Route("/{id}", name="person_show", methods={"GET"}) - * - * @Template */ - public function showAction(Person $person) { + #[Route(path: '/{id}', name: 'person_show', methods: ['GET'])] + #[Template] + public function show(Person $person) : ?array { return [ 'person' => $person, ]; @@ -166,13 +144,11 @@ public function showAction(Person $person) { /** * Displays a form to edit an existing Person entity. - * - * @Route("/{id}/edit", name="person_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Person $person, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'person_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Person $person, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(PersonType::class, $person); $editForm->handleRequest($request); @@ -191,11 +167,10 @@ public function editAction(Request $request, Person $person, EntityManagerInterf /** * Deletes a Person entity. - * - * @Route("/{id}/delete", name="person_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Person $person, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'person_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Person $person, EntityManagerInterface $em) : RedirectResponse { $em->remove($person); $em->flush(); $this->addFlash('success', 'The person was deleted.'); @@ -203,13 +178,10 @@ public function deleteAction(Request $request, Person $person, EntityManagerInte return $this->redirectToRoute('person_index'); } - /** - * @Route("/{id}/add_media", name="person_add_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function addMediaAction(Request $request, Person $person, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/add_media', name: 'person_add_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function addMedia(Request $request, Person $person, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $q = $request->query->get('q'); if ($q) { $query = $repo->searchQuery($q); @@ -243,13 +215,10 @@ public function addMediaAction(Request $request, Person $person, EntityManagerIn ]; } - /** - * @Route("/{id}/remove_media", name="person_remove_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function removeMediaAction(Request $request, Person $person, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/remove_media', name: 'person_remove_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function removeMedia(Request $request, Person $person, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $results = $this->paginator->paginate($person->getMediaFiles(), $request->query->getInt('page', 1), 25); $removeId = $request->query->get('removeId'); @@ -274,13 +243,10 @@ public function removeMediaAction(Request $request, Person $person, EntityManage ]; } - /** - * @Route("/{id}/project_contributions", name="person_project_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function projectContributionsAction(Request $request, Person $person, EntityManagerInterface $em) { + #[Route(path: '/{id}/project_contributions', name: 'person_project_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function projectContributions(Request $request, Person $person, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ProjectContributionsType::class, $person, [ 'person' => $person, ]); @@ -299,13 +265,10 @@ public function projectContributionsAction(Request $request, Person $person, Ent ]; } - /** - * @Route("/{id}/artwork_contributions", name="person_artwork_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function artworkContributionsAction(Request $request, Person $person, EntityManagerInterface $em) { + #[Route(path: '/{id}/artwork_contributions', name: 'person_artwork_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function artworkContributions(Request $request, Person $person, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ArtworkContributionsType::class, $person, [ 'person' => $person, ]); diff --git a/src/Controller/ProjectCategoryController.php b/src/Controller/ProjectCategoryController.php index 73861cd..1f2fadd 100644 --- a/src/Controller/ProjectCategoryController.php +++ b/src/Controller/ProjectCategoryController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectCategory; @@ -18,29 +12,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * ProjectCategory controller. - * - * @Route("/project_category") */ +#[Route(path: '/project_category')] class ProjectCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ProjectCategory entities. - * - * @Route("/", name="project_category_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'project_category_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:ProjectCategory e ORDER BY e.id'; $query = $em->createQuery($dql); - $projectCategories = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $projectCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'projectCategories' => $projectCategories, @@ -49,13 +41,11 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Creates a new ProjectCategory entity. - * - * @Route("/new", name="project_category_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'project_category_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $projectCategory = new ProjectCategory(); $form = $this->createForm(ProjectCategoryType::class, $projectCategory); $form->handleRequest($request); @@ -77,12 +67,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a ProjectCategory entity. - * - * @Route("/{id}", name="project_category_show", methods={"GET"}) - * - * @Template */ - public function showAction(ProjectCategory $projectCategory) { + #[Route(path: '/{id}', name: 'project_category_show', methods: ['GET'])] + #[Template] + public function show(ProjectCategory $projectCategory) : array { return [ 'projectCategory' => $projectCategory, ]; @@ -90,13 +78,11 @@ public function showAction(ProjectCategory $projectCategory) { /** * Displays a form to edit an existing ProjectCategory entity. - * - * @Route("/{id}/edit", name="project_category_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, ProjectCategory $projectCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'project_category_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, ProjectCategory $projectCategory, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(ProjectCategoryType::class, $projectCategory); $editForm->handleRequest($request); @@ -115,11 +101,10 @@ public function editAction(Request $request, ProjectCategory $projectCategory, E /** * Deletes a ProjectCategory entity. - * - * @Route("/{id}/delete", name="project_category_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, ProjectCategory $projectCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'project_category_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(ProjectCategory $projectCategory, EntityManagerInterface $em) : RedirectResponse { $em->remove($projectCategory); $em->flush(); $this->addFlash('success', 'The projectCategory was deleted.'); diff --git a/src/Controller/ProjectContributionController.php b/src/Controller/ProjectContributionController.php index 51d5567..f20d51d 100644 --- a/src/Controller/ProjectContributionController.php +++ b/src/Controller/ProjectContributionController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Controller; use Doctrine\ORM\EntityManagerInterface; @@ -20,24 +14,21 @@ /** * ProjectContribution controller. - * - * @Route("/project_contribution") */ +#[Route(path: '/project_contribution')] class ProjectContributionController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ProjectContribution entities. - * - * @Route("/", name="project_contribution_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'project_contribution_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:ProjectContribution e ORDER BY e.id'; $query = $em->createQuery($dql); - $projectContributions = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $projectContributions = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'projectContributions' => $projectContributions, diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php index 56234e6..e045de5 100644 --- a/src/Controller/ProjectController.php +++ b/src/Controller/ProjectController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Project; @@ -21,46 +15,39 @@ use Nines\UtilBundle\Controller\PaginatorTrait; use Nines\UtilBundle\Services\Text; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; 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\Routing\Annotation\Route; /** * Project controller. - * - * @Route("/project") */ +#[Route(path: '/project')] class ProjectController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Project entities. - * - * @Route("/", name="project_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'project_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Project e ORDER BY e.id'; $query = $em->createQuery($dql); - $projects = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $projects = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'projects' => $projects, ]; } - /** - * @Security("is_granted('ROLE_CONTENT_ADMIN')") - * @Route("/typeahead", name="project_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeaheadAction(Request $request, ProjectRepository $repo) { + #[Route(path: '/typeahead', name: 'project_typeahead', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function typeahead(Request $request, ProjectRepository $repo) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -79,14 +66,10 @@ public function typeaheadAction(Request $request, ProjectRepository $repo) { /** * Full text search for Project entities. - * - * @Route("/fulltext", name="project_search", methods={"GET"}) - * - * @Template - * - * @return array */ - public function searchAction(Request $request, ProjectRepository $repo) { + #[Route(path: '/fulltext', name: 'project_search', methods: ['GET'])] + #[Template] + public function search(Request $request, ProjectRepository $repo) : array { $q = $request->query->get('q'); if ($q) { $query = $repo->fulltextQuery($q); @@ -104,13 +87,11 @@ public function searchAction(Request $request, ProjectRepository $repo) { /** * Creates a new Project entity. - * - * @Route("/new", name="project_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'project_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $project = new Project(); $form = $this->createForm(ProjectType::class, $project); $form->handleRequest($request); @@ -132,12 +113,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Project entity. - * - * @Route("/{id}", name="project_show", methods={"GET"}) - * - * @Template */ - public function showAction(Project $project) { + #[Route(path: '/{id}', name: 'project_show', methods: ['GET'])] + #[Template] + public function show(Project $project) : ?array { return [ 'project' => $project, ]; @@ -145,15 +124,11 @@ public function showAction(Project $project) { /** * Displays a form to edit an existing Project entity. - * - * @Route("/{id}/edit", name="project_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - * - * @param Text $text */ - public function editAction(Request $request, Project $project, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'project_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Project $project, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(ProjectType::class, $project); $editForm->handleRequest($request); @@ -172,11 +147,10 @@ public function editAction(Request $request, Project $project, EntityManagerInte /** * Deletes a Project entity. - * - * @Route("/{id}/delete", name="project_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Project $project, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'project_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Project $project, EntityManagerInterface $em) : RedirectResponse { $em->remove($project); $em->flush(); $this->addFlash('success', 'The project was deleted.'); @@ -184,13 +158,10 @@ public function deleteAction(Request $request, Project $project, EntityManagerIn return $this->redirectToRoute('project_index'); } - /** - * @Route("/{id}/add_media", name="project_add_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function addMediaAction(Request $request, Project $project, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/add_media', name: 'project_add_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function addMedia(Request $request, Project $project, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $q = $request->query->get('q'); if ($q) { @@ -225,13 +196,10 @@ public function addMediaAction(Request $request, Project $project, EntityManager ]; } - /** - * @Route("/{id}/remove_media", name="project_remove_media", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function removeMediaAction(Request $request, Project $project, EntityManagerInterface $em, MediaFileRepository $repo) { + #[Route(path: '/{id}/remove_media', name: 'project_remove_media', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function removeMedia(Request $request, Project $project, EntityManagerInterface $em, MediaFileRepository $repo) : array|RedirectResponse { $results = $this->paginator->paginate($project->getMediaFiles(), $request->query->getInt('page', 1), 25); $removeId = $request->query->get('removeId'); @@ -256,13 +224,10 @@ public function removeMediaAction(Request $request, Project $project, EntityMana ]; } - /** - * @Route("/{id}/contributions", name="project_contributions", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function contributionsAction(Request $request, Project $project, EntityManagerInterface $em) { + #[Route(path: '/{id}/contributions', name: 'project_contributions', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function contributions(Request $request, Project $project, EntityManagerInterface $em) : array { $form = $this->createForm(ContributionsType::class, $project, [ 'project' => $project, ]); @@ -280,13 +245,10 @@ public function contributionsAction(Request $request, Project $project, EntityMa ]; } - /** - * @Route("/{id}/artworks", name="project_artworks", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template - */ - public function artworksAction(Request $request, Project $project, EntityManagerInterface $em) { + #[Route(path: '/{id}/artworks', name: 'project_artworks', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function artworks(Request $request, Project $project, EntityManagerInterface $em) : array|RedirectResponse { $form = $this->createForm(ArtworksType::class, $project, [ 'project' => $project, ]); diff --git a/src/Controller/ProjectPageController.php b/src/Controller/ProjectPageController.php index 10adcf5..241b8bb 100644 --- a/src/Controller/ProjectPageController.php +++ b/src/Controller/ProjectPageController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Project; @@ -20,32 +14,33 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Routing\Requirement\Requirement; /** * ProjectPage controller. */ +#[Route(path: '/project/{projectId}/page', requirements: [ + 'projectId' => Requirement::DIGITS, +])] +#[ParamConverter('project', options: ['id' => 'projectId'])] class ProjectPageController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ProjectPage entities. - * - * @Route("/project/{projectId}/page", name="project_page_index", methods={"GET"}) - * @ParamConverter("project", class="App:Project", options={"id": "projectId"}) - * - * @Template - * - * @param Project $project */ - public function indexAction(Request $request, $project, EntityManagerInterface $em) { + #[Route(path: '', name: 'project_page_index', methods: ['GET'])] + #[Template] + public function index(Request $request, Project $project, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:ProjectPage e WHERE e.project = :project ORDER BY e.id'; $query = $em->createQuery($dql); $query->setParameter('project', $project); - $projectPages = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $projectPages = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'project' => $project, @@ -55,14 +50,11 @@ public function indexAction(Request $request, $project, EntityManagerInterface $ /** * Creates a new ProjectPage entity. - * - * @Route("/project/{projectId}/page/new", name="project_page_new", methods={"GET", "POST"}) - * @ParamConverter("project", class="App:Project", options={"id": "projectId"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, Project $project, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'project_page_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, Project $project, EntityManagerInterface $em) : array|RedirectResponse { $projectPage = new ProjectPage(); $projectPage->setProject($project); $form = $this->createForm(ProjectPageType::class, $projectPage); @@ -86,13 +78,10 @@ public function newAction(Request $request, Project $project, EntityManagerInter /** * Finds and displays a ProjectPage entity. - * - * @Route("/project/{projectId}/page/{id}", name="project_page_show", methods={"GET"}) - * @ParamConverter("project", class="App:Project", options={"id": "projectId"}) - * - * @Template */ - public function showAction(Project $project, ProjectPage $projectPage) { + #[Route(path: '/{id}', name: 'project_page_show', methods: ['GET'])] + #[Template] + public function show(Project $project, ProjectPage $projectPage) : array { if ($project->getId() !== $projectPage->getProject()->getId()) { throw new NotFoundHttpException(); } @@ -105,14 +94,11 @@ public function showAction(Project $project, ProjectPage $projectPage) { /** * Displays a form to edit an existing ProjectPage entity. - * - * @Route("/project/{projectId}/page/{id}/edit", name="project_page_edit", methods={"GET", "POST"}) - * @ParamConverter("project", class="App:Project", options={"id": "projectId"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Project $project, ProjectPage $projectPage, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'project_page_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Project $project, ProjectPage $projectPage, EntityManagerInterface $em) : array|RedirectResponse { if ($project->getId() !== $projectPage->getProject()->getId()) { throw new NotFoundHttpException(); } @@ -138,12 +124,10 @@ public function editAction(Request $request, Project $project, ProjectPage $proj /** * Deletes a ProjectPage entity. - * - * @Route("/project/{projectId}/page/{id}/delete", name="project_page_delete", methods={"GET"}) - * @ParamConverter("project", class="App:Project", options={"id": "projectId"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Project $project, ProjectPage $projectPage, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'project_page_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Project $project, ProjectPage $projectPage, EntityManagerInterface $em) : RedirectResponse { $em->remove($projectPage); $em->flush(); $this->addFlash('success', 'The projectPage was deleted.'); diff --git a/src/Controller/ProjectRoleController.php b/src/Controller/ProjectRoleController.php index 9e675d0..5f17bc6 100644 --- a/src/Controller/ProjectRoleController.php +++ b/src/Controller/ProjectRoleController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectRole; @@ -18,29 +12,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * ProjectRole controller. - * - * @Route("/project_role") */ +#[Route(path: '/project_role')] class ProjectRoleController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all ProjectRole entities. - * - * @Route("/", name="project_role_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'project_role_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:ProjectRole e ORDER BY e.id'; $query = $em->createQuery($dql); - $projectRoles = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $projectRoles = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'projectRoles' => $projectRoles, @@ -49,13 +41,11 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Creates a new ProjectRole entity. - * - * @Route("/new", name="project_role_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'project_role_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $projectRole = new ProjectRole(); $form = $this->createForm(ProjectRoleType::class, $projectRole); $form->handleRequest($request); @@ -77,12 +67,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a ProjectRole entity. - * - * @Route("/{id}", name="project_role_show", methods={"GET"}) - * - * @Template */ - public function showAction(ProjectRole $projectRole) { + #[Route(path: '/{id}', name: 'project_role_show', methods: ['GET'])] + #[Template] + public function show(ProjectRole $projectRole) : array { return [ 'projectRole' => $projectRole, ]; @@ -90,13 +78,11 @@ public function showAction(ProjectRole $projectRole) { /** * Displays a form to edit an existing ProjectRole entity. - * - * @Route("/{id}/edit", name="project_role_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, ProjectRole $projectRole, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'project_role_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, ProjectRole $projectRole, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm(ProjectRoleType::class, $projectRole); $editForm->handleRequest($request); @@ -115,11 +101,10 @@ public function editAction(Request $request, ProjectRole $projectRole, EntityMan /** * Deletes a ProjectRole entity. - * - * @Route("/{id}/delete", name="project_role_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, ProjectRole $projectRole, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'project_role_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(ProjectRole $projectRole, EntityManagerInterface $em) : RedirectResponse { $em->remove($projectRole); $em->flush(); $this->addFlash('success', 'The projectRole was deleted.'); diff --git a/src/Controller/VenueCategoryController.php b/src/Controller/VenueCategoryController.php index 709e18e..0894b28 100644 --- a/src/Controller/VenueCategoryController.php +++ b/src/Controller/VenueCategoryController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueCategory; @@ -17,29 +11,27 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; /** * VenueCategory controller. - * - * @Route("/venue_category") */ +#[Route(path: '/venue_category')] class VenueCategoryController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all VenueCategory entities. - * - * @Route("/", name="venue_category_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'venue_category_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:VenueCategory e ORDER BY e.id'; $query = $em->createQuery($dql); - $venueCategories = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $venueCategories = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'venueCategories' => $venueCategories, @@ -48,13 +40,11 @@ public function indexAction(Request $request, EntityManagerInterface $em) { /** * Creates a new VenueCategory entity. - * - * @Route("/new", name="venue_category_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'venue_category_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $venueCategory = new VenueCategory(); $form = $this->createForm('App\Form\VenueCategoryType', $venueCategory); $form->handleRequest($request); @@ -76,12 +66,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a VenueCategory entity. - * - * @Route("/{id}", name="venue_category_show", methods={"GET"}) - * - * @Template */ - public function showAction(VenueCategory $venueCategory) { + #[Route(path: '/{id}', name: 'venue_category_show', methods: ['GET'])] + #[Template] + public function show(VenueCategory $venueCategory) : array { return [ 'venueCategory' => $venueCategory, ]; @@ -89,13 +77,11 @@ public function showAction(VenueCategory $venueCategory) { /** * Displays a form to edit an existing VenueCategory entity. - * - * @Route("/{id}/edit", name="venue_category_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, VenueCategory $venueCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'venue_category_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, VenueCategory $venueCategory, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm('App\Form\VenueCategoryType', $venueCategory); $editForm->handleRequest($request); @@ -114,11 +100,10 @@ public function editAction(Request $request, VenueCategory $venueCategory, Entit /** * Deletes a VenueCategory entity. - * - * @Route("/{id}/delete", name="venue_category_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, VenueCategory $venueCategory, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'venue_category_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(VenueCategory $venueCategory, EntityManagerInterface $em) : RedirectResponse { $em->remove($venueCategory); $em->flush(); $this->addFlash('success', 'The venueCategory was deleted.'); diff --git a/src/Controller/VenueController.php b/src/Controller/VenueController.php index 459c504..0c9ab48 100644 --- a/src/Controller/VenueController.php +++ b/src/Controller/VenueController.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Venue; @@ -16,46 +10,39 @@ use Knp\Bundle\PaginatorBundle\Definition\PaginatorAwareInterface; use Nines\UtilBundle\Controller\PaginatorTrait; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; 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\Routing\Annotation\Route; /** * Venue controller. - * - * @Route("/venue") */ +#[Route(path: '/venue')] class VenueController extends AbstractController implements PaginatorAwareInterface { use PaginatorTrait; /** * Lists all Venue entities. - * - * @Route("/", name="venue_index", methods={"GET"}) - * - * @Template */ - public function indexAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/', name: 'venue_index', methods: ['GET'])] + #[Template] + public function index(Request $request, EntityManagerInterface $em) : array { $dql = 'SELECT e FROM App:Venue e ORDER BY e.id'; $query = $em->createQuery($dql); - $venues = $this->paginator->paginate($query, $request->query->getint('page', 1), 25); + $venues = $this->paginator->paginate($query, $request->query->getInt('page', 1), 25); return [ 'venues' => $venues, ]; } - /** - * @Security("is_granted('ROLE_CONTENT_ADMIN')") - * @Route("/typeahead", name="venue_typeahead", methods={"GET"}) - * - * @return JsonResponse - */ - public function typeaheadAction(Request $request, VenueRepository $repo) { + #[Route(path: '/typeahead', name: 'venue_typeahead', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function typeahead(Request $request, VenueRepository $repo) : JsonResponse { $q = $request->query->get('q'); if ( ! $q) { return new JsonResponse([]); @@ -74,13 +61,11 @@ public function typeaheadAction(Request $request, VenueRepository $repo) { /** * Creates a new Venue entity. - * - * @Route("/new", name="venue_new", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function newAction(Request $request, EntityManagerInterface $em) { + #[Route(path: '/new', name: 'venue_new', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function new(Request $request, EntityManagerInterface $em) : array|RedirectResponse { $venue = new Venue(); $form = $this->createForm('App\Form\VenueType', $venue); $form->handleRequest($request); @@ -102,12 +87,10 @@ public function newAction(Request $request, EntityManagerInterface $em) { /** * Finds and displays a Venue entity. - * - * @Route("/{id}", name="venue_show", methods={"GET"}) - * - * @Template */ - public function showAction(Venue $venue) { + #[Route(path: '/{id}', name: 'venue_show', methods: ['GET'])] + #[Template] + public function show(Venue $venue) : array { return [ 'venue' => $venue, ]; @@ -115,13 +98,11 @@ public function showAction(Venue $venue) { /** * Displays a form to edit an existing Venue entity. - * - * @Route("/{id}/edit", name="venue_edit", methods={"GET", "POST"}) - * @IsGranted("ROLE_CONTENT_ADMIN") - * - * @Template */ - public function editAction(Request $request, Venue $venue, EntityManagerInterface $em) { + #[Route(path: '/{id}/edit', name: 'venue_edit', methods: ['GET', 'POST'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + #[Template] + public function edit(Request $request, Venue $venue, EntityManagerInterface $em) : array|RedirectResponse { $editForm = $this->createForm('App\Form\VenueType', $venue); $editForm->handleRequest($request); @@ -140,11 +121,10 @@ public function editAction(Request $request, Venue $venue, EntityManagerInterfac /** * Deletes a Venue entity. - * - * @Route("/{id}/delete", name="venue_delete", methods={"GET"}) - * @IsGranted("ROLE_CONTENT_ADMIN") */ - public function deleteAction(Request $request, Venue $venue, EntityManagerInterface $em) { + #[Route(path: '/{id}/delete', name: 'venue_delete', methods: ['GET'])] + #[IsGranted('ROLE_CONTENT_ADMIN')] + public function delete(Venue $venue, EntityManagerInterface $em) : RedirectResponse { $em->remove($venue); $em->flush(); $this->addFlash('success', 'The venue was deleted.'); diff --git a/src/DataFixtures/ArtisticStatementFixtures.php b/src/DataFixtures/ArtisticStatementFixtures.php index 1ef2e5d..da8a87c 100644 --- a/src/DataFixtures/ArtisticStatementFixtures.php +++ b/src/DataFixtures/ArtisticStatementFixtures.php @@ -2,26 +2,22 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtisticStatement; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadArtisticStatement form. */ -class ArtisticStatementFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ArtisticStatementFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ArtisticStatement(); @@ -38,12 +34,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ ArtworkFixtures::class, PersonFixtures::class, diff --git a/src/DataFixtures/ArtworkCategoryFixtures.php b/src/DataFixtures/ArtworkCategoryFixtures.php index 3883bb0..0a0003a 100644 --- a/src/DataFixtures/ArtworkCategoryFixtures.php +++ b/src/DataFixtures/ArtworkCategoryFixtures.php @@ -2,25 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkCategory; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadArtworkCategory form. */ -class ArtworkCategoryFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class ArtworkCategoryFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ArtworkCategory(); diff --git a/src/DataFixtures/ArtworkContributionFixtures.php b/src/DataFixtures/ArtworkContributionFixtures.php index 23eae99..9a1737d 100644 --- a/src/DataFixtures/ArtworkContributionFixtures.php +++ b/src/DataFixtures/ArtworkContributionFixtures.php @@ -2,23 +2,19 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkContribution; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; -class ArtworkContributionFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ArtworkContributionFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ArtworkContribution(); @@ -34,12 +30,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ ArtworkFixtures::class, PersonFixtures::class, diff --git a/src/DataFixtures/ArtworkFixtures.php b/src/DataFixtures/ArtworkFixtures.php index 9152ad8..cf822f5 100644 --- a/src/DataFixtures/ArtworkFixtures.php +++ b/src/DataFixtures/ArtworkFixtures.php @@ -2,26 +2,22 @@ declare(strict_types=1); -/* - * (c) 2021 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\Artwork; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadArtwork form. */ -class ArtworkFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ArtworkFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Artwork(); @@ -38,12 +34,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ ArtworkCategoryFixtures::class, ]; diff --git a/src/DataFixtures/ArtworkRoleFixtures.php b/src/DataFixtures/ArtworkRoleFixtures.php index a815565..6cdb5f5 100644 --- a/src/DataFixtures/ArtworkRoleFixtures.php +++ b/src/DataFixtures/ArtworkRoleFixtures.php @@ -2,25 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkRole; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadArtworkRole form. */ -class ArtworkRoleFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class ArtworkRoleFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ArtworkRole(); diff --git a/src/DataFixtures/ElementFixtures.php b/src/DataFixtures/ElementFixtures.php new file mode 100644 index 0000000..6b18dba --- /dev/null +++ b/src/DataFixtures/ElementFixtures.php @@ -0,0 +1,144 @@ + 'dc_contributor', + 'label' => 'Contributor', + 'uri' => 'http://purl.org/dc/elements/1.1/contributor', + 'description' => 'An entity responsible for making contributions to the resource.', + 'comment' => 'Examples of a Contributor include a person, an organization, or a service. Typically, the name of a Contributor should be used to indicate the entity.', + ], + [ + 'name' => 'dc_coverage', + 'label' => 'Coverage', + 'uri' => 'http://purl.org/dc/elements/1.1/coverage', + 'description' => 'The spatial or temporal topic of the resource, the spatial applicability of the resource, or the jurisdiction under which the resource is relevant.', + 'comment' => 'Spatial topic and spatial applicability may be a named place or a location specified by its geographic coordinates. Temporal topic may be a named period, date, or date range. A jurisdiction may be a named administrative entity or a geographic place to which the resource applies. Recommended best practice is to use a controlled vocabulary such as the Thesaurus of Geographic Names [TGN]. Where appropriate, named places or time periods can be used in preference to numeric identifiers such as sets of coordinates or date ranges.', + ], + [ + 'name' => 'dc_creator', + 'label' => 'Creator', + 'uri' => 'http://purl.org/dc/elements/1.1/creator', + 'description' => 'An entity primarily responsible for making the resource.', + 'comment' => 'Examples of a Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity.', + ], + [ + 'name' => 'dc_date', + 'label' => 'Date', + 'uri' => 'http://purl.org/dc/elements/1.1/date', + 'description' => 'A point or period of time associated with an event in the lifecycle of the resource.', + 'comment' => 'Date may be used to express temporal information at any level of granularity. Recommended best practice is to use an encoding scheme, such as the W3CDTF profile of ISO 8601 [W3CDTF].', + ], + [ + 'name' => 'dc_description', + 'label' => 'Description', + 'uri' => 'http://purl.org/dc/elements/1.1/description', + 'description' => 'An account of the resource.', + 'comment' => 'Description may include but is not limited to: an abstract, a table of contents, a graphical representation, or a free-text account of the resource.', + ], + [ + 'name' => 'dc_format', + 'label' => 'Format', + 'uri' => 'http://purl.org/dc/elements/1.1/format', + 'description' => 'The file format, physical medium, or dimensions of the resource.', + 'comment' => 'Examples of dimensions include size and duration. Recommended best practice is to use a controlled vocabulary such as the list of Internet Media Types [MIME].', + ], + [ + 'name' => 'dc_identifier', + 'label' => 'Identifier', + 'uri' => 'http://purl.org/dc/elements/1.1/identifier', + 'description' => 'An unambiguous reference to the resource within a given context.', + 'comment' => 'Recommended best practice is to identify the resource by means of a string conforming to a formal identification system.', + ], + [ + 'name' => 'dc_language', + 'label' => 'Language', + 'uri' => 'http://purl.org/dc/elements/1.1/language', + 'description' => 'A language of the resource.', + 'comment' => 'Recommended best practice is to use a controlled vocabulary such as RFC 4646 [RFC4646].', + ], + [ + 'name' => 'dc_publisher', + 'label' => 'Publisher', + 'uri' => 'http://purl.org/dc/elements/1.1/publisher', + 'description' => 'An entity responsible for making the resource available.', + 'comment' => 'Examples of a Publisher include a person, an organization, or a service. Typically, the name of a Publisher should be used to indicate the entity.', + ], + [ + 'name' => 'dc_relation', + 'label' => 'Relation', + 'uri' => 'http://purl.org/dc/elements/1.1/relation', + 'description' => 'A related resource.', + 'comment' => 'Recommended best practice is to identify the related resource by means of a string conforming to a formal identification system.', + ], + [ + 'name' => 'dc_rights', + 'label' => 'Rights', + 'uri' => 'http://purl.org/dc/elements/1.1/rights', + 'description' => 'Information about rights held in and over the resource.', + 'comment' => 'Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights.', + ], + [ + 'name' => 'dc_source', + 'label' => 'Source', + 'uri' => 'http://purl.org/dc/elements/1.1/source', + 'description' => 'A related resource from which the described resource is derived.', + 'comment' => 'The described resource may be derived from the related resource in whole or in part. Recommended best practice is to identify the related resource by means of a string conforming to a formal identification system.', + ], + [ + 'name' => 'dc_subject', + 'label' => 'Subject', + 'uri' => 'http://purl.org/dc/elements/1.1/subject', + 'description' => 'The topic of the resource.', + 'comment' => '', + ], + [ + 'name' => 'dc_title', + 'label' => 'Title', + 'uri' => 'http://purl.org/dc/elements/1.1/title', + 'description' => 'A name given to the resource.', + 'comment' => 'Typically, a Title will be a name by which the resource is formally known.', + ], + [ + 'name' => 'dc_type', + 'label' => 'Type', + 'uri' => 'http://purl.org/dc/elements/1.1/type', + 'description' => 'The nature or genre of the resource.', + 'comment' => 'Recommended best practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [DCMITYPE]. To describe the file format, physical medium, or dimensions of the resource, use the Format element.', + ], + ]; + } + + public function load(ObjectManager $em) : void { + foreach ($this->getData() as $data) { + $element = new Element(); + $element->setName($data['name']); + $element->setLabel($data['label']); + $element->setUri($data['uri']); + $element->setDescription($data['description']); + $element->setComment($data['comment']); + $em->persist($element); + $this->setReference($data['name'], $element); + } + $em->flush(); + } +} + diff --git a/src/DataFixtures/LocationFixtures.php b/src/DataFixtures/LocationFixtures.php index 16b2855..9591b0a 100644 --- a/src/DataFixtures/LocationFixtures.php +++ b/src/DataFixtures/LocationFixtures.php @@ -2,25 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\Location; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadLocation form. */ -class LocationFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class LocationFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Location(); diff --git a/src/DataFixtures/MediaFileCategoryFixtures.php b/src/DataFixtures/MediaFileCategoryFixtures.php index 0495c1c..4168c06 100644 --- a/src/DataFixtures/MediaFileCategoryFixtures.php +++ b/src/DataFixtures/MediaFileCategoryFixtures.php @@ -2,25 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileCategory; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadMediaFileCategory form. */ -class MediaFileCategoryFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class MediaFileCategoryFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new MediaFileCategory(); diff --git a/src/DataFixtures/MediaFileFieldFixtures.php b/src/DataFixtures/MediaFileFieldFixtures.php index 5a6b4ed..97f3441 100644 --- a/src/DataFixtures/MediaFileFieldFixtures.php +++ b/src/DataFixtures/MediaFileFieldFixtures.php @@ -2,26 +2,23 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileField; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadMediaFileField form. */ -class MediaFileFieldFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class MediaFileFieldFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + + public static function getGroups() : array { + return ['dev', 'test']; + } + public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new MediaFileField(); @@ -36,12 +33,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ MediaFileFixtures::class, ElementFixtures::class, diff --git a/src/DataFixtures/MediaFileFixtures.php b/src/DataFixtures/MediaFileFixtures.php index 2fd358b..7850534 100644 --- a/src/DataFixtures/MediaFileFixtures.php +++ b/src/DataFixtures/MediaFileFixtures.php @@ -2,32 +2,28 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFile; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; +use Symfony\Component\HttpFoundation\File\File; /** * LoadMediaFile form. */ -class MediaFileFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class MediaFileFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new MediaFile(); - $fixture->setFile(new \Symfony\Component\HttpFoundation\File\File(__FILE__, false)); + $fixture->setFile(new File(__FILE__, false)); $fixture->setFilename('a/abc.php'); - $fixture->setHasThumbnail('HasThumbnail ' . $i); + $fixture->setHasThumbnail(true); $fixture->setOriginalName('OriginalName ' . $i); $fixture->setMediafilecategory($this->getReference('mediafilecategory.1')); @@ -38,12 +34,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ MediaFileCategoryFixtures::class, ]; diff --git a/src/DataFixtures/OrganizationFixtures.php b/src/DataFixtures/OrganizationFixtures.php index be6488b..ce1cb30 100644 --- a/src/DataFixtures/OrganizationFixtures.php +++ b/src/DataFixtures/OrganizationFixtures.php @@ -2,26 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\Organization; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadOrganization form. */ -class OrganizationFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class OrganizationFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Organization(); @@ -41,12 +36,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ LocationFixtures::class, ]; diff --git a/src/DataFixtures/PersonFixtures.php b/src/DataFixtures/PersonFixtures.php index 61dee7b..9654088 100644 --- a/src/DataFixtures/PersonFixtures.php +++ b/src/DataFixtures/PersonFixtures.php @@ -2,25 +2,20 @@ declare(strict_types=1); -/* - * (c) 2021 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\Person; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadPerson form. */ -class PersonFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class PersonFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Person(); diff --git a/src/DataFixtures/ProjectCategoryFixtures.php b/src/DataFixtures/ProjectCategoryFixtures.php index 2c58d0e..924f310 100644 --- a/src/DataFixtures/ProjectCategoryFixtures.php +++ b/src/DataFixtures/ProjectCategoryFixtures.php @@ -2,25 +2,20 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectCategory; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadProjectCategory form. */ -class ProjectCategoryFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class ProjectCategoryFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ProjectCategory(); diff --git a/src/DataFixtures/ProjectContributionFixtures.php b/src/DataFixtures/ProjectContributionFixtures.php index e144d31..509e241 100644 --- a/src/DataFixtures/ProjectContributionFixtures.php +++ b/src/DataFixtures/ProjectContributionFixtures.php @@ -2,26 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectContribution; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadProjectContribution form. */ -class ProjectContributionFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ProjectContributionFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ProjectContribution(); @@ -37,12 +32,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ PersonFixtures::class, ProjectFixtures::class, diff --git a/src/DataFixtures/ProjectFixtures.php b/src/DataFixtures/ProjectFixtures.php index c60cbe8..968fcdd 100644 --- a/src/DataFixtures/ProjectFixtures.php +++ b/src/DataFixtures/ProjectFixtures.php @@ -2,27 +2,22 @@ declare(strict_types=1); -/* - * (c) 2021 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\Project; use DateTimeImmutable; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadProject form. */ -class ProjectFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ProjectFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Project(); @@ -42,12 +37,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ ProjectCategoryFixtures::class, VenueFixtures::class, diff --git a/src/DataFixtures/ProjectPageFixtures.php b/src/DataFixtures/ProjectPageFixtures.php index 5ad64d3..b633559 100644 --- a/src/DataFixtures/ProjectPageFixtures.php +++ b/src/DataFixtures/ProjectPageFixtures.php @@ -2,26 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectPage; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadProjectPage form. */ -class ProjectPageFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class ProjectPageFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ProjectPage(); @@ -37,12 +32,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ ProjectFixtures::class, ]; diff --git a/src/DataFixtures/ProjectRoleFixtures.php b/src/DataFixtures/ProjectRoleFixtures.php index 22ab6c1..400c048 100644 --- a/src/DataFixtures/ProjectRoleFixtures.php +++ b/src/DataFixtures/ProjectRoleFixtures.php @@ -2,25 +2,20 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectRole; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadProjectRole form. */ -class ProjectRoleFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class ProjectRoleFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new ProjectRole(); diff --git a/src/DataFixtures/VenueCategoryFixtures.php b/src/DataFixtures/VenueCategoryFixtures.php index 97dee38..6131777 100644 --- a/src/DataFixtures/VenueCategoryFixtures.php +++ b/src/DataFixtures/VenueCategoryFixtures.php @@ -2,25 +2,20 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueCategory; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; /** * LoadVenueCategory form. */ -class VenueCategoryFixtures extends Fixture { - /** - * {@inheritdoc} - */ +class VenueCategoryFixtures extends Fixture implements FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new VenueCategory(); diff --git a/src/DataFixtures/VenueFixtures.php b/src/DataFixtures/VenueFixtures.php index a37551e..277ce5c 100644 --- a/src/DataFixtures/VenueFixtures.php +++ b/src/DataFixtures/VenueFixtures.php @@ -2,26 +2,21 @@ declare(strict_types=1); -/* - * (c) 2021 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\Venue; use Doctrine\Bundle\FixturesBundle\Fixture; +use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface; use Doctrine\Common\DataFixtures\DependentFixtureInterface; use Doctrine\Persistence\ObjectManager; /** * LoadVenue form. */ -class VenueFixtures extends Fixture implements DependentFixtureInterface { - /** - * {@inheritdoc} - */ +class VenueFixtures extends Fixture implements DependentFixtureInterface, FixtureGroupInterface { + public static function getGroups() : array { + return ['dev', 'test']; + } public function load(ObjectManager $em) : void { for ($i = 0; $i < 4; $i++) { $fixture = new Venue(); @@ -39,12 +34,9 @@ public function load(ObjectManager $em) : void { $em->flush(); } - /** - * {@inheritdoc} - */ public function getDependencies() { // add dependencies here, or remove this - // function and "implements DependentFixtureInterface" above + // function and "implements DependentFixtureInterface, FixtureGroupInterface" above return [ LocationFixtures::class, VenueCategoryFixtures::class, diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Entity/AbstractField.php b/src/Entity/AbstractField.php new file mode 100644 index 0000000..702f273 --- /dev/null +++ b/src/Entity/AbstractField.php @@ -0,0 +1,47 @@ +value; + } + + public function setValue(?string $value) : self { + $this->value = $value; + + return $this; + } + + public function getValue() : ?string { + return $this->value; + } + + public function setElement(?Element $element = null) : self { + $this->element = $element; + + return $this; + } + + public function getElement() : ?Element { + return $this->element; + } +} diff --git a/src/Entity/ArtisticStatement.php b/src/Entity/ArtisticStatement.php index 98fea1a..01bec31 100644 --- a/src/Entity/ArtisticStatement.php +++ b/src/Entity/ArtisticStatement.php @@ -2,51 +2,35 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtisticStatementRepository; use Doctrine\Common\Collections\ArrayCollection; -use Doctrine\Common\Collections\Collection as Collection2; +use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; use Nines\UtilBundle\Entity\ContentEntityInterface; use Nines\UtilBundle\Entity\ContentExcerptTrait; -use Symfony\Component\Validator\Constraints\Collection; - -/** - * ArtisticStatement. - * - * @ORM\Table(name="artistic_statement", indexes={ - * @ORM\Index(columns={"title", "excerpt", "content"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\ArtisticStatementRepository") - */ + +#[ORM\Entity(repositoryClass: ArtisticStatementRepository::class)] +#[ORM\Table(name: 'artistic_statement')] +#[ORM\Index(columns: ['title', 'excerpt', 'content'], flags: ['fulltext'])] class ArtisticStatement extends AbstractEntity implements ContentEntityInterface { use ContentExcerptTrait; - /** - * @var string - * @ORM\Column(type="string") - */ - private $title; + #[ORM\Column(type: Types::STRING)] + private ?string $title = null; - /** - * @var Artwork - * @ORM\ManyToOne(targetEntity="Artwork", inversedBy="artisticStatements") - */ - private $artwork; + #[ORM\ManyToOne(targetEntity: Artwork::class, inversedBy: 'artisticStatements')] + private ?Artwork $artwork = null; /** * @var Collection|Person[] - * @ORM\ManyToMany(targetEntity="Person", inversedBy="artisticStatements") - * @ORM\JoinTable(name="person_artistic_statements") */ - private $people; + #[ORM\ManyToMany(targetEntity: Person::class, inversedBy: 'artisticStatements')] + #[ORM\JoinTable(name: 'person_artistic_statements')] + private Collection $people; public function __construct() { parent::__construct(); @@ -57,74 +41,37 @@ public function __toString() : string { return $this->title; } - /** - * Set title. - * - * @param string $title - * - * @return ArtisticStatement - */ - public function setTitle($title) { + public function setTitle(?string $title) : self { $this->title = $title; return $this; } - /** - * Get title. - * - * @return string - */ - public function getTitle() { + public function getTitle() : ?string { return $this->title; } - /** - * Set artwork. - * - * @param Artwork $artwork - * - * @return ArtisticStatement - */ - public function setArtwork(?Artwork $artwork = null) { + public function setArtwork(?Artwork $artwork = null) : self { $this->artwork = $artwork; return $this; } - /** - * Get artwork. - * - * @return Artwork - */ - public function getArtwork() { + public function getArtwork() : ?Artwork { return $this->artwork; } - /** - * Add person. - * - * @return ArtisticStatement - */ - public function addPerson(Person $person) { + public function addPerson(Person $person) : self { $this->people[] = $person; return $this; } - /** - * Remove person. - */ public function removePerson(Person $person) : void { $this->people->removeElement($person); } - /** - * Get people. - * - * @return Collection2 - */ - public function getPeople() { + public function getPeople() : Collection { return $this->people; } } diff --git a/src/Entity/Artwork.php b/src/Entity/Artwork.php index d9deee9..2ab1f87 100644 --- a/src/Entity/Artwork.php +++ b/src/Entity/Artwork.php @@ -2,80 +2,59 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; use Nines\UtilBundle\Entity\ContentEntityInterface; use Nines\UtilBundle\Entity\ContentExcerptTrait; -/** - * Artwork. - * - * @ORM\Table(name="artwork", indexes={ - * @ORM\Index(columns={"title", "content", "materials", "copyright"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\ArtworkRepository") - */ +#[ORM\Entity(repositoryClass: ArtworkRepository::class)] +#[ORM\Table(name: 'artwork')] +#[ORM\Index(columns: ['title', 'content', 'materials', 'copyright'], flags: ['fulltext'])] class Artwork extends AbstractEntity implements ContentEntityInterface { use ContentExcerptTrait; - /** - * @var string - * @ORM\Column(type="string") - */ - private $title; + #[ORM\Column(type: Types::STRING)] + private ?string $title = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $materials; + #[ORM\Column(type: Types::TEXT)] + private ?string $materials = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $copyright; + #[ORM\Column(type: Types::TEXT)] + private ?string $copyright = null; - /** - * @var ArtworkCategory - * @ORM\ManyToOne(targetEntity="ArtworkCategory", inversedBy="artworks") - */ - private $artworkCategory; + #[ORM\ManyToOne(targetEntity: ArtworkCategory::class, inversedBy: 'artworks')] + private ?ArtworkCategory $artworkCategory = null; /** * @var ArtworkContribution[]|Collection - * @ORM\OneToMany(targetEntity="ArtworkContribution", mappedBy="artwork", cascade={"persist"}, orphanRemoval=true) */ - private $contributions; + #[ORM\OneToMany(targetEntity: ArtworkContribution::class, mappedBy: 'artwork', cascade: ['persist'], orphanRemoval: true)] + private Collection $contributions; /** * @var ArtisticStatement[]|Collection - * @ORM\OneToMany(targetEntity="ArtisticStatement", mappedBy="artwork") */ - private $artisticStatements; + #[ORM\OneToMany(targetEntity: ArtisticStatement::class, mappedBy: 'artwork')] + private Collection $artisticStatements; /** * @var Collection|MediaFile[] - * @ORM\ManyToMany(targetEntity="MediaFile", inversedBy="artworks") - * @ORM\JoinTable(name="artwork_mediafiles") */ - private $mediaFiles; + #[ORM\ManyToMany(targetEntity: MediaFile::class, inversedBy: 'artworks')] + #[ORM\JoinTable(name: 'artwork_mediafiles')] + private Collection $mediaFiles; /** * @var Collection|Project[] - * @ORM\ManyToMany(targetEntity="Project", mappedBy="artworks") */ - private $projects; + #[ORM\ManyToMany(targetEntity: Project::class, mappedBy: 'artworks')] + private Collection $projects; public function __construct() { parent::__construct(); @@ -89,96 +68,47 @@ public function __toString() : string { return $this->title; } - /** - * Set title. - * - * @param string $title - * - * @return Artwork - */ - public function setTitle($title) { + public function setTitle(?string $title) : self { $this->title = $title; return $this; } - /** - * Get title. - * - * @return string - */ - public function getTitle() { + public function getTitle() : ?string { return $this->title; } - /** - * Set materials. - * - * @param string $materials - * - * @return Artwork - */ - public function setMaterials($materials) { + public function setMaterials(?string $materials) : self { $this->materials = $materials; return $this; } - /** - * Get materials. - * - * @return string - */ - public function getMaterials() { + public function getMaterials() : ?string { return $this->materials; } - /** - * Set copyright. - * - * @param string $copyright - * - * @return Artwork - */ - public function setCopyright($copyright) { + public function setCopyright(?string $copyright) : self { $this->copyright = $copyright; return $this; } - /** - * Get copyright. - * - * @return string - */ - public function getCopyright() { + public function getCopyright() : ?string { return $this->copyright; } - /** - * Add contribution. - * - * @return Artwork - */ - public function addContribution(ArtworkContribution $contribution) { + public function addContribution(ArtworkContribution $contribution) : self { $this->contributions[] = $contribution; return $this; } - /** - * Remove contribution. - */ public function removeContribution(ArtworkContribution $contribution) : void { $this->contributions->removeElement($contribution); } - /** - * Get contributions. - * - * @return Collection - */ - public function getContributions() { + public function getContributions() : Collection { return $this->contributions; } @@ -186,12 +116,7 @@ public function hasMediaFile(MediaFile $mediaFile) { return $this->mediaFiles->contains($mediaFile); } - /** - * Add mediaFile. - * - * @return Artwork - */ - public function addMediaFile(MediaFile $mediaFile) { + public function addMediaFile(MediaFile $mediaFile) : self { if ( ! $this->mediaFiles->contains($mediaFile)) { $this->mediaFiles[] = $mediaFile; } @@ -199,105 +124,49 @@ public function addMediaFile(MediaFile $mediaFile) { return $this; } - /** - * Remove mediaFile. - */ public function removeMediaFile(MediaFile $mediaFile) : void { $this->mediaFiles->removeElement($mediaFile); } - /** - * Get mediaFiles. - * - * @return Collection - */ - public function getMediaFiles() { + public function getMediaFiles() : Collection { return $this->mediaFiles; } - /** - * Add project. - * - * @param \App\Entity\Project $project - * - * @return Artwork - */ - public function addProject(Project $project) { + public function addProject(Project $project) : self { $this->projects[] = $project; return $this; } - /** - * Remove project. - * - * @param \App\Entity\Project $project - */ public function removeProject(Project $project) : void { $this->projects->removeElement($project); } - /** - * Get projects. - * - * @return \Doctrine\Common\Collections\Collection - */ - public function getProjects() { + public function getProjects() : Collection { return $this->projects; } - /** - * Set artworkCategory. - * - * @param \App\Entity\ArtworkCategory $artworkCategory - * - * @return Artwork - */ - public function setArtworkCategory(?ArtworkCategory $artworkCategory = null) { + public function setArtworkCategory(?ArtworkCategory $artworkCategory = null) : self { $this->artworkCategory = $artworkCategory; return $this; } - /** - * Get artworkCategory. - * - * @return \App\Entity\ArtworkCategory - */ - public function getArtworkCategory() { + public function getArtworkCategory() : ?ArtworkCategory { return $this->artworkCategory; } - /** - * Add artisticStatement. - * - * @param \App\Entity\ArtisticStatement $artisticStatement - * - * @return Artwork - */ - public function addArtisticStatement(ArtisticStatement $artisticStatement) { + public function addArtisticStatement(ArtisticStatement $artisticStatement) : self { $this->artisticStatements[] = $artisticStatement; return $this; } - /** - * Remove artisticStatement. - * - * @param \App\Entity\ArtisticStatement $artisticStatement - * - * @return bool TRUE if this collection contained the specified element, FALSE otherwise. - */ - public function removeArtisticStatement(ArtisticStatement $artisticStatement) { + public function removeArtisticStatement(ArtisticStatement $artisticStatement) : bool { return $this->artisticStatements->removeElement($artisticStatement); } - /** - * Get artisticStatements. - * - * @return \Doctrine\Common\Collections\Collection - */ - public function getArtisticStatements() { + public function getArtisticStatements() : Collection { return $this->artisticStatements; } } diff --git a/src/Entity/ArtworkCategory.php b/src/Entity/ArtworkCategory.php index 6b9bcaa..c784d35 100644 --- a/src/Entity/ArtworkCategory.php +++ b/src/Entity/ArtworkCategory.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkCategoryRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * ArtworkCategory. - * - * @ORM\Table(name="artwork_category") - * @ORM\Entity(repositoryClass="App\Repository\ArtworkCategoryRepository") */ +#[ORM\Entity(repositoryClass: ArtworkCategoryRepository::class)] +#[ORM\Table(name: 'artwork_category')] class ArtworkCategory extends AbstractTerm { /** * @var Artwork[]|Collection - * @ORM\OneToMany(targetEntity="Artwork", mappedBy="artworkCategory") */ - private $artworks; + #[ORM\OneToMany(targetEntity: Artwork::class, mappedBy: 'artworkCategory')] + private Collection $artworks; public function __construct() { parent::__construct(); $this->artworks = new ArrayCollection(); } - /** - * Add artwork. - * - * @return ArtworkCategory - */ - public function addArtwork(Artwork $artwork) { + public function addArtwork(Artwork $artwork) : self { $this->artworks[] = $artwork; return $this; } - /** - * Remove artwork. - */ public function removeArtwork(Artwork $artwork) : void { $this->artworks->removeElement($artwork); } - /** - * Get artworks. - * - * @return Collection - */ - public function getArtworks() { + public function getArtworks() : Collection { return $this->artworks; } } diff --git a/src/Entity/ArtworkContribution.php b/src/Entity/ArtworkContribution.php index 7ad6634..e702071 100644 --- a/src/Entity/ArtworkContribution.php +++ b/src/Entity/ArtworkContribution.php @@ -2,139 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkContributionRepository; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; /** * ArtworkContribution. - * - * @ORM\Table(name="artwork_contribution") - * @ORM\Entity(repositoryClass="App\Repository\ArtworkContributionRepository") */ +#[ORM\Entity(repositoryClass: ArtworkContributionRepository::class)] +#[ORM\Table(name: 'artwork_contribution')] class ArtworkContribution extends AbstractEntity { - /** - * @var Artwork - * @ORM\ManyToOne(targetEntity="Artwork", inversedBy="contributions") - * @ORM\JoinColumn(nullable=false) - */ - private $artwork; - - /** - * @var Person - * @ORM\ManyToOne(targetEntity="Person", inversedBy="artworkContributions") - */ - private $person; - - /** - * @var Person - * @ORM\ManyToOne(targetEntity="Organization", inversedBy="artworkContributions") - */ - private $organization; - - /** - * @var ArtworkRole - * @ORM\ManyToOne(targetEntity="ArtworkRole", inversedBy="contributions") - * @ORM\JoinColumn(nullable=false) - */ - private $artworkRole; + #[ORM\ManyToOne(targetEntity: Artwork::class, inversedBy: 'contributions')] + #[ORM\JoinColumn(nullable: false)] + private ?Artwork $artwork = null; + + #[ORM\ManyToOne(targetEntity: Person::class, inversedBy: 'artworkContributions')] + private ?Person $person = null; + + #[ORM\ManyToOne(targetEntity: Organization::class, inversedBy: 'artworkContributions')] + private ?Organization $organization = null; + + #[ORM\ManyToOne(targetEntity: ArtworkRole::class, inversedBy: 'contributions')] + #[ORM\JoinColumn(nullable: false)] + private ?ArtworkRole $artworkRole = null; public function __toString() : string { return implode(':', [$this->artwork, $this->person, $this->organization, $this->artworkRole]); } - /** - * Set artwork. - * - * @param Artwork $artwork - * - * @return ArtworkContribution - */ - public function setArtwork(?Artwork $artwork = null) { + public function setArtwork(?Artwork $artwork = null) : self { $this->artwork = $artwork; return $this; } - /** - * Get artwork. - * - * @return Artwork - */ - public function getArtwork() { + public function getArtwork() : ?Artwork { return $this->artwork; } - /** - * Set person. - * - * @param Person $person - * - * @return ArtworkContribution - */ - public function setPerson(?Person $person = null) { + public function setPerson(?Person $person = null) : self { $this->person = $person; return $this; } - /** - * Get person. - * - * @return Person - */ - public function getPerson() { + public function getPerson() : ?Person { return $this->person; } - /** - * Set organization. - * - * @param Organization $organization - * - * @return ArtworkContribution - */ - public function setOrganization(?Organization $organization = null) { + public function setOrganization(?Organization $organization = null) : self { $this->organization = $organization; return $this; } - /** - * Get organization. - * - * @return Organization - */ - public function getOrganization() { + public function getOrganization() : ?Organization { return $this->organization; } - /** - * Set artworkRole. - * - * @param ArtworkRole $artworkRole - * - * @return ArtworkContribution - */ - public function setArtworkRole(?ArtworkRole $artworkRole = null) { + public function setArtworkRole(?ArtworkRole $artworkRole = null) : self { $this->artworkRole = $artworkRole; return $this; } - /** - * Get artworkRole. - * - * @return ArtworkRole - */ - public function getArtworkRole() { + public function getArtworkRole() : ?ArtworkRole { return $this->artworkRole; } } diff --git a/src/Entity/ArtworkRole.php b/src/Entity/ArtworkRole.php index 60f6337..bb38328 100644 --- a/src/Entity/ArtworkRole.php +++ b/src/Entity/ArtworkRole.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkRoleRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * ArtworkRole. - * - * @ORM\Table(name="artwork_role") - * @ORM\Entity(repositoryClass="App\Repository\ArtworkRoleRepository") */ +#[ORM\Entity(repositoryClass: ArtworkRoleRepository::class)] +#[ORM\Table(name: 'artwork_role')] class ArtworkRole extends AbstractTerm { /** * @var ArtworkContribution[]|Collection - * @ORM\OneToMany(targetEntity="ArtworkContribution", mappedBy="artworkRole") */ - private $contributions; + #[ORM\OneToMany(targetEntity: ArtworkContribution::class, mappedBy: 'artworkRole')] + private Collection $contributions; public function __construct() { parent::__construct(); $this->contributions = new ArrayCollection(); } - /** - * Add contribution. - * - * @return ArtworkRole - */ - public function addContribution(ArtworkContribution $contribution) { + public function addContribution(ArtworkContribution $contribution) : self { $this->contributions[] = $contribution; return $this; } - /** - * Remove contribution. - */ public function removeContribution(ArtworkContribution $contribution) : void { $this->contributions->removeElement($contribution); } - /** - * Get contributions. - * - * @return Collection - */ - public function getContributions() { + public function getContributions() : Collection { return $this->contributions; } } diff --git a/src/Entity/Location.php b/src/Entity/Location.php index c4ace30..bab8df8 100644 --- a/src/Entity/Location.php +++ b/src/Entity/Location.php @@ -2,185 +2,105 @@ declare(strict_types=1); -/* - * (c) 2021 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\LocationRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * Location. - * - * @ORM\Table(name="location", indexes={ - * @ORM\Index(columns={"city", "region", "country"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\LocationRepository") - */ +#[ORM\Entity(repositoryClass: LocationRepository::class)] +#[ORM\Table(name: 'location')] +#[ORM\Index(columns: ['city', 'region', 'country'], flags: ['fulltext'])] class Location extends AbstractEntity { - /** - * @var string - * @ORM\Column(type="string") - */ - private $city; + #[ORM\Column(type: Types::STRING)] + private ?string $city = null; - /** - * @var string - * @ORM\Column(type="string") - */ - private $region; + #[ORM\Column(type: Types::STRING)] + private ?string $region = null; - /** - * @var string - * @ORM\Column(type="string") - */ - private $country; + #[ORM\Column(type: Types::STRING)] + private ?string $country = null; /** * @var Collection|Venue[] - * @ORM\OneToMany(targetEntity="Venue", mappedBy="location") */ - private $venues; + #[ORM\OneToMany(targetEntity: Venue::class, mappedBy: 'location')] + private Collection $venues; /** * @var Collection|Organization[] - * @ORM\OneToMany(targetEntity="Organization", mappedBy="location") */ - private $organizations; + #[ORM\OneToMany(targetEntity: Organization::class, mappedBy: 'location')] + private Collection $organizations; public function __construct() { + $this->venues = new ArrayCollection(); + $this->organizations = new ArrayCollection(); parent::__construct(); - $this->artworks = new ArrayCollection(); - $this->projects = new ArrayCollection(); } public function __toString() : string { return $this->city; } - /** - * Set city. - * - * @param string $city - * - * @return Location - */ - public function setCity($city) { + public function setCity(?string $city) : self { $this->city = $city; return $this; } - /** - * Get city. - * - * @return string - */ - public function getCity() { + public function getCity() : ?string { return $this->city; } - /** - * Set region. - * - * @param string $region - * - * @return Location - */ - public function setRegion($region) { + public function setRegion(?string $region) : self { $this->region = $region; return $this; } - /** - * Get region. - * - * @return string - */ - public function getRegion() { + public function getRegion() : ?string { return $this->region; } - /** - * Set country. - * - * @param string $country - * - * @return Location - */ - public function setCountry($country) { + public function setCountry(?string $country) : self { $this->country = $country; return $this; } - /** - * Get country. - * - * @return string - */ - public function getCountry() { + public function getCountry() : ?string { return $this->country; } - /** - * Add venue. - * - * @return Location - */ - public function addVenue(Venue $venue) { + public function addVenue(Venue $venue) : self { $this->venues[] = $venue; return $this; } - /** - * Remove venue. - */ public function removeVenue(Venue $venue) : void { $this->venues->removeElement($venue); } - /** - * Get venues. - * - * @return Collection - */ - public function getVenues() { + public function getVenues() : Collection { return $this->venues; } - /** - * Add organization. - * - * @return Location - */ - public function addOrganization(Organization $organization) { + public function addOrganization(Organization $organization) : self { $this->organizations[] = $organization; return $this; } - /** - * Remove organization. - */ public function removeOrganization(Organization $organization) : void { $this->organizations->removeElement($organization); } - /** - * Get organizations. - * - * @return Collection - */ - public function getOrganizations() { + public function getOrganizations() : Collection { return $this->organizations; } } diff --git a/src/Entity/MediaFile.php b/src/Entity/MediaFile.php index 971c123..48c2329 100644 --- a/src/Entity/MediaFile.php +++ b/src/Entity/MediaFile.php @@ -2,85 +2,64 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; -use Nines\DublinCoreBundle\Entity\AbstractField; use Nines\UtilBundle\Entity\AbstractEntity; use Symfony\Component\HttpFoundation\File\File; -/** - * MediaFile. - * - * @ORM\Table(name="media_file", indexes={ - * }) - * @ORM\Entity(repositoryClass="App\Repository\MediaFileRepository") - */ +#[ORM\Entity(repositoryClass: MediaFileRepository::class)] +#[ORM\Table(name: 'media_file')] class MediaFile extends AbstractEntity { /** * A Doctrine event listener will turn the filename into a file object. - * - * @var File */ - private $file; + private ?File $file = null; - /** - * @var string - * @ORM\Column(name="file", type="string") - */ - private $filename; + #[ORM\Column(name: 'file', type: Types::STRING)] + private ?string $filename = null; - /** - * @var bool - * @ORM\Column(type="boolean", options={"default": false}) - */ - private $hasThumbnail; + #[ORM\Column(type: Types::BOOLEAN, options: ['default' => false])] + private ?bool $hasThumbnail = null; - /** - * @ORM\Column(type="string") - */ - private $originalName; + #[ORM\Column(type: Types::STRING)] + private ?string $originalName = null; - /** - * @var MediaFileCategory - * @ORM\ManyToOne(targetEntity="MediaFileCategory", inversedBy="mediaFiles") - * @ORM\JoinColumn(nullable=false) - */ - private $mediaFileCategory; + #[ORM\ManyToOne(targetEntity: MediaFileCategory::class, inversedBy: 'mediaFiles')] + #[ORM\JoinColumn(nullable: false)] + private ?MediaFileCategory $mediaFileCategory = null; /** * @var Collection|MediaFileField[] - * @ORM\OneToMany(targetEntity="MediaFileField", mappedBy="mediaFile") */ - private $metadataFields; + #[ORM\OneToMany(targetEntity: MediaFileField::class, mappedBy: 'mediaFile')] + private Collection $metadataFields; /** * @var Collection|MediaFileField[] - * @ORM\ManyToMany(targetEntity="Artwork", mappedBy="mediaFiles") */ - private $artworks; + #[ORM\ManyToMany(targetEntity: Artwork::class, mappedBy: 'mediaFiles')] + private Collection $artworks; /** * @var Collection|MediaFileField[] - * @ORM\ManyToMany(targetEntity="Project", mappedBy="mediaFiles") */ - private $projects; + #[ORM\ManyToMany(targetEntity: Project::class, mappedBy: 'mediaFiles')] + private Collection $projects; /** * @var Collection|MediaFileField[] - * @ORM\ManyToMany(targetEntity="Person", mappedBy="mediaFiles") */ - private $people; + #[ORM\ManyToMany(targetEntity: Person::class, mappedBy: 'mediaFiles')] + private Collection $people; public function __construct() { + $this->artworks = new ArrayCollection(); + $this->projects = new ArrayCollection(); parent::__construct(); $this->metadataFields = new ArrayCollection(); $this->people = new ArrayCollection(); @@ -88,7 +67,7 @@ public function __construct() { } public function __toString() : string { - return $this->getId(); + return (string) $this->getId() ?? ''; } public function setFilename($filename) : void { @@ -99,40 +78,37 @@ public function getFilename() { return $this->filename; } - /** - * @return File - */ - public function getFile() { + public function getFile() : ?File { return $this->file; } - public function setFile(File $file) { + public function setFile(File $file) : self { $this->file = $file; return $this; } - public function getMimeType() { + public function getMimeType() : ?string { return $this->file->getMimeType(); } - public function getPath() { + public function getPath() : ?string { return $this->file->getPath(); } - public function getRealPath() { + public function getRealPath() : ?string { return $this->file->getRealPath(); } - public function getBasename() { + public function getBasename() : ?string { return $this->file->getBasename('.' . $this->file->getExtension()); } - public function getSize() { + public function getSize() : bool|int { return $this->file->getSize(); } - public function getThumbnail() { + public function getThumbnail() : ?File { $base = $this->getBasename(); $path = $this->getPath(); $name = $base . '_tn.jpg'; @@ -142,55 +118,27 @@ public function getThumbnail() { } } - /** - * Set originalName. - * - * @param string $originalName - * - * @return MediaFile - */ - public function setOriginalName($originalName) { + public function setOriginalName(string $originalName) : self { $this->originalName = $originalName; return $this; } - /** - * Get originalName. - * - * @return string - */ - public function getOriginalName() { + public function getOriginalName() : ?string { return $this->originalName; } - /** - * Add metadataField. - * - * @return MediaFile - */ - public function addMetadataField(MediaFileField $metadataField) { + public function addMetadataField(MediaFileField $metadataField) : self { $this->metadataFields[] = $metadataField; return $this; } - /** - * Remove metadataField. - */ public function removeMetadataField(MediaFileField $metadataField) : void { $this->metadataFields->removeElement($metadataField); } - /** - * Get metadataFields. - * - * @param null|mixed $name - * @param mixed $list - * - * @return Collection - */ - public function getMetadataFields($name = null, $list = true) { + public function getMetadataFields(mixed $name = null, bool $list = true) : mixed { if ( ! $name) { return $this->metadataFields; } @@ -202,92 +150,49 @@ public function getMetadataFields($name = null, $list = true) { return $matches->first(); } - /** - * Set mediaFileCategory. - * - * @param MediaFileCategory $mediaFileCategory - * - * @return MediaFile - */ - public function setMediaFileCategory(?MediaFileCategory $mediaFileCategory = null) { + public function setMediaFileCategory(?MediaFileCategory $mediaFileCategory = null) : self { $this->mediaFileCategory = $mediaFileCategory; return $this; } - /** - * Get mediaFileCategory. - * - * @return MediaFileCategory - */ - public function getMediaFileCategory() { + public function getMediaFileCategory() : ?MediaFileCategory { return $this->mediaFileCategory; } - /** - * Add artwork. - * - * @return MediaFile - */ - public function addArtwork(Artwork $artwork) { + public function addArtwork(Artwork $artwork) : self { $this->artworks[] = $artwork; return $this; } - /** - * Remove artwork. - */ public function removeArtwork(Artwork $artwork) : void { $this->artworks->removeElement($artwork); } - /** - * Get artworks. - * - * @return Collection - */ - public function getArtworks() { + public function getArtworks() : Collection { return $this->artworks; } - /** - * Add project. - * - * @return MediaFile - */ - public function addProject(Project $project) { + public function addProject(Project $project) : self { $this->projects[] = $project; return $this; } - /** - * Remove project. - */ public function removeProject(Project $project) : void { $this->projects->removeElement($project); } - /** - * Get projects. - * - * @return Collection - */ - public function getProjects() { + public function getProjects() : Collection { return $this->projects; } - public function hasPerson(Person $person) { + public function hasPerson(Person $person) : bool { return $this->people->contains($person); } - /** - * Add person. - * - * @return MediaFile - */ - public function addPerson(Person $person) { + public function addPerson(Person $person) : self { if ( ! $this->people->contains($person)) { $this->people[] = $person; } @@ -295,41 +200,21 @@ public function addPerson(Person $person) { return $this; } - /** - * Remove person. - */ public function removePerson(Person $person) : void { $this->people->removeElement($person); } - /** - * Get people. - * - * @return Collection - */ - public function getPeople() { + public function getPeople() : Collection { return $this->people; } - /** - * Set hasThumbnail. - * - * @param bool $hasThumbnail - * - * @return MediaFile - */ - public function setHasThumbnail($hasThumbnail) { + public function setHasThumbnail(bool $hasThumbnail) : self { $this->hasThumbnail = $hasThumbnail; return $this; } - /** - * Get hasThumbnail. - * - * @return bool - */ - public function getHasThumbnail() { + public function getHasThumbnail() : bool { return $this->hasThumbnail; } } diff --git a/src/Entity/MediaFileCategory.php b/src/Entity/MediaFileCategory.php index 56b4cdc..79ab026 100644 --- a/src/Entity/MediaFileCategory.php +++ b/src/Entity/MediaFileCategory.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileCategoryRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * MediaFileCategory. - * - * @ORM\Table(name="media_file_category") - * @ORM\Entity(repositoryClass="App\Repository\MediaFileCategoryRepository") */ +#[ORM\Entity(repositoryClass: MediaFileCategoryRepository::class)] +#[ORM\Table(name: 'media_file_category')] class MediaFileCategory extends AbstractTerm { /** * @var Collection|MediaFile[] - * @ORM\OneToMany(targetEntity="MediaFile", mappedBy="mediaFileCategory") */ - private $mediaFiles; + #[ORM\OneToMany(targetEntity: MediaFile::class, mappedBy: 'mediaFileCategory')] + private Collection $mediaFiles; public function __construct() { parent::__construct(); $this->mediaFiles = new ArrayCollection(); } - /** - * Add mediaFile. - * - * @return MediaFileCategory - */ - public function addMediaFile(MediaFile $mediaFile) { + public function addMediaFile(MediaFile $mediaFile) : self { $this->mediaFiles[] = $mediaFile; return $this; } - /** - * Remove mediaFile. - */ public function removeMediaFile(MediaFile $mediaFile) : void { $this->mediaFiles->removeElement($mediaFile); } - /** - * Get mediaFiles. - * - * @return Collection - */ - public function getMediaFiles() { + public function getMediaFiles() : Collection { return $this->mediaFiles; } } diff --git a/src/Entity/MediaFileField.php b/src/Entity/MediaFileField.php index b0e84c1..38046a4 100644 --- a/src/Entity/MediaFileField.php +++ b/src/Entity/MediaFileField.php @@ -2,52 +2,26 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileFieldRepository; use Doctrine\ORM\Mapping as ORM; -use Nines\DublinCoreBundle\Entity\AbstractField; -/** - * MediaFileField. - * - * @ORM\Table(name="media_file_field", indexes={ - * @ORM\Index(columns={"value"}, flags={"fulltext"}) - * }) - * @ORM\Entity(repositoryClass="App\Repository\MediaFileFieldRepository") - */ +#[ORM\Entity(repositoryClass: MediaFileFieldRepository::class)] +#[ORM\Table(name: 'media_file_field')] +#[ORM\Index(columns: ['value'], flags: ['fulltext'])] class MediaFileField extends AbstractField { - /** - * @var MediaFile - * @ORM\ManyToOne(targetEntity="MediaFile", inversedBy="metadataFields") - * @ORM\JoinColumn(nullable=false) - */ - private $mediaFile; + #[ORM\ManyToOne(targetEntity: MediaFile::class, inversedBy: 'metadataFields')] + #[ORM\JoinColumn(nullable: false)] + private ?MediaFile $mediaFile = null; - /** - * Set mediaFile. - * - * @param \App\Entity\MediaFile $mediaFile - * - * @return MediaFileField - */ - public function setMediaFile(MediaFile $mediaFile) { + public function setMediaFile(MediaFile $mediaFile) : self { $this->mediaFile = $mediaFile; return $this; } - /** - * Get mediaFile. - * - * @return \App\Entity\MediaFile - */ - public function getMediaFile() { + public function getMediaFile() : ?MediaFile { return $this->mediaFile; } } diff --git a/src/Entity/Organization.php b/src/Entity/Organization.php index 62f33b9..9412fe7 100644 --- a/src/Entity/Organization.php +++ b/src/Entity/Organization.php @@ -2,76 +2,49 @@ declare(strict_types=1); -/* - * (c) 2021 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\OrganizationRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * Organization. - * - * @ORM\Table(name="organization", indexes={ - * @ORM\Index(columns={"name", "address", "description", "contact"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\OrganizationRepository") - */ +#[ORM\Entity(repositoryClass: OrganizationRepository::class)] +#[ORM\Table(name: 'organization')] +#[ORM\Index(columns: ['name', 'address', 'description', 'contact'], flags: ['fulltext'])] class Organization extends AbstractEntity { - /** - * @var string - * @ORM\Column(type="string") - */ - private $name; + #[ORM\Column(type: Types::STRING)] + private ?string $name = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $address; + #[ORM\Column(type: Types::TEXT)] + private ?string $address = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $description; + #[ORM\Column(type: Types::TEXT)] + private ?string $description = null; - /** - * @var string - * @ORM\Column(type="array") - */ - private $urls; + #[ORM\Column(type: Types::ARRAY)] + private array $urls = []; - /** - * @var string - * @ORM\Column(type="text", nullable=true) - */ - private $contact; + #[ORM\Column(type: Types::TEXT, nullable: true)] + private ?string $contact = null; - /** - * @var Location - * @ORM\ManyToOne(targetEntity="Location", inversedBy="organizations") - * @ORM\JoinColumn(nullable=false) - */ - private $location; + #[ORM\ManyToOne(targetEntity: Location::class, inversedBy: 'organizations')] + #[ORM\JoinColumn(nullable: false)] + private ?Location $location = null; /** * @var ArtworkContribution[]|Collection - * @ORM\OneToMany(targetEntity="ArtworkContribution", mappedBy="organization", cascade={"persist"}, orphanRemoval=true) */ - private $artworkContributions; + #[ORM\OneToMany(targetEntity: ArtworkContribution::class, mappedBy: 'organization', cascade: ['persist'], orphanRemoval: true)] + private Collection $artworkContributions; /** * @var Collection|ProjectContribution[] - * @ORM\OneToMany(targetEntity="ProjectContribution", mappedBy="organization", cascade={"persist"}, orphanRemoval=true) */ - private $projectContributions; + #[ORM\OneToMany(targetEntity: ProjectContribution::class, mappedBy: 'organization', cascade: ['persist'], orphanRemoval: true)] + private Collection $projectContributions; public function __construct() { parent::__construct(); @@ -83,189 +56,91 @@ public function __toString() : string { return $this->name; } - /** - * Set name. - * - * @param string $name - * - * @return Organization - */ - public function setName($name) { + public function setName(?string $name) : self { $this->name = $name; return $this; } - /** - * Get name. - * - * @return string - */ - public function getName() { + public function getName() : ?string { return $this->name; } - /** - * Set address. - * - * @param string $address - * - * @return Organization - */ - public function setAddress($address) { + public function setAddress(?string $address) : self { $this->address = $address; return $this; } - /** - * Get address. - * - * @return string - */ - public function getAddress() { + public function getAddress() : ?string { return $this->address; } - /** - * Set description. - * - * @param string $description - * - * @return Organization - */ - public function setDescription($description) { + public function setDescription(?string $description) : self { $this->description = $description; return $this; } - /** - * Get description. - * - * @return string - */ - public function getDescription() { + public function getDescription() : ?string { return $this->description; } - /** - * Set contact. - * - * @param string $contact - * - * @return Organization - */ - public function setContact($contact) { + public function setContact(?string $contact) : self { $this->contact = $contact; return $this; } - /** - * Get contact. - * - * @return string - */ - public function getContact() { + public function getContact() : ?string { return $this->contact; } - /** - * Set location. - * - * @param Location $location - * - * @return Organization - */ - public function setLocation(?Location $location = null) { + public function setLocation(?Location $location = null) : self { $this->location = $location; return $this; } - /** - * Get location. - * - * @return Location - */ - public function getLocation() { + public function getLocation() : ?Location { return $this->location; } - /** - * Add artworkContribution. - * - * @return Organization - */ - public function addArtworkContribution(ArtworkContribution $artworkContribution) { + public function addArtworkContribution(ArtworkContribution $artworkContribution) : self { $this->artworkContributions[] = $artworkContribution; return $this; } - /** - * Remove artworkContribution. - */ public function removeArtworkContribution(ArtworkContribution $artworkContribution) : void { $this->artworkContributions->removeElement($artworkContribution); } - /** - * Get artworkContributions. - * - * @return Collection - */ - public function getArtworkContributions() { + public function getArtworkContributions() : Collection { return $this->artworkContributions; } - /** - * Add projectContribution. - * - * @return Organization - */ - public function addProjectContribution(ProjectContribution $projectContribution) { + public function addProjectContribution(ProjectContribution $projectContribution) : self { $this->projectContributions[] = $projectContribution; return $this; } - /** - * Remove projectContribution. - */ public function removeProjectContribution(ProjectContribution $projectContribution) : void { $this->projectContributions->removeElement($projectContribution); } - /** - * Get projectContributions. - * - * @return Collection - */ - public function getProjectContributions() { + public function getProjectContributions() : Collection { return $this->projectContributions; } - /** - * Set urls. - * - * @param array $urls - * - * @return Organization - */ - public function setUrls($urls) { + public function setUrls(array $urls) : self { $this->urls = $urls; return $this; } - /** - * Get urls. - * - * @return array - */ - public function getUrls() { + public function getUrls() : array { return $this->urls; } } diff --git a/src/Entity/Person.php b/src/Entity/Person.php index b21c9ad..e1e6868 100644 --- a/src/Entity/Person.php +++ b/src/Entity/Person.php @@ -2,83 +2,62 @@ declare(strict_types=1); -/* - * (c) 2021 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\PersonRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * Person. - * - * @ORM\Table(name="person", indexes={ - * @ORM\Index(columns={"fullname", "biography"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\PersonRepository") - */ +#[ORM\Entity(repositoryClass: PersonRepository::class)] +#[ORM\Table(name: 'person')] +#[ORM\Index(columns: ['fullname', 'biography'], flags: ['fulltext'])] class Person extends AbstractEntity { - /** - * @var string - * @ORM\Column(type="string") - */ - private $fullname; + #[ORM\Column(type: Types::STRING)] + private ?string $fullname = null; - /** - * @var string - * @ORM\Column(type="string") - */ - private $sortableName; + #[ORM\Column(type: Types::STRING)] + private ?string $sortableName = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $biography; + #[ORM\Column(type: Types::TEXT)] + private ?string $biography = null; - /** - * @var string - * @ORM\Column(type="array") - */ - private $urls; + #[ORM\Column(type: Types::ARRAY)] + private array $urls = []; /** * @var ArtworkContribution[]|Collection - * @ORM\OneToMany(targetEntity="ArtworkContribution", mappedBy="person", cascade={"persist"}, orphanRemoval=true) */ - private $artworkContributions; + #[ORM\OneToMany(targetEntity: ArtworkContribution::class, mappedBy: 'person', cascade: ['persist'], orphanRemoval: true)] + private Collection $artworkContributions; /** * @var ArtisticStatement[]|Collection - * @ORM\ManyToMany(targetEntity="ArtisticStatement", mappedBy="people") */ - private $artisticStatements; + #[ORM\ManyToMany(targetEntity: ArtisticStatement::class, mappedBy: 'people')] + private Collection $artisticStatements; /** * @var Collection|ProjectContribution[] - * @ORM\OneToMany(targetEntity="ProjectContribution", mappedBy="person", cascade={"persist"}, orphanRemoval=true) */ - private $projectContributions; + #[ORM\OneToMany(targetEntity: ProjectContribution::class, mappedBy: 'person', cascade: ['persist'], orphanRemoval: true)] + private Collection $projectContributions; /** * @var Collection|MediaFile[] - * @ORM\ManyToMany(targetEntity="MediaFile", inversedBy="people") - * @ORM\JoinTable(name="person_mediafiles") */ - private $mediaFiles; + #[ORM\ManyToMany(targetEntity: MediaFile::class, inversedBy: 'people')] + #[ORM\JoinTable(name: 'person_mediafiles')] + private Collection $mediaFiles; public function __construct() { + $this->mediaFiles = new ArrayCollection(); parent::__construct(); $this->artworkContributions = new ArrayCollection(); $this->projectContributions = new ArrayCollection(); $this->artisticStatements = new ArrayCollection(); - $this->affiliations = new ArrayCollection(); $this->urls = []; } @@ -86,178 +65,85 @@ public function __toString() : string { return $this->fullname; } - /** - * Set fullname. - * - * @param string $fullname - * - * @return Person - */ - public function setFullname($fullname) { + public function setFullname(?string $fullname) : self { $this->fullname = $fullname; return $this; } - /** - * Get fullname. - * - * @return string - */ - public function getFullname() { + public function getFullname() : ?string { return $this->fullname; } - /** - * Set sortableName. - * - * @param string $sortableName - * - * @return Person - */ - public function setSortableName($sortableName) { + public function setSortableName(?string $sortableName) : self { $this->sortableName = $sortableName; return $this; } - /** - * Get sortableName. - * - * @return string - */ - public function getSortableName() { + public function getSortableName() : ?string { return $this->sortableName; } - /** - * Set biography. - * - * @param string $biography - * - * @return Person - */ - public function setBiography($biography) { + public function setBiography(?string $biography) : self { $this->biography = $biography; return $this; } - /** - * Get biography. - * - * @return string - */ - public function getBiography() { + public function getBiography() : ?string { return $this->biography; } - /** - * Add artworkContribution. - * - * @return Person - */ - public function addArtworkContribution(ArtworkContribution $artworkContribution) { + public function addArtworkContribution(ArtworkContribution $artworkContribution) : self { $this->artworkContributions[] = $artworkContribution; return $this; } - /** - * Remove artworkContribution. - */ public function removeArtworkContribution(ArtworkContribution $artworkContribution) : void { $this->artworkContributions->removeElement($artworkContribution); } - /** - * Get artworkContributions. - * - * @return Collection - */ - public function getArtworkContributions() { + public function getArtworkContributions() : Collection { return $this->artworkContributions; } - /** - * Add projectContribution. - * - * @return Person - */ - public function addProjectContribution(ProjectContribution $projectContribution) { + public function addProjectContribution(ProjectContribution $projectContribution) : self { $this->projectContributions[] = $projectContribution; return $this; } - /** - * Remove projectContribution. - */ public function removeProjectContribution(ProjectContribution $projectContribution) : void { $this->projectContributions->removeElement($projectContribution); } - /** - * Get projectContributions. - * - * @return Collection - */ - public function getProjectContributions() { + public function getProjectContributions() : Collection { return $this->projectContributions; } - /** - * Get the first URL. There may be more. - * - * @return null|string - */ - public function getUrl() { + public function getUrl() : ?string { if (count($this->urls) > 0) { return $this->urls[0]; } } - /** - * Set urls. - * - * @param array $urls - * - * @return Person - */ - public function setUrls($urls) { + public function setUrls(array $urls) : self { $this->urls = $urls; return $this; } - /** - * Get urls. - * - * @return array - */ - public function getUrls() { + public function getUrls() : array { return $this->urls; } - /** - * Check if a media file is associated with this person. - * - * @param \App\Entity\MediaFile $mediaFile - * - * @return bool - */ - public function hasMediaFile(MediaFile $mediaFile) { + public function hasMediaFile(MediaFile $mediaFile) : bool { return $this->mediaFiles->contains($mediaFile); } - /** - * Add mediaFile. - * - * @param \App\Entity\MediaFile $mediaFile - * - * @return Person - */ - public function addMediaFile(MediaFile $mediaFile) { + public function addMediaFile(MediaFile $mediaFile) : self { if ( ! $this->mediaFiles->contains($mediaFile)) { $this->mediaFiles[] = $mediaFile; } @@ -265,59 +151,15 @@ public function addMediaFile(MediaFile $mediaFile) { return $this; } - /** - * Remove mediaFile. - * - * @param \App\Entity\MediaFile $mediaFile - */ public function removeMediaFile(MediaFile $mediaFile) : void { $this->mediaFiles->removeElement($mediaFile); } - /** - * Get mediaFiles. - * - * @return \Doctrine\Common\Collections\Collection - */ - public function getMediaFiles() { + public function getMediaFiles() : Collection { return $this->mediaFiles; } - /** - * Add affiliation. - * - * @return Person - */ - public function addAffiliation(Organization $affiliation) { - $this->affiliations[] = $affiliation; - - return $this; - } - - /** - * Remove affiliation. - */ - public function removeAffiliation(Organization $affiliation) : void { - $this->affiliations->removeElement($affiliation); - } - - /** - * Get affiliations. - * - * @return Collection - */ - public function getAffiliations() { - return $this->affiliations; - } - - /** - * Add artisticStatement. - * - * @param \App\Entity\ArtisticStatement $artisticStatement - * - * @return Person - */ - public function addArtisticStatement(ArtisticStatement $artisticStatement) { + public function addArtisticStatement(ArtisticStatement $artisticStatement) : self { $this->artisticStatements[] = $artisticStatement; return $this; @@ -325,19 +167,12 @@ public function addArtisticStatement(ArtisticStatement $artisticStatement) { /** * Remove artisticStatement. - * - * @param \App\Entity\ArtisticStatement $artisticStatement */ public function removeArtisticStatement(ArtisticStatement $artisticStatement) : void { $this->artisticStatements->removeElement($artisticStatement); } - /** - * Get artisticStatements. - * - * @return \Doctrine\Common\Collections\Collection - */ - public function getArtisticStatements() { + public function getArtisticStatements() : Collection { return $this->artisticStatements; } } diff --git a/src/Entity/Project.php b/src/Entity/Project.php index b29d03e..d7ba4bf 100644 --- a/src/Entity/Project.php +++ b/src/Entity/Project.php @@ -2,110 +2,84 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Entity; -use DateTime; +use App\Repository\ProjectRepository; +use DateTimeInterface; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; use Nines\UtilBundle\Entity\ContentEntityInterface; use Nines\UtilBundle\Entity\ContentExcerptTrait; -/** - * Project. - * - * @ORM\Table(name="project", indexes={ - * @ORM\Index(columns={"title", "content"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\ProjectRepository") - */ +#[ORM\Entity(repositoryClass: ProjectRepository::class)] +#[ORM\Table(name: 'project')] +#[ORM\Index(columns: ['title', 'content'], flags: ['fulltext'])] class Project extends AbstractEntity implements ContentEntityInterface { use ContentExcerptTrait; - /** - * @var string - * @ORM\Column(type="string") - */ - private $title; + #[ORM\Column(type: Types::STRING)] + private ?string $title = null; - /** - * @var DateTime - * @ORM\Column(type="date") - */ - private $startDate; + #[ORM\Column(type: Types::DATE_MUTABLE)] + private ?DateTimeInterface $startDate = null; - /** - * @var DateTime - * @ORM\Column(type="date") - */ - private $endDate; + #[ORM\Column(type: Types::DATE_MUTABLE)] + private ?DateTimeInterface $endDate = null; - /** - * @var string - * @ORM\Column(type="string", nullable=true) - */ - private $url; + #[ORM\Column(type: Types::STRING, nullable: true)] + private ?string $url = null; - /** - * @var Project - * @ORM\ManyToOne(targetEntity="Project", inversedBy="children") - */ - private $parent; + #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')] + private ?Project $parent = null; /** * @var Collection|Project[] - * @ORM\OneToMany(targetEntity="Project", mappedBy="parent") */ - private $children; + #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'parent')] + private Collection $children; - /** - * @var ProjectCategory - * @ORM\ManyToOne(targetEntity="ProjectCategory", inversedBy="projects") - * @ORM\JoinColumn(nullable=false) - */ - private $projectCategory; + #[ORM\ManyToOne(targetEntity: ProjectCategory::class, inversedBy: 'projects')] + #[ORM\JoinColumn(nullable: false)] + private ?ProjectCategory $projectCategory = null; /** * @var Collection|Venue[] - * @ORM\ManyToMany(targetEntity="Venue", inversedBy="projects") - * @ORM\JoinTable(name="project_venues") */ - private $venues; + #[ORM\ManyToMany(targetEntity: Venue::class, inversedBy: 'projects')] + #[ORM\JoinTable(name: 'project_venues')] + private Collection $venues; /** * @var Collection|ProjectContribution[] - * @ORM\OneToMany(targetEntity="ProjectContribution", mappedBy="project", cascade={"persist"}, orphanRemoval=true) */ - private $contributions; + #[ORM\OneToMany(targetEntity: ProjectContribution::class, mappedBy: 'project', cascade: ['persist'], orphanRemoval: true)] + private Collection $contributions; /** * @var Collection|ProjectPage[] - * @ORM\OneToMany(targetEntity="ProjectPage", mappedBy="project") */ - private $projectPages; + #[ORM\OneToMany(targetEntity: ProjectPage::class, mappedBy: 'project')] + private Collection $projectPages; /** * @var Collection|MediaFile[] - * @ORM\ManyToMany(targetEntity="MediaFile", inversedBy="projects") - * @ORM\JoinTable(name="project_mediafiles") */ - private $mediaFiles; + #[ORM\ManyToMany(targetEntity: MediaFile::class, inversedBy: 'projects')] + #[ORM\JoinTable(name: 'project_mediafiles')] + private Collection $mediaFiles; /** * @var Artwork[]|Collection - * @ORM\ManyToMany(targetEntity="Artwork", inversedBy="projects") - * @ORM\JoinTable(name="project_artworks") */ - private $artworks; + #[ORM\ManyToMany(targetEntity: Artwork::class, inversedBy: 'projects')] + #[ORM\JoinTable(name: 'project_artworks')] + private Collection $artworks; public function __construct() { + $this->projectPages = new ArrayCollection(); parent::__construct(); $this->venues = new ArrayCollection(); $this->contributions = new ArrayCollection(); @@ -118,141 +92,69 @@ public function __toString() : string { return $this->title; } - /** - * Set title. - * - * @param string $title - * - * @return Project - */ - public function setTitle($title) { + public function setTitle(?string $title) : self { $this->title = $title; return $this; } - /** - * Get title. - * - * @return string - */ - public function getTitle() { + public function getTitle() : ?string { return $this->title; } - /** - * Set url. - * - * @param string $url - * - * @return Project - */ - public function setUrl($url) { + public function setUrl(?string $url) : self { $this->url = $url; return $this; } - /** - * Get url. - * - * @return string - */ - public function getUrl() { + public function getUrl() : ?string { return $this->url; } - /** - * Set projectCategory. - * - * @param ProjectCategory $projectCategory - * - * @return Project - */ - public function setProjectCategory(?ProjectCategory $projectCategory = null) { + public function setProjectCategory(?ProjectCategory $projectCategory = null) : self { $this->projectCategory = $projectCategory; return $this; } - /** - * Get projectCategory. - * - * @return ProjectCategory - */ - public function getProjectCategory() { + public function getProjectCategory() : ?ProjectCategory { return $this->projectCategory; } - /** - * Add venue. - * - * @return Project - */ - public function addVenue(Venue $venue) { + public function addVenue(Venue $venue) : self { $this->venues[] = $venue; return $this; } - /** - * Remove venue. - */ public function removeVenue(Venue $venue) : void { $this->venues->removeElement($venue); } - /** - * Get venues. - * - * @return Collection - */ - public function getVenues() { + public function getVenues() : Collection { return $this->venues; } - /** - * Add contribution. - * - * @return Project - */ - public function addContribution(ProjectContribution $contribution) { + public function addContribution(ProjectContribution $contribution) : self { $this->contributions[] = $contribution; return $this; } - /** - * Remove contribution. - */ public function removeContribution(ProjectContribution $contribution) : void { $this->contributions->removeElement($contribution); } - /** - * Get contributions. - * - * @return Collection - */ - public function getContributions() { + public function getContributions() : Collection { return $this->contributions; } - /** - * Check if a media file is associated with this project. - * - * @return bool - */ - public function hasMediaFile(MediaFile $mediaFile) { + public function hasMediaFile(MediaFile $mediaFile) : bool { return $this->mediaFiles->contains($mediaFile); } - /** - * Add mediaFile. - * - * @return Project - */ - public function addMediaFile(MediaFile $mediaFile) { + public function addMediaFile(MediaFile $mediaFile) : self { if ( ! $this->mediaFiles->contains($mediaFile)) { $this->mediaFiles[] = $mediaFile; } @@ -260,99 +162,49 @@ public function addMediaFile(MediaFile $mediaFile) { return $this; } - /** - * Remove mediaFile. - */ public function removeMediaFile(MediaFile $mediaFile) : void { $this->mediaFiles->removeElement($mediaFile); } - /** - * Get mediaFiles. - * - * @return Collection - */ - public function getMediaFiles() { + public function getMediaFiles() : Collection { return $this->mediaFiles; } - /** - * Set startDate. - * - * @param DateTime $startDate - * - * @return Project - */ - public function setStartDate($startDate) { + public function setStartDate(?DateTimeInterface $startDate) : self { $this->startDate = $startDate; return $this; } - /** - * Get startDate. - * - * @return DateTime - */ - public function getStartDate() { + public function getStartDate() : ?DateTimeInterface { return $this->startDate; } - /** - * Set endDate. - * - * @param DateTime $endDate - * - * @return Project - */ - public function setEndDate($endDate) { + public function setEndDate(?DateTimeInterface $endDate) : self { $this->endDate = $endDate; return $this; } - /** - * Get endDate. - * - * @return DateTime - */ - public function getEndDate() { + public function getEndDate() : ?DateTimeInterface { return $this->endDate; } - /** - * Add projectPage. - * - * @return Project - */ - public function addProjectPage(ProjectPage $projectPage) { + public function addProjectPage(ProjectPage $projectPage) : self { $this->projectPages[] = $projectPage; return $this; } - /** - * Remove projectPage. - */ public function removeProjectPage(ProjectPage $projectPage) : void { $this->projectPages->removeElement($projectPage); } - /** - * Get projectPages. - * - * @return Collection - */ - public function getProjectPages() { + public function getProjectPages() : Collection { return $this->projectPages; } - /** - * Add artwork. - * - * @return Project - */ - public function addArtwork(Artwork $artwork) { + public function addArtwork(Artwork $artwork) : self { $this->artworks[] = $artwork; return $this; @@ -362,70 +214,35 @@ public function hasArtwork(Artwork $artwork) { return $this->artworks->contains($artwork); } - /** - * Remove artwork. - */ public function removeArtwork(Artwork $artwork) : void { $this->artworks->removeElement($artwork); } - /** - * Get artworks. - * - * @return Collection - */ - public function getArtworks() { + public function getArtworks() : Collection { return $this->artworks; } - /** - * Set parent. - * - * @param ?self $parent - * - * @return Project - */ - public function setParent(?self $parent = null) { + public function setParent(?self $parent = null) : self { $this->parent = $parent; return $this; } - /** - * Get parent. - * - * @return null|Project - */ - public function getParent() { + public function getParent() : ?self { return $this->parent; } - /** - * Add child. - * - * @return Project - */ - public function addChild(self $child) { + public function addChild(self $child) : self { $this->children[] = $child; return $this; } - /** - * Remove child. - * - * @return bool TRUE if this collection contained the specified element, FALSE otherwise. - */ - public function removeChild(self $child) { + public function removeChild(self $child) : bool { return $this->children->removeElement($child); } - /** - * Get children. - * - * @return Collection - */ - public function getChildren() { + public function getChildren() : Collection { return $this->children; } } diff --git a/src/Entity/ProjectCategory.php b/src/Entity/ProjectCategory.php index 3e37a09..cddfce4 100644 --- a/src/Entity/ProjectCategory.php +++ b/src/Entity/ProjectCategory.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectCategoryRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * ProjectCategory. - * - * @ORM\Table(name="project_category") - * @ORM\Entity(repositoryClass="App\Repository\ProjectCategoryRepository") */ +#[ORM\Entity(repositoryClass: ProjectCategoryRepository::class)] +#[ORM\Table(name: 'project_category')] class ProjectCategory extends AbstractTerm { /** * @var Collection|Project[] - * @ORM\OneToMany(targetEntity="Project", mappedBy="projectCategory") */ - private $projects; + #[ORM\OneToMany(targetEntity: Project::class, mappedBy: 'projectCategory')] + private Collection $projects; public function __construct() { parent::__construct(); $this->projects = new ArrayCollection(); } - /** - * Add project. - * - * @return ProjectCategory - */ - public function addProject(Project $project) { + public function addProject(Project $project) : self { $this->projects[] = $project; return $this; } - /** - * Remove project. - */ public function removeProject(Project $project) : void { $this->projects->removeElement($project); } - /** - * Get projects. - * - * @return Collection - */ - public function getProjects() { + public function getProjects() : Collection { return $this->projects; } } diff --git a/src/Entity/ProjectContribution.php b/src/Entity/ProjectContribution.php index d45d6e8..65ef688 100644 --- a/src/Entity/ProjectContribution.php +++ b/src/Entity/ProjectContribution.php @@ -2,139 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectContributionRepository; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; /** * ProjectContribution. - * - * @ORM\Table(name="project_contribution") - * @ORM\Entity(repositoryClass="App\Repository\ProjectContributionRepository") */ +#[ORM\Entity(repositoryClass: ProjectContributionRepository::class)] +#[ORM\Table(name: 'project_contribution')] class ProjectContribution extends AbstractEntity { - /** - * @var Project - * @ORM\ManyToOne(targetEntity="Project", inversedBy="contributions") - * @ORM\JoinColumn(nullable=false) - */ - private $project; - - /** - * @var Person - * @ORM\ManyToOne(targetEntity="Person", inversedBy="projectContributions") - */ - private $person; - - /** - * @var Person - * @ORM\ManyToOne(targetEntity="Organization", inversedBy="projectContributions") - */ - private $organization; - - /** - * @var ProjectRole - * @ORM\ManyToOne(targetEntity="ProjectRole", inversedBy="contributions") - * @ORM\JoinColumn(nullable=false) - */ - private $projectRole; + #[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'contributions')] + #[ORM\JoinColumn(nullable: false)] + private ?Project $project = null; + + #[ORM\ManyToOne(targetEntity: Person::class, inversedBy: 'projectContributions')] + private ?Person $person = null; + + #[ORM\ManyToOne(targetEntity: Organization::class, inversedBy: 'projectContributions')] + private ?Organization $organization = null; + + #[ORM\ManyToOne(targetEntity: ProjectRole::class, inversedBy: 'contributions')] + #[ORM\JoinColumn(nullable: false)] + private ?ProjectRole $projectRole = null; public function __toString() : string { return implode(':', [$this->project, $this->person, $this->organization, $this->projectRole]); } - /** - * Set project. - * - * @param Project $project - * - * @return ProjectContribution - */ - public function setProject(?Project $project = null) { + public function setProject(?Project $project = null) : self { $this->project = $project; return $this; } - /** - * Get project. - * - * @return Project - */ - public function getProject() { + public function getProject() : ?Project { return $this->project; } - /** - * Set person. - * - * @param Person $person - * - * @return ProjectContribution - */ - public function setPerson(?Person $person = null) { + public function setPerson(?Person $person = null) : self { $this->person = $person; return $this; } - /** - * Get person. - * - * @return Person - */ - public function getPerson() { + public function getPerson() : ?Person { return $this->person; } - /** - * Set organization. - * - * @param Organization $organization - * - * @return ProjectContribution - */ - public function setOrganization(?Organization $organization = null) { + public function setOrganization(?Organization $organization = null) : self { $this->organization = $organization; return $this; } - /** - * Get organization. - * - * @return Organization - */ - public function getOrganization() { + public function getOrganization() : ?Organization { return $this->organization; } - /** - * Set projectRole. - * - * @param ProjectRole $projectRole - * - * @return ProjectContribution - */ - public function setProjectRole(?ProjectRole $projectRole = null) { + public function setProjectRole(?ProjectRole $projectRole = null) : self { $this->projectRole = $projectRole; return $this; } - /** - * Get projectRole. - * - * @return ProjectRole - */ - public function getProjectRole() { + public function getProjectRole() : ?ProjectRole { return $this->projectRole; } } diff --git a/src/Entity/ProjectPage.php b/src/Entity/ProjectPage.php index 66570a1..22154d4 100644 --- a/src/Entity/ProjectPage.php +++ b/src/Entity/ProjectPage.php @@ -2,44 +2,30 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectPageRepository; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; +use Nines\UtilBundle\Entity\AbstractEntity; use Nines\UtilBundle\Entity\ContentEntityInterface; use Nines\UtilBundle\Entity\ContentExcerptTrait; -/** - * ProjectPage. - * - * @ORM\Table(name="project_page", indexes={ - * @ORM\Index(columns={"title", "content"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\ProjectPageRepository") - */ -class ProjectPage extends \Nines\UtilBundle\Entity\AbstractEntity implements ContentEntityInterface { +#[ORM\Entity(repositoryClass: ProjectPageRepository::class)] +#[ORM\Table(name: 'project_page')] +#[ORM\Index(columns: ['title', 'content'], flags: ['fulltext'])] +class ProjectPage extends AbstractEntity implements ContentEntityInterface { use ContentExcerptTrait; /** * Blog post title. - * - * @var string - * - * @ORM\Column(name="title", type="string", nullable=false) */ - private $title; + #[ORM\Column(name: 'title', type: Types::STRING, nullable: false)] + private ?string $title = null; - /** - * @var Project - * @ORM\ManyToOne(targetEntity="Project", inversedBy="projectPages") - * @ORM\JoinColumn(nullable=false) - */ - private $project; + #[ORM\ManyToOne(targetEntity: Project::class, inversedBy: 'projectPages')] + #[ORM\JoinColumn(nullable: false)] + private ?Project $project = null; public function __construct() { parent::__construct(); @@ -49,47 +35,23 @@ public function __toString() : string { return $this->title; } - /** - * Set title. - * - * @param string $title - * - * @return ProjectPage - */ - public function setTitle($title) { + public function setTitle(?string $title) : self { $this->title = $title; return $this; } - /** - * Get title. - * - * @return string - */ - public function getTitle() { + public function getTitle() : ?string { return $this->title; } - /** - * Set project. - * - * @param \App\Entity\Project $project - * - * @return ProjectPage - */ - public function setProject(?Project $project = null) { + public function setProject(?Project $project = null) : self { $this->project = $project; return $this; } - /** - * Get project. - * - * @return \App\Entity\Project - */ - public function getProject() { + public function getProject() : ?Project { return $this->project; } } diff --git a/src/Entity/ProjectRole.php b/src/Entity/ProjectRole.php index 6ba980b..f51401b 100644 --- a/src/Entity/ProjectRole.php +++ b/src/Entity/ProjectRole.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectRoleRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * ProjectRole. - * - * @ORM\Table(name="project_role") - * @ORM\Entity(repositoryClass="App\Repository\ProjectRoleRepository") */ +#[ORM\Entity(repositoryClass: ProjectRoleRepository::class)] +#[ORM\Table(name: 'project_role')] class ProjectRole extends AbstractTerm { /** * @var Collection|ProjectContribution[] - * @ORM\OneToMany(targetEntity="ProjectContribution", mappedBy="projectRole") */ - private $contributions; + #[ORM\OneToMany(targetEntity: ProjectContribution::class, mappedBy: 'projectRole')] + private Collection $contributions; public function __construct() { parent::__construct(); $this->contributions = new ArrayCollection(); } - /** - * Add contribution. - * - * @return ProjectRole - */ - public function addContribution(ProjectContribution $contribution) { + public function addContribution(ProjectContribution $contribution) : self { $this->contributions[] = $contribution; return $this; } - /** - * Remove contribution. - */ public function removeContribution(ProjectContribution $contribution) : void { $this->contributions->removeElement($contribution); } - /** - * Get contributions. - * - * @return Collection - */ - public function getContributions() { + public function getContributions() : Collection { return $this->contributions; } } diff --git a/src/Entity/Venue.php b/src/Entity/Venue.php index 02f12c8..13125b0 100644 --- a/src/Entity/Venue.php +++ b/src/Entity/Venue.php @@ -2,71 +2,44 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Nines\UtilBundle\Entity\AbstractEntity; -/** - * Venue. - * - * @ORM\Table(name="venue", indexes={ - * @ORM\Index(columns={"name", "address", "description", "url"}, flags={"fulltext"}), - * }) - * @ORM\Entity(repositoryClass="App\Repository\VenueRepository") - */ +#[ORM\Entity(repositoryClass: VenueRepository::class)] +#[ORM\Table(name: 'venue')] +#[ORM\Index(columns: ['name', 'address', 'description', 'url'], flags: ['fulltext'])] class Venue extends AbstractEntity { - /** - * @var string - * @ORM\Column(type="string") - */ - private $name; + #[ORM\Column(type: Types::STRING)] + private ?string $name = null; - /** - * @var string - * @ORM\Column(type="string") - */ - private $address; + #[ORM\Column(type: Types::STRING)] + private ?string $address = null; - /** - * @var string - * @ORM\Column(type="text") - */ - private $description; + #[ORM\Column(type: Types::TEXT)] + private ?string $description = null; - /** - * @var string - * @ORM\Column(type="string", nullable=true) - */ - private $url; + #[ORM\Column(type: Types::STRING, nullable: true)] + private ?string $url = null; - /** - * @var Location - * @ORM\ManyToOne(targetEntity="Location", inversedBy="venues") - * @ORM\JoinColumn(nullable=false) - */ - private $location; + #[ORM\ManyToOne(targetEntity: Location::class, inversedBy: 'venues')] + #[ORM\JoinColumn(nullable: false)] + private ?Location $location = null; - /** - * @var VenueCategory - * @ORM\ManyToOne(targetEntity="VenueCategory", inversedBy="venues") - * @ORM\JoinColumn(nullable=false) - */ - private $venueCategory; + #[ORM\ManyToOne(targetEntity: VenueCategory::class, inversedBy: 'venues')] + #[ORM\JoinColumn(nullable: false)] + private ?VenueCategory $venueCategory = null; /** * @var Collection|Project[] - * @ORM\ManyToMany(targetEntity="Project", mappedBy="venues") */ - private $projects; + #[ORM\ManyToMany(targetEntity: Project::class, mappedBy: 'venues')] + private Collection $projects; public function __construct() { parent::__construct(); @@ -77,162 +50,77 @@ public function __toString() : string { return $this->name; } - /** - * Set name. - * - * @param string $name - * - * @return Venue - */ - public function setName($name) { + public function setName(?string $name) : self { $this->name = $name; return $this; } - /** - * Get name. - * - * @return string - */ - public function getName() { + public function getName() : ?string { return $this->name; } - /** - * Set address. - * - * @param string $address - * - * @return Venue - */ - public function setAddress($address) { + public function setAddress(?string $address) : self { $this->address = $address; return $this; } - /** - * Get address. - * - * @return string - */ - public function getAddress() { + public function getAddress() : ?string { return $this->address; } - /** - * Set description. - * - * @param string $description - * - * @return Venue - */ - public function setDescription($description) { + public function setDescription(?string $description) : self { $this->description = $description; return $this; } - /** - * Get description. - * - * @return string - */ - public function getDescription() { + public function getDescription() : ?string { return $this->description; } - /** - * Set url. - * - * @param string $url - * - * @return Venue - */ - public function setUrl($url) { + public function setUrl($url) : self { $this->url = $url; return $this; } - /** - * Get url. - * - * @return string - */ - public function getUrl() { + public function getUrl() : ?string { return $this->url; } - /** - * Set location. - * - * @param Location $location - * - * @return Venue - */ - public function setLocation(?Location $location = null) { + public function setLocation(?Location $location = null) : self { $this->location = $location; return $this; } - /** - * Get location. - * - * @return Location - */ - public function getLocation() { + public function getLocation() : ?Location { return $this->location; } - /** - * Set venueCategory. - * - * @param VenueCategory $venueCategory - * - * @return Venue - */ - public function setVenueCategory(?VenueCategory $venueCategory = null) { + public function setVenueCategory(?VenueCategory $venueCategory = null) : self { $this->venueCategory = $venueCategory; return $this; } - /** - * Get venueCategory. - * - * @return VenueCategory - */ - public function getVenueCategory() { + public function getVenueCategory() : ?VenueCategory { return $this->venueCategory; } - /** - * Add project. - * - * @return Venue - */ - public function addProject(Project $project) { + public function addProject(Project $project) : self { $this->projects[] = $project; return $this; } - /** - * Remove project. - */ public function removeProject(Project $project) : void { $this->projects->removeElement($project); } - /** - * Get projects. - * - * @return Collection - */ - public function getProjects() { + public function getProjects() : Collection { return $this->projects; } } diff --git a/src/Entity/VenueCategory.php b/src/Entity/VenueCategory.php index e3f1a35..8e4265e 100644 --- a/src/Entity/VenueCategory.php +++ b/src/Entity/VenueCategory.php @@ -2,14 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueCategoryRepository; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; @@ -17,46 +12,32 @@ /** * VenueCategory. - * - * @ORM\Table(name="venue_category") - * @ORM\Entity(repositoryClass="App\Repository\VenueCategoryRepository") */ +#[ORM\Entity(repositoryClass: VenueCategoryRepository::class)] +#[ORM\Table(name: 'venue_category')] class VenueCategory extends AbstractTerm { /** * @var Collection|Venue[] - * @ORM\OneToMany(targetEntity="Venue", mappedBy="venueCategory") */ - private $venues; + #[ORM\OneToMany(targetEntity: Venue::class, mappedBy: 'venueCategory')] + private Collection $venues; public function __construct() { parent::__construct(); $this->venues = new ArrayCollection(); } - /** - * Add venue. - * - * @return VenueCategory - */ - public function addVenue(Venue $venue) { + public function addVenue(Venue $venue) : self { $this->venues[] = $venue; return $this; } - /** - * Remove venue. - */ public function removeVenue(Venue $venue) : void { $this->venues->removeElement($venue); } - /** - * Get venues. - * - * @return Collection - */ - public function getVenues() { + public function getVenues() : Collection { return $this->venues; } } diff --git a/src/EventListener/FileUploadListener.php b/src/EventListener/FileUploadListener.php index eae20ac..6ef5e72 100644 --- a/src/EventListener/FileUploadListener.php +++ b/src/EventListener/FileUploadListener.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\EventListener; use App\Entity\MediaFile; @@ -19,26 +13,11 @@ use Symfony\Component\HttpFoundation\File\UploadedFile; class FileUploadListener { - /** - * @var FileUploader - */ - private $uploader; - - /** - * @var Thumbnailer - */ - private $thumbnailer; - - /** - * @var string - */ - private $missingFile; - - public function __construct(FileUploader $uploader, Thumbnailer $thumbnailer, $missingFile) { - $this->uploader = $uploader; - $this->thumbnailer = $thumbnailer; - $this->missingFile = $missingFile; - } + public function __construct( + private FileUploader $uploader, + private Thumbnailer $thumbnailer, + private string $missingFile + ) {} private function uploadFile($entity) : void { if ( ! $entity instanceof MediaFile) { diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index 880df54..ac31797 100644 --- a/src/EventListener/RequestListener.php +++ b/src/EventListener/RequestListener.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\EventListener; use Symfony\Component\HttpFoundation\RedirectResponse; diff --git a/src/Form/ArtisticStatementType.php b/src/Form/ArtisticStatementType.php index 31cac40..235abaa 100644 --- a/src/Form/ArtisticStatementType.php +++ b/src/Form/ArtisticStatementType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtisticStatement; diff --git a/src/Form/Artwork/ArtworkCategoryType.php b/src/Form/Artwork/ArtworkCategoryType.php index e1d7e83..34ecbbb 100644 --- a/src/Form/Artwork/ArtworkCategoryType.php +++ b/src/Form/Artwork/ArtworkCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\ArtworkCategory; diff --git a/src/Form/Artwork/ArtworkContributionType.php b/src/Form/Artwork/ArtworkContributionType.php index 1d247e7..0035126 100644 --- a/src/Form/Artwork/ArtworkContributionType.php +++ b/src/Form/Artwork/ArtworkContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\Artwork; @@ -20,14 +14,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class ArtworkContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $artwork = $options['artwork']; diff --git a/src/Form/Artwork/ArtworkContributionsType.php b/src/Form/Artwork/ArtworkContributionsType.php index 3a9c72f..8371190 100644 --- a/src/Form/Artwork/ArtworkContributionsType.php +++ b/src/Form/Artwork/ArtworkContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\Artwork; @@ -16,11 +10,6 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -/** - * Description of ArtworkContributions. - * - * @author michael - */ class ArtworkContributionsType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) : void { $artwork = $options['artwork']; diff --git a/src/Form/Artwork/ArtworkRoleType.php b/src/Form/Artwork/ArtworkRoleType.php index 7f194bb..ae57b0e 100644 --- a/src/Form/Artwork/ArtworkRoleType.php +++ b/src/Form/Artwork/ArtworkRoleType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\ArtworkRole; diff --git a/src/Form/Artwork/ArtworkType.php b/src/Form/Artwork/ArtworkType.php index cc0be66..9c1ea1c 100644 --- a/src/Form/Artwork/ArtworkType.php +++ b/src/Form/Artwork/ArtworkType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\Artwork; diff --git a/src/Form/Artwork/ProjectsType.php b/src/Form/Artwork/ProjectsType.php index 42e491e..a4ff1cd 100644 --- a/src/Form/Artwork/ProjectsType.php +++ b/src/Form/Artwork/ProjectsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Artwork; use App\Entity\Artwork; diff --git a/src/Form/LocationType.php b/src/Form/LocationType.php index 251c883..2beb1bf 100644 --- a/src/Form/LocationType.php +++ b/src/Form/LocationType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Location; diff --git a/src/Form/MediaFileCategoryType.php b/src/Form/MediaFileCategoryType.php index 0e83138..e1d7513 100644 --- a/src/Form/MediaFileCategoryType.php +++ b/src/Form/MediaFileCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileCategory; diff --git a/src/Form/MediaFileMetadataType.php b/src/Form/MediaFileMetadataType.php index 6bc69c9..b508593 100644 --- a/src/Form/MediaFileMetadataType.php +++ b/src/Form/MediaFileMetadataType.php @@ -2,15 +2,9 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form; -use Nines\DublinCoreBundle\Entity\AbstractField; +use App\Entity\AbstractField; use Nines\DublinCoreBundle\Entity\Element; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; diff --git a/src/Form/MediaFileType.php b/src/Form/MediaFileType.php index 0c54713..7afae2d 100644 --- a/src/Form/MediaFileType.php +++ b/src/Form/MediaFileType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFile; diff --git a/src/Form/Organization/ArtworkContributionType.php b/src/Form/Organization/ArtworkContributionType.php index 130add5..8cab101 100644 --- a/src/Form/Organization/ArtworkContributionType.php +++ b/src/Form/Organization/ArtworkContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Organization; use App\Entity\ArtworkContribution; @@ -19,20 +13,8 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -/** - * Description of ArtworkContribution. - * - * @author michael - */ class ArtworkContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $organization = $options['organization']; diff --git a/src/Form/Organization/ArtworkContributionsType.php b/src/Form/Organization/ArtworkContributionsType.php index d401f39..eb2a42f 100644 --- a/src/Form/Organization/ArtworkContributionsType.php +++ b/src/Form/Organization/ArtworkContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Organization; use App\Entity\Organization; diff --git a/src/Form/Organization/OrganizationType.php b/src/Form/Organization/OrganizationType.php index 1020786..e529cf5 100644 --- a/src/Form/Organization/OrganizationType.php +++ b/src/Form/Organization/OrganizationType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Organization; use App\Entity\Organization; diff --git a/src/Form/Organization/ProjectContributionType.php b/src/Form/Organization/ProjectContributionType.php index 82125bf..0e3f087 100644 --- a/src/Form/Organization/ProjectContributionType.php +++ b/src/Form/Organization/ProjectContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Organization; use App\Entity\Organization; @@ -19,20 +13,8 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -/** - * Description of ProjectContribution. - * - * @author michael - */ class ProjectContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $organization = $options['organization']; diff --git a/src/Form/Organization/ProjectContributionsType.php b/src/Form/Organization/ProjectContributionsType.php index 9074745..e807755 100644 --- a/src/Form/Organization/ProjectContributionsType.php +++ b/src/Form/Organization/ProjectContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Organization; use App\Entity\Organization; diff --git a/src/Form/Person/ArtworkContributionType.php b/src/Form/Person/ArtworkContributionType.php index d925c72..4338856 100644 --- a/src/Form/Person/ArtworkContributionType.php +++ b/src/Form/Person/ArtworkContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Person; use App\Entity\ArtworkContribution; @@ -19,20 +13,8 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -/** - * Description of ArtworkContribution. - * - * @author michael - */ class ArtworkContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $person = $options['person']; diff --git a/src/Form/Person/ArtworkContributionsType.php b/src/Form/Person/ArtworkContributionsType.php index d870cff..9243bf8 100644 --- a/src/Form/Person/ArtworkContributionsType.php +++ b/src/Form/Person/ArtworkContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Person; use App\Entity\Person; diff --git a/src/Form/Person/PersonType.php b/src/Form/Person/PersonType.php index dee50c5..de4727a 100644 --- a/src/Form/Person/PersonType.php +++ b/src/Form/Person/PersonType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Person; use App\Entity\Person; diff --git a/src/Form/Person/ProjectContributionType.php b/src/Form/Person/ProjectContributionType.php index 2f7bdd5..32ea7c6 100644 --- a/src/Form/Person/ProjectContributionType.php +++ b/src/Form/Person/ProjectContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Person; use App\Entity\Person; @@ -19,20 +13,8 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -/** - * Description of ProjectContribution. - * - * @author michael - */ class ProjectContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $person = $options['person']; diff --git a/src/Form/Person/ProjectContributionsType.php b/src/Form/Person/ProjectContributionsType.php index dfa2496..dd69436 100644 --- a/src/Form/Person/ProjectContributionsType.php +++ b/src/Form/Person/ProjectContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Person; use App\Entity\Person; diff --git a/src/Form/Project/ArtworksType.php b/src/Form/Project/ArtworksType.php index 1e70029..daae51a 100644 --- a/src/Form/Project/ArtworksType.php +++ b/src/Form/Project/ArtworksType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\Artwork; diff --git a/src/Form/Project/ContributionType.php b/src/Form/Project/ContributionType.php index 1d08d8e..ac08736 100644 --- a/src/Form/Project/ContributionType.php +++ b/src/Form/Project/ContributionType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\Project; @@ -20,14 +14,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver; class ContributionType extends AbstractType { - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(EntityManagerInterface $em) { - $this->em = $em; - } + public function __construct(private EntityManagerInterface $em) {} public function buildForm(FormBuilderInterface $builder, array $options) : void { $project = $options['project']; diff --git a/src/Form/Project/ContributionsType.php b/src/Form/Project/ContributionsType.php index 79b2a95..6735a3e 100644 --- a/src/Form/Project/ContributionsType.php +++ b/src/Form/Project/ContributionsType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\Project; diff --git a/src/Form/Project/ProjectCategoryType.php b/src/Form/Project/ProjectCategoryType.php index c0259ac..51949a6 100644 --- a/src/Form/Project/ProjectCategoryType.php +++ b/src/Form/Project/ProjectCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\ProjectCategory; diff --git a/src/Form/Project/ProjectPageType.php b/src/Form/Project/ProjectPageType.php index 28b0d38..cf326e7 100644 --- a/src/Form/Project/ProjectPageType.php +++ b/src/Form/Project/ProjectPageType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\ProjectPage; diff --git a/src/Form/Project/ProjectRoleType.php b/src/Form/Project/ProjectRoleType.php index 2b71463..4f9f8ab 100644 --- a/src/Form/Project/ProjectRoleType.php +++ b/src/Form/Project/ProjectRoleType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\ProjectRole; diff --git a/src/Form/Project/ProjectType.php b/src/Form/Project/ProjectType.php index f4f133f..1dfedf0 100644 --- a/src/Form/Project/ProjectType.php +++ b/src/Form/Project/ProjectType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Form\Project; use App\Entity\Project; diff --git a/src/Form/VenueCategoryType.php b/src/Form/VenueCategoryType.php index b8b65a8..05d3837 100644 --- a/src/Form/VenueCategoryType.php +++ b/src/Form/VenueCategoryType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueCategory; diff --git a/src/Form/VenueType.php b/src/Form/VenueType.php index d353daa..7ce9338 100644 --- a/src/Form/VenueType.php +++ b/src/Form/VenueType.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Venue; 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 40fa615..49257b9 100644 --- a/src/Menu/Builder.php +++ b/src/Menu/Builder.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Menu; use Doctrine\ORM\EntityManagerInterface; @@ -26,32 +20,7 @@ class Builder implements ContainerAwareInterface { public const CARET = ' ▾'; // U+25BE, black down-pointing small triangle. - /** - * @var FactoryInterface - */ - private $factory; - - /** - * @var AuthorizationCheckerInterface - */ - private $authChecker; - - /** - * @var TokenStorageInterface - */ - private $tokenStorage; - - /** - * @var EntityManagerInterface - */ - private $em; - - public function __construct(FactoryInterface $factory, AuthorizationCheckerInterface $authChecker, TokenStorageInterface $tokenStorage, EntityManagerInterface $em) { - $this->factory = $factory; - $this->authChecker = $authChecker; - $this->tokenStorage = $tokenStorage; - $this->em = $em; - } + public function __construct(private FactoryInterface $factory, private AuthorizationCheckerInterface $authChecker, private TokenStorageInterface $tokenStorage, private EntityManagerInterface $em) {} private function hasRole($role) { if ( ! $this->tokenStorage->getToken()) { @@ -61,12 +30,7 @@ private function hasRole($role) { return $this->authChecker->isGranted($role); } - /** - * Build a menu for blog posts. - * - * @return ItemInterface - */ - public function mainMenu(array $options) { + public function mainMenu(array $options) : ItemInterface { $menu = $this->factory->createItem('root'); $menu->setChildrenAttributes([ 'class' => 'nav navbar-nav', @@ -74,97 +38,163 @@ public function mainMenu(array $options) { $menu->addChild('home', [ 'label' => 'Home', 'route' => 'homepage', + 'attributes' => [ + 'class' => 'nav-item', + ], + 'linkAttributes' => [ + 'class' => 'nav-link', + ], ]); - $browse = $menu->addChild('browse', [ - 'label' => 'Browse ' . self::CARET, + $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', + 'aria-labelledby' => 'browse-dropdown', + ], ]); - $browse->setAttribute('dropdown', true); - $browse->setLinkAttribute('class', 'dropdown-toggle'); - $browse->setLinkAttribute('data-toggle', 'dropdown'); - $browse->setChildrenAttribute('class', 'dropdown-menu'); - $browse->addChild('artwork', [ 'label' => 'Artworks', 'route' => 'artwork_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('artistic_statement', [ 'label' => 'Artistic Statements', 'route' => 'artwork_statement_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('location', [ 'label' => 'Locations', 'route' => 'location_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('mediafile', [ 'label' => 'Media Files', 'route' => 'media_file_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('person', [ 'label' => 'People', 'route' => 'person_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('project', [ 'label' => 'Projects', 'route' => 'project_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('organization', [ 'label' => 'Organizations', 'route' => 'organization_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('venue', [ 'label' => 'Venues', 'route' => 'venue_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); if ($this->hasRole('ROLE_USER')) { - $browse->addChild('divider', [ - 'label' => '', - ]); - $browse['divider']->setAttributes([ - 'role' => 'separator', - 'class' => 'divider', + $browse->addChild('divider1', [ + 'label' => '', + 'attributes' => [ + 'aria-hidden' => 'true', + ], + 'extras' => [ + 'safe_label' => true, + ], ]); $browse->addChild('artwork_contributions', [ 'label' => 'Artwork Contributions', 'route' => 'artwork_contribution_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('project_contributions', [ 'label' => 'Project Contributions', 'route' => 'project_contribution_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('divider2', [ - 'label' => '', - ]); - $browse['divider2']->setAttributes([ - 'role' => 'separator', - 'class' => 'divider', + 'label' => '', + 'attributes' => [ + 'aria-hidden' => 'true', + ], + 'extras' => [ + 'safe_label' => true, + ], ]); $browse->addChild('artwork_category', [ 'label' => 'Artwork Categories', 'route' => 'artwork_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('artwork_role', [ 'label' => 'Artwork Roles', 'route' => 'artwork_role_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('mediafile_category', [ 'label' => 'Media File Categories', 'route' => 'media_file_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('project_role', [ 'label' => 'Project Roles', 'route' => 'project_role_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('project_category', [ 'label' => 'Project Categories', 'route' => 'project_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); $browse->addChild('venue_category', [ 'label' => 'Venue Categories', 'route' => 'venue_category_index', + 'linkAttributes' => [ + 'class' => 'dropdown-item link-dark', + ], ]); } diff --git a/src/Repository/ArtisticStatementRepository.php b/src/Repository/ArtisticStatementRepository.php index b12c620..426ee54 100644 --- a/src/Repository/ArtisticStatementRepository.php +++ b/src/Repository/ArtisticStatementRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtisticStatement; diff --git a/src/Repository/ArtworkCategoryRepository.php b/src/Repository/ArtworkCategoryRepository.php index 1ec714c..17ac474 100644 --- a/src/Repository/ArtworkCategoryRepository.php +++ b/src/Repository/ArtworkCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkCategory; diff --git a/src/Repository/ArtworkContributionRepository.php b/src/Repository/ArtworkContributionRepository.php index 6e35e82..78a9f58 100644 --- a/src/Repository/ArtworkContributionRepository.php +++ b/src/Repository/ArtworkContributionRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkContribution; diff --git a/src/Repository/ArtworkRepository.php b/src/Repository/ArtworkRepository.php index 9f0fadb..6af9ae5 100644 --- a/src/Repository/ArtworkRepository.php +++ b/src/Repository/ArtworkRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Artwork; @@ -27,8 +21,8 @@ public function __construct(ManagerRegistry $registry) { public function fulltextQuery($q) { $qb = $this->createQueryBuilder('e'); - $qb->addSelect('MATCH_AGAINST (e.title, e.content, e.materials, e.copyright) AGAINST (:q BOOLEAN) as HIDDEN score'); - $qb->add('where', 'MATCH_AGAINST (e.title, e.content, e.materials, e.copyright) AGAINST (:q BOOLEAN) > 0'); + $qb->addSelect('MATCH (e.title, e.content, e.materials, e.copyright) AGAINST (:q BOOLEAN) as HIDDEN score'); + $qb->add('where', 'MATCH (e.title, e.content, e.materials, e.copyright) AGAINST (:q BOOLEAN) > 0'); $qb->orderBy('score', 'desc'); $qb->setParameter('q', $q); diff --git a/src/Repository/ArtworkRoleRepository.php b/src/Repository/ArtworkRoleRepository.php index d6215e6..248d4ef 100644 --- a/src/Repository/ArtworkRoleRepository.php +++ b/src/Repository/ArtworkRoleRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ArtworkRole; diff --git a/src/Repository/LocationRepository.php b/src/Repository/LocationRepository.php index 2e49427..1b633f0 100644 --- a/src/Repository/LocationRepository.php +++ b/src/Repository/LocationRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Location; @@ -27,8 +21,8 @@ public function __construct(ManagerRegistry $registry) { public function fulltextQuery($q) { $qb = $this->createQueryBuilder('e'); - $qb->addSelect('MATCH_AGAINST (e.city, e.region, e.country) AGAINST (:q BOOLEAN) as HIDDEN score'); - $qb->add('where', 'MATCH_AGAINST (e.city, e.region, e.country) AGAINST (:q BOOLEAN) > 0'); + $qb->addSelect('MATCH (e.city, e.region, e.country) AGAINST (:q BOOLEAN) as HIDDEN score'); + $qb->add('where', 'MATCH (e.city, e.region, e.country) AGAINST (:q BOOLEAN) > 0'); $qb->orderBy('score', 'desc'); $qb->setParameter('q', $q); diff --git a/src/Repository/MediaFileCategoryRepository.php b/src/Repository/MediaFileCategoryRepository.php index 951d534..ce1ddb9 100644 --- a/src/Repository/MediaFileCategoryRepository.php +++ b/src/Repository/MediaFileCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileCategory; diff --git a/src/Repository/MediaFileFieldRepository.php b/src/Repository/MediaFileFieldRepository.php index ffc89eb..06aa321 100644 --- a/src/Repository/MediaFileFieldRepository.php +++ b/src/Repository/MediaFileFieldRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFileField; diff --git a/src/Repository/MediaFileRepository.php b/src/Repository/MediaFileRepository.php index df3eab1..f65417d 100644 --- a/src/Repository/MediaFileRepository.php +++ b/src/Repository/MediaFileRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\MediaFile; @@ -29,7 +23,7 @@ public function searchQuery($q) { $qb = $this->createQueryBuilder('e'); $qb->distinct(); $qb->innerJoin('e.metadataFields', 'f'); - $qb->orWhere('MATCH_AGAINST(f.value) AGAINST (:q BOOLEAN) > 0'); + $qb->orWhere('MATCH(f.value) AGAINST (:q BOOLEAN) > 0'); $qb->setParameter('q', $q); return $qb->getQuery(); diff --git a/src/Repository/OrganizationRepository.php b/src/Repository/OrganizationRepository.php index 725fa35..9c1e699 100644 --- a/src/Repository/OrganizationRepository.php +++ b/src/Repository/OrganizationRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Organization; @@ -27,8 +21,8 @@ public function __construct(ManagerRegistry $registry) { public function fulltextQuery($q) { $qb = $this->createQueryBuilder('e'); - $qb->addSelect('MATCH_AGAINST (e.name, e.address, e.description, e.url, e.contact) AGAINST(:q BOOLEAN) as HIDDEN score'); - $qb->add('where', 'MATCH_AGAINST (e.name, e.address, e.description, e.url, e.contact) AGAINST(:q BOOLEAN) > 0'); + $qb->addSelect('MATCH (e.name, e.address, e.description, e.url, e.contact) AGAINST(:q BOOLEAN) as HIDDEN score'); + $qb->add('where', 'MATCH (e.name, e.address, e.description, e.url, e.contact) AGAINST(:q BOOLEAN) > 0'); $qb->orderBy('score', 'desc'); $qb->setParameter('q', $q); diff --git a/src/Repository/PersonRepository.php b/src/Repository/PersonRepository.php index 64bbb07..53160b1 100644 --- a/src/Repository/PersonRepository.php +++ b/src/Repository/PersonRepository.php @@ -2,16 +2,12 @@ declare(strict_types=1); -/* - * (c) 2021 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\Person; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; +use Doctrine\Common\Collections\Collection; +use Doctrine\ORM\Query; use Doctrine\Persistence\ManagerRegistry; /** @@ -25,14 +21,7 @@ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Person::class); } - /** - * Do a typeahead-style query and return the results. - * - * @param string $q - * - * @return Collection|Person[] - */ - public function typeaheadQuery($q) { + public function typeaheadQuery(string $q) : Collection { $qb = $this->createQueryBuilder('p'); $qb->where('p.fullname like :q'); $qb->setParameter('q', '%' . $q . '%'); @@ -40,9 +29,9 @@ public function typeaheadQuery($q) { return $qb->getQuery()->execute(); } - public function searchQuery($q) { + public function searchQuery(string $q) : Query { $qb = $this->createQueryBuilder('e'); - $qb->where('MATCH_AGAINST(e.fullname, e.biography) AGAINST(:q BOOLEAN) > 0'); + $qb->where('MATCH(e.fullname, e.biography) AGAINST(:q BOOLEAN) > 0'); $qb->setParameter('q', $q); return $qb->getQuery(); diff --git a/src/Repository/ProjectCategoryRepository.php b/src/Repository/ProjectCategoryRepository.php index 31254a9..3046eb6 100644 --- a/src/Repository/ProjectCategoryRepository.php +++ b/src/Repository/ProjectCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectCategory; diff --git a/src/Repository/ProjectContributionRepository.php b/src/Repository/ProjectContributionRepository.php index 713e9c6..b7aa2b0 100644 --- a/src/Repository/ProjectContributionRepository.php +++ b/src/Repository/ProjectContributionRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectContribution; diff --git a/src/Repository/ProjectPageRepository.php b/src/Repository/ProjectPageRepository.php index d181184..86e4f3c 100644 --- a/src/Repository/ProjectPageRepository.php +++ b/src/Repository/ProjectPageRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectPage; diff --git a/src/Repository/ProjectRepository.php b/src/Repository/ProjectRepository.php index 2edc464..a12a40d 100644 --- a/src/Repository/ProjectRepository.php +++ b/src/Repository/ProjectRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Project; @@ -27,11 +21,11 @@ public function __construct(ManagerRegistry $registry) { public function fulltextQuery($q) { $qb = $this->createQueryBuilder('e'); - $qb->addSelect('MATCH_AGAINST (e.title, e.content) AGAINST(:q BOOLEAN) as HIDDEN score'); - $qb->andWhere('MATCH_AGAINST (e.title, e.content) AGAINST(:q BOOLEAN) > 0'); + $qb->addSelect('MATCH (e.title, e.content) AGAINST(:q BOOLEAN) as HIDDEN score'); + $qb->andWhere('MATCH (e.title, e.content) AGAINST(:q BOOLEAN) > 0'); $qb->innerJoin('e.projectPages', 'p'); - $qb->orWhere('MATCH_AGAINST (p.title, p.content) AGAINST(:q BOOLEAN) > 0'); + $qb->orWhere('MATCH (p.title, p.content) AGAINST(:q BOOLEAN) > 0'); $qb->orderBy('score', 'desc'); $qb->setParameter('q', $q); diff --git a/src/Repository/ProjectRoleRepository.php b/src/Repository/ProjectRoleRepository.php index d98be40..a8574c3 100644 --- a/src/Repository/ProjectRoleRepository.php +++ b/src/Repository/ProjectRoleRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\ProjectRole; diff --git a/src/Repository/VenueCategoryRepository.php b/src/Repository/VenueCategoryRepository.php index 81ccda4..744a4db 100644 --- a/src/Repository/VenueCategoryRepository.php +++ b/src/Repository/VenueCategoryRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\VenueCategory; diff --git a/src/Repository/VenueRepository.php b/src/Repository/VenueRepository.php index 85afea7..bcdf4d5 100644 --- a/src/Repository/VenueRepository.php +++ b/src/Repository/VenueRepository.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 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\Venue; diff --git a/src/Services/FileUploader.php b/src/Services/FileUploader.php index db05cda..b355ea7 100644 --- a/src/Services/FileUploader.php +++ b/src/Services/FileUploader.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Services; use Symfony\Component\Filesystem\Filesystem; diff --git a/src/Services/Thumbnailer.php b/src/Services/Thumbnailer.php index 5935b76..c59ed17 100644 --- a/src/Services/Thumbnailer.php +++ b/src/Services/Thumbnailer.php @@ -2,22 +2,11 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Services; use App\Entity\MediaFile; use Imagick; -/** - * Description of Thumbnailer. - * - * @author michael - */ class Thumbnailer { private $width; diff --git a/src/Transformer/HiddenEntityTransformer.php b/src/Transformer/HiddenEntityTransformer.php index f2da64e..55ee1aa 100644 --- a/src/Transformer/HiddenEntityTransformer.php +++ b/src/Transformer/HiddenEntityTransformer.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Transformer; use Doctrine\Persistence\ObjectManager; @@ -33,55 +27,21 @@ * $builder->add('value'); * * $builder->get('work')->addModelTransformer(new HiddenEntityTransformer($this->em, Work::class)); - * - * @author michael */ class HiddenEntityTransformer implements DataTransformerInterface { - /** - * @var ObjectManager - */ - private $em; - - /** - * @var string - */ - private $class; - - /** - * Build and configure the transformer. - * - * @param type $class - */ - public function __construct(ObjectManager $em, $class) { - $this->em = $em; - $this->class = $class; - } + public function __construct(private ObjectManager $em, private string $class) {} - /** - * Transform an entity to a string. - * - * @param null|object $entity - * - * @return string - */ - public function transform($entity) { + public function transform(mixed $entity) : ?string { if (null === $entity) { - return; + return null; } return $entity->getId(); } - /** - * Transforms string into an entity. - * - * @param string $value - * - * @return null|object - */ - public function reverseTransform($value) { + public function reverseTransform(mixed $value) : mixed { if ( ! $value) { - return; + return null; } return $this->em->find($this->class, $value); diff --git a/symfony.lock b/symfony.lock index d20fabd..ed3f28e 100644 --- a/symfony.lock +++ b/symfony.lock @@ -2,6 +2,15 @@ "composer/package-versions-deprecated": { "version": "1.11.99.5" }, + "dama/doctrine-test-bundle": { + "version": "7.3", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "7.2", + "ref": "896306d79d4ee143af9eadf9b09fd34a8c391b70" + } + }, "deployer/deployer": { "version": "v6.8.0" }, @@ -108,9 +117,39 @@ "egulias/email-validator": { "version": "2.1.15" }, + "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.58", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "be2103eb4a20942e28a6dd87736669b757132435" + }, + "files": [ + ".php-cs-fixer.dist.php" + ] + }, "friendsofphp/proxy-manager-lts": { "version": "v1.0.2" }, + "google/recaptcha": { + "version": "1.3", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.1", + "ref": "e5a4aa21f2e98d7440ae9aab6b56e307f99dd084" + } + }, "guzzlehttp/guzzle": { "version": "6.5.3" }, @@ -186,6 +225,15 @@ "phpspec/prophecy": { "version": "1.13.0" }, + "phpstan/phpstan": { + "version": "1.11", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.0", + "ref": "5e490cc197fb6bb1ae22e5abbc531ddc633b6767" + } + }, "phpunit/php-code-coverage": { "version": "9.2.6" }, @@ -305,6 +353,9 @@ "config/packages/sensio_framework_extra.yaml" ] }, + "sfu-dhil/nines": { + "version": "v6.3.18" + }, "solarium/solarium": { "version": "6.1.3" }, diff --git a/templates/artistic_statement/edit.html.twig b/templates/artistic_statement/edit.html.twig index bf5aa40..1874a6e 100644 --- a/templates/artistic_statement/edit.html.twig +++ b/templates/artistic_statement/edit.html.twig @@ -7,24 +7,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} -{% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/artistic_statement/index.html.twig b/templates/artistic_statement/index.html.twig index 6a7360e..d926890 100644 --- a/templates/artistic_statement/index.html.twig +++ b/templates/artistic_statement/index.html.twig @@ -10,23 +10,18 @@

{% endblock %} -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
- -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} {% for artisticStatement in artisticStatements %}

@@ -34,7 +29,7 @@

{{ artisticStatement.excerpt|raw }} -

+

Created {{ artisticStatement.created|date }}. Most recently updated {{ artisticStatement.updated|date }}

{% endfor %} diff --git a/templates/artistic_statement/new.html.twig b/templates/artistic_statement/new.html.twig index fed3212..1ee11ac 100644 --- a/templates/artistic_statement/new.html.twig +++ b/templates/artistic_statement/new.html.twig @@ -7,24 +7,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artistic_statement/show.html.twig b/templates/artistic_statement/show.html.twig index e61e459..ff854a5 100644 --- a/templates/artistic_statement/show.html.twig +++ b/templates/artistic_statement/show.html.twig @@ -6,37 +6,34 @@

ArtisticStatement

{% endblock %} -{% block body %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
+{% block body %}

{{ artisticStatement.title }}

{% if is_granted('ROLE_USER') %} -
-

Excerpt

-
{{ artisticStatement.excerpt|raw }}
+
+

Excerpt

+
{{ artisticStatement.excerpt|raw }}
{% endif %} {{ artisticStatement.content|raw }} -
+
Created {{ artisticStatement.created|date('Y-m-d H:i:s') }}. Most recent update {{ artisticStatement.updated|date }}.
diff --git a/templates/artwork/add_media.html.twig b/templates/artwork/add_media.html.twig index 5f65199..12fb4ab 100644 --- a/templates/artwork/add_media.html.twig +++ b/templates/artwork/add_media.html.twig @@ -19,7 +19,7 @@ @@ -46,17 +46,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File category
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File category
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/artwork/contributions.html.twig b/templates/artwork/contributions.html.twig index 1af2569..f0fbd66 100644 --- a/templates/artwork/contributions.html.twig +++ b/templates/artwork/contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork/edit.html.twig b/templates/artwork/edit.html.twig index e238892..316758f 100644 --- a/templates/artwork/edit.html.twig +++ b/templates/artwork/edit.html.twig @@ -5,25 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork/index.html.twig b/templates/artwork/index.html.twig index 2f30d66..1687e9e 100644 --- a/templates/artwork/index.html.twig +++ b/templates/artwork/index.html.twig @@ -1,29 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Artwork List

Displaying {{ artworks|length }} artworks of {{ artworks.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
+{% endblock %} -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} {% for artwork in artworks %}

@@ -31,7 +26,7 @@

{{ artwork.excerpt }} -

+

Created {{ artwork.created|date }}. Most recently updated {{ artwork.updated|date }}

{% endfor %} diff --git a/templates/artwork/new.html.twig b/templates/artwork/new.html.twig index 7f3122c..3f2bf04 100644 --- a/templates/artwork/new.html.twig +++ b/templates/artwork/new.html.twig @@ -5,25 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork/projects.html.twig b/templates/artwork/projects.html.twig index 198d480..ebd6e2b 100644 --- a/templates/artwork/projects.html.twig +++ b/templates/artwork/projects.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork/remove_media.html.twig b/templates/artwork/remove_media.html.twig index ff8e84e..b3614a4 100644 --- a/templates/artwork/remove_media.html.twig +++ b/templates/artwork/remove_media.html.twig @@ -21,17 +21,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/artwork/search.html.twig b/templates/artwork/search.html.twig index e27ae73..77e074e 100644 --- a/templates/artwork/search.html.twig +++ b/templates/artwork/search.html.twig @@ -1,13 +1,13 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Artwork List

{% if artworks|length > 0 %}

Displaying {{ artworks|length }} artworks of {{ artworks.getTotalItemCount }} total.

{% endif %} -{% endblock %} +{% endblock %} {% block body %} @@ -21,7 +21,7 @@ @@ -40,7 +40,7 @@ {{ artwork.excerpt }} -

+

Created {{ artwork.created|date }}. Most recently updated {{ artwork.updated|date }}

{% endfor %} diff --git a/templates/artwork/show.html.twig b/templates/artwork/show.html.twig index 3520db9..054ccc6 100644 --- a/templates/artwork/show.html.twig +++ b/templates/artwork/show.html.twig @@ -1,41 +1,36 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Artwork

-{% endblock %} - -{% block body %} - -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% endblock %} -
+{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} +{% block body %}

{{ artwork.title }}

{% if is_granted('ROLE_USER') %} -
-

Excerpt

-
{{ artwork.excerpt }}
+
+

Excerpt

+
{{ artwork.excerpt }}
{% endif %} {{ artwork.content|raw }} {{ artwork.materials|raw }} {{ artwork.copyright|raw }} -
+
Created {{ artwork.created|date('Y-m-d H:i:s') }}. Most recent update {{ artwork.updated|date }}.
@@ -45,7 +40,7 @@ {% if is_granted('ROLE_CONTENT_ADMIN') %}

Upload media files | - Add media files | + Add media files | Remove media files

{% endif %} @@ -60,17 +55,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} @@ -94,25 +89,25 @@ {% if contribution.person %} {% set person = contribution.person %}

- {{ contribution.artworkRole }}: + {{ contribution.artworkRole }}: {{ person.fullname }}

- {{ text_service.trim(person.biography, 100) }} + {{ text_service.trim(person.biography, 100) }}

{% endif %} {% if contribution.organization %} {% set organization = contribution.organization %}

- {{ contribution.artworkRole }}: + {{ contribution.artworkRole }}: {{ organization.name }}

- {{ text_service.trim(organization.description, 100) }} + {{ text_service.trim(organization.description, 100) }}

{% endif %} {% endfor %} @@ -143,6 +138,6 @@ {{ project }} - {{ project.excerpt|raw }} + {{ project.excerpt|raw }} {% endfor %} {% endblock %} diff --git a/templates/artwork_category/edit.html.twig b/templates/artwork_category/edit.html.twig index 8f17130..e555e0e 100644 --- a/templates/artwork_category/edit.html.twig +++ b/templates/artwork_category/edit.html.twig @@ -4,25 +4,11 @@

ArtworkCategory edit

{{ form_start(edit_form) }} - {{ form_widget(edit_form) }} -
-
-
- - Cancel -
-
+ {{ form_widget(edit_form) }} +
+ + Cancel +
{{ form_end(edit_form) }} -{% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/artwork_category/index.html.twig b/templates/artwork_category/index.html.twig index e8bc014..72a6eae 100644 --- a/templates/artwork_category/index.html.twig +++ b/templates/artwork_category/index.html.twig @@ -1,31 +1,28 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ArtworkCategory List

Displaying {{ artworkCategories|length }} artworkCategories of {{ artworkCategories.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} +{% endblock %} +{% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
+ + New + {% endif %} +{% endblock %} +{% block body %} - + - + diff --git a/templates/artwork_category/new.html.twig b/templates/artwork_category/new.html.twig index 4f6cb20..79161e8 100644 --- a/templates/artwork_category/new.html.twig +++ b/templates/artwork_category/new.html.twig @@ -4,25 +4,11 @@

ArtworkCategory Creation

{{ form_start(form) }} - {{ form_widget(form) }} -
-
-
- - Cancel -
-
+ {{ form_widget(form) }} +
+ + Cancel +
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork_category/show.html.twig b/templates/artwork_category/show.html.twig index 2487776..c936875 100644 --- a/templates/artwork_category/show.html.twig +++ b/templates/artwork_category/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ArtworkCategory

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
NameLabelLabel CreatedUpdatedUpdated
diff --git a/templates/artwork_role/edit.html.twig b/templates/artwork_role/edit.html.twig index c3f1562..fed10fc 100644 --- a/templates/artwork_role/edit.html.twig +++ b/templates/artwork_role/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork_role/index.html.twig b/templates/artwork_role/index.html.twig index fd804da..1efd69b 100644 --- a/templates/artwork_role/index.html.twig +++ b/templates/artwork_role/index.html.twig @@ -1,31 +1,28 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ArtworkRole List

Displaying {{ artworkRoles|length }} artworkRoles of {{ artworkRoles.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} +{% endblock %} +{% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
+ + New + {% endif %} +{% endblock %} +{% block body %}
- + - + diff --git a/templates/artwork_role/new.html.twig b/templates/artwork_role/new.html.twig index 637a6ec..49f61cf 100644 --- a/templates/artwork_role/new.html.twig +++ b/templates/artwork_role/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/artwork_role/show.html.twig b/templates/artwork_role/show.html.twig index 9593150..db48b1b 100644 --- a/templates/artwork_role/show.html.twig +++ b/templates/artwork_role/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ArtworkRole

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
NameLabelLabel CreatedUpdatedUpdated
@@ -53,7 +51,7 @@ - + {% for contribution in artworkRole.contributions %} @@ -72,7 +70,7 @@ {% endif %} - {% endfor %} + {% endfor %}
Project Person Organization
{{ contribution.artwork }}
{% endif %} diff --git a/templates/base.html.twig b/templates/base.html.twig index 2956f99..fdbb209 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -1,83 +1,88 @@ - - - - - - {% block title %}Welcome!{% endblock %} - - - - - - - - - - - {% block styles %} - {% endblock %} - - - -
+ + + + + + {% block title %}Welcome!{% endblock %} + - {% if block('pageheader') is defined %} - - {% endif %} + + + + - {% for type, messages in app.session.flashbag.all() %} - {% for message in messages %} -
- - {{ message }} -
- {% endfor %} - {% endfor %} + - {% block body %} - {% endblock %} + + + + + + + + {% block styles %} + {% endblock %} + + + +
-
-
-

- Between The Digital -
- Documentation | - Privacy | - GitHub -

+ {% if block('pageheader') is defined %} + -
+ {% endif %} - - - {% block javascripts %} - {% endblock %} + {% for type, messages in app.session.flashbag.all() %} + {% for message in messages %} + + {% endfor %} + {% endfor %} - {% if matomo_enabled %} - {% include '@NinesUtil/matomo.html.twig' %} + {% if block("action_buttons") is defined %} +
+
+ {% block action_buttons %} + {% endblock %} +
+
{% endif %} - + + {% block body %} + {% endblock %} +
+ + + {% block javascripts %} + {% endblock %} + + {% if matomo_enabled %} + {% include '@NinesUtil/matomo.html.twig' %} + {% endif %} + diff --git a/templates/bundles/TwigBundle/Exception/details.html.twig b/templates/bundles/TwigBundle/Exception/details.html.twig deleted file mode 100644 index 8f17835..0000000 --- a/templates/bundles/TwigBundle/Exception/details.html.twig +++ /dev/null @@ -1,15 +0,0 @@ -
-
Date
-
{{ "now"|date('c') }}
-
IP
-
{{ app.request.getClientIps()|join(';') }}
-
URL
-
{{ app.request.getUri() }}
-
Class
-
{{ exception.getStatusCode() }} - {{ exception.class }}
-
Message
-
{{ exception.message }}
-
- -

- diff --git a/templates/bundles/TwigBundle/Exception/error.html.twig b/templates/bundles/TwigBundle/Exception/error.html.twig deleted file mode 100644 index 7b824f7..0000000 --- a/templates/bundles/TwigBundle/Exception/error.html.twig +++ /dev/null @@ -1,14 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block pageheader %} -

{{ exception.statusCode }} {{ exception.message }}

-{% endblock %} - -{% block body %} - -

{{ exception.class }}
- {{ exception.getStatusCode() }} - {{ exception.message }}
-

- -

-{% endblock %} diff --git a/templates/bundles/TwigBundle/Exception/error403.html.twig b/templates/bundles/TwigBundle/Exception/error403.html.twig deleted file mode 100644 index 76c02cf..0000000 --- a/templates/bundles/TwigBundle/Exception/error403.html.twig +++ /dev/null @@ -1,19 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block pageheader %} -

Unauthorized Access

-{% endblock %} - -{% block body %} - -

You do not have permission to access this URL. You may need to - login. If you are - already logged in and seeing this error, try logging out and back in. - If the problem persists and you believe you should have access, please - contact the DHIL and include the - details below: -

- - {% include '@Twig/Exception/details.html.twig' %} - -{% endblock %} diff --git a/templates/bundles/TwigBundle/Exception/error404.html.twig b/templates/bundles/TwigBundle/Exception/error404.html.twig deleted file mode 100644 index c4bfaea..0000000 --- a/templates/bundles/TwigBundle/Exception/error404.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block pageheader %} -

Page Not Found

-{% endblock %} - -{% block body %} - -

The page you have requested could not be found. If you believe this to - be an error on our side, please contact the - DHIL and include the details below. -

- - {% include '@Twig/Exception/details.html.twig' %} - -{% endblock %} diff --git a/templates/bundles/TwigBundle/Exception/error500.html.twig b/templates/bundles/TwigBundle/Exception/error500.html.twig deleted file mode 100644 index 644a331..0000000 --- a/templates/bundles/TwigBundle/Exception/error500.html.twig +++ /dev/null @@ -1,16 +0,0 @@ -{% extends 'base.html.twig' %} - -{% block pageheader %} -

Page Not Found

-{% endblock %} - -{% block body %} - -

The page you have requested has caused an internal error. Please - contact the DHIL and include - the details below. -

- - {% include '@Twig/Exception/details.html.twig' %} - -{% endblock %} diff --git a/templates/default/privacy.html.twig b/templates/default/privacy.html.twig index bf32dc9..8fb6fb0 100644 --- a/templates/default/privacy.html.twig +++ b/templates/default/privacy.html.twig @@ -65,11 +65,11 @@

Opt Out of Data Collection

-
-
-

Analytics Settings

+
+
+ Analytics Settings
-
+
{% if matomo_enabled %} @@ -77,5 +77,5 @@

Tracking is not enabled for this website.

{% endif %}
-
+
{% endblock %} diff --git a/templates/jquery.collection.html.twig b/templates/jquery.collection.html.twig deleted file mode 100644 index 2ecb405..0000000 --- a/templates/jquery.collection.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{# -# jquery.collection.html.twig -# -# Adds the following html attributes to the root node of your collection fields: -# -# - data-prototype-name: placeholder used in the prototype to replace element indexes on the collection -# - data-allow-add: if set to false, plugin will automatically set allow_add option to false -# - data-allow-delete: if set to false, plugin will automatically set allow_remove option to false -# - data-name-prefix: contains the collection's prefix used in descendant field names -# -# Those information let you configure the plugin options automatically. -# -# If you are already using a form theme, you can use both by using: -# {% -# form_theme myForm -# 'FuzAppBundle::my-form-theme.html.twig' -# 'FuzAppBundle::jquery.collection.html.twig' -# ... -# %} -#} - -{% block collection_widget %} - {% apply spaceless %} - {% if prototype is defined %} - {% set attr = attr|merge({'data-prototype': form_row(prototype)}) %} - {% set attr = attr|merge({'data-prototype-name': prototype.vars.name}) %} - {% endif %} - {% set attr = attr|merge({'data-allow-add': allow_add ? 1 : 0}) %} - {% set attr = attr|merge({'data-allow-remove': allow_delete ? 1 : 0 }) %} - {% set attr = attr|merge({'data-name-prefix': full_name}) %} - {{ block('form_widget') }} - {% endapply %} -{% endblock collection_widget %} diff --git a/templates/location/edit.html.twig b/templates/location/edit.html.twig index d47fdbe..98fdf0f 100644 --- a/templates/location/edit.html.twig +++ b/templates/location/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/location/index.html.twig b/templates/location/index.html.twig index 3f55c9c..8557d0a 100644 --- a/templates/location/index.html.twig +++ b/templates/location/index.html.twig @@ -7,21 +7,18 @@

{% endblock %} -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} diff --git a/templates/location/new.html.twig b/templates/location/new.html.twig index 9abe3f5..ba1a32f 100644 --- a/templates/location/new.html.twig +++ b/templates/location/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/location/search.html.twig b/templates/location/search.html.twig index 43fa0d8..42a0a67 100644 --- a/templates/location/search.html.twig +++ b/templates/location/search.html.twig @@ -1,13 +1,13 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Location Search

{% if locations|length > 0 %}

Displaying {{ locations|length }} locations of {{ locations.getTotalItemCount }} total.

{% endif %} -{% endblock %} +{% endblock %} {% block body %} @@ -21,7 +21,7 @@ @@ -31,8 +31,8 @@
- - + + {% if locations|length > 0 %}
@@ -41,7 +41,7 @@ - + diff --git a/templates/location/show.html.twig b/templates/location/show.html.twig index 74b5b52..c04e4ed 100644 --- a/templates/location/show.html.twig +++ b/templates/location/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Location

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
Region Country CreatedUpdatedUpdated
diff --git a/templates/media_file/audio.html.twig b/templates/media_file/audio.html.twig index 374dc97..312e8bf 100644 --- a/templates/media_file/audio.html.twig +++ b/templates/media_file/audio.html.twig @@ -1,5 +1,5 @@ - - + +
- + - + diff --git a/templates/media_file_category/new.html.twig b/templates/media_file_category/new.html.twig index aaedc09..4a1aa94 100644 --- a/templates/media_file_category/new.html.twig +++ b/templates/media_file_category/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/media_file_category/show.html.twig b/templates/media_file_category/show.html.twig index 2383e14..d4b95f2 100644 --- a/templates/media_file_category/show.html.twig +++ b/templates/media_file_category/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

MediaFileCategory

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
NameLabelLabel CreatedUpdatedUpdated
@@ -55,17 +53,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/organization/artwork_contributions.html.twig b/templates/organization/artwork_contributions.html.twig index 861a2d1..930e942 100644 --- a/templates/organization/artwork_contributions.html.twig +++ b/templates/organization/artwork_contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/organization/edit.html.twig b/templates/organization/edit.html.twig index 4e1dea2..29e28a9 100644 --- a/templates/organization/edit.html.twig +++ b/templates/organization/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/organization/index.html.twig b/templates/organization/index.html.twig index b118133..80c2208 100644 --- a/templates/organization/index.html.twig +++ b/templates/organization/index.html.twig @@ -1,29 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Organization List

Displaying {{ organizations|length }} organizations of {{ organizations.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
+{% endblock %} -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} {% for organization in organizations %}

@@ -31,7 +26,7 @@

{{ text_service.trim(organization.description, 100) }}

-

+

Created {{ organization.created|date }}. Most recently updated {{ organization.updated|date }}

{% endfor %} diff --git a/templates/organization/new.html.twig b/templates/organization/new.html.twig index 52efb7f..1392fa4 100644 --- a/templates/organization/new.html.twig +++ b/templates/organization/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/organization/project_contributions.html.twig b/templates/organization/project_contributions.html.twig index bb4957d..49c42f7 100644 --- a/templates/organization/project_contributions.html.twig +++ b/templates/organization/project_contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/organization/search.html.twig b/templates/organization/search.html.twig index 3dac80b..b48b440 100644 --- a/templates/organization/search.html.twig +++ b/templates/organization/search.html.twig @@ -1,13 +1,13 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Organization List

{% if organizations|length > 0 %}

Displaying {{ organizations|length }} organizations of {{ organizations.getTotalItemCount }} total.

{% endif %} -{% endblock %} +{% endblock %} {% block body %} @@ -21,7 +21,7 @@ @@ -41,7 +41,7 @@

{{ text_service.trim(organization.description, 100) }}

-

+

Created {{ organization.created|date }}. Most recently updated {{ organization.updated|date }}

{% endfor %} diff --git a/templates/organization/show.html.twig b/templates/organization/show.html.twig index 6663967..2bb4348 100644 --- a/templates/organization/show.html.twig +++ b/templates/organization/show.html.twig @@ -1,29 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Organization

-{% endblock %} - -{% block body %} - -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% endblock %} -
+{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} +{% block body %}

{{ organization.name }}

{{ organization.location }}
@@ -44,7 +39,7 @@ {{ organization.contact }} {% endif %} -

+

Created {{ organization.created|date }}. Most recently updated {{ organization.updated|date }}

diff --git a/templates/person/add_media.html.twig b/templates/person/add_media.html.twig index b987827..8748f59 100644 --- a/templates/person/add_media.html.twig +++ b/templates/person/add_media.html.twig @@ -19,7 +19,7 @@ @@ -46,17 +46,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/person/artwork_contributions.html.twig b/templates/person/artwork_contributions.html.twig index e5d0a8e..d0f0161 100644 --- a/templates/person/artwork_contributions.html.twig +++ b/templates/person/artwork_contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/person/edit.html.twig b/templates/person/edit.html.twig index 16a40be..3d49e16 100644 --- a/templates/person/edit.html.twig +++ b/templates/person/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/person/index.html.twig b/templates/person/index.html.twig index 6cf177d..10ab133 100644 --- a/templates/person/index.html.twig +++ b/templates/person/index.html.twig @@ -1,29 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Person List

Displaying {{ people|length }} people of {{ people.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
+{% endblock %} -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} {% for person in people %}

@@ -31,9 +26,9 @@

- {{ text_service.trim(person.biography, 100) }} + {{ text_service.trim(person.biography, 100) }}

-

+

Created {{ person.created|date }}. Most recently updated {{ person.updated|date }}

diff --git a/templates/person/new.html.twig b/templates/person/new.html.twig index 8d33465..88fa6f1 100644 --- a/templates/person/new.html.twig +++ b/templates/person/new.html.twig @@ -5,24 +5,11 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+ +
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/person/project_contributions.html.twig b/templates/person/project_contributions.html.twig index a9852a5..182ec72 100644 --- a/templates/person/project_contributions.html.twig +++ b/templates/person/project_contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/person/remove_media.html.twig b/templates/person/remove_media.html.twig index 52310e5..c82c360 100644 --- a/templates/person/remove_media.html.twig +++ b/templates/person/remove_media.html.twig @@ -21,17 +21,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/person/search.html.twig b/templates/person/search.html.twig index 67a2038..8c72267 100644 --- a/templates/person/search.html.twig +++ b/templates/person/search.html.twig @@ -1,13 +1,13 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Person List

{% if people|length > 0 %}

Displaying {{ people|length }} people of {{ people.getTotalItemCount }} total.

{% endif %} -{% endblock %} +{% endblock %} {% block body %} @@ -21,7 +21,7 @@ @@ -41,9 +41,9 @@

- {{ text_service.trim(person.biography, 100) }} + {{ text_service.trim(person.biography, 100) }}

-

+

Created {{ person.created|date }}. Most recently updated {{ person.updated|date }}

diff --git a/templates/person/show.html.twig b/templates/person/show.html.twig index 66c9f90..ad57110 100644 --- a/templates/person/show.html.twig +++ b/templates/person/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

{{ person.fullname }}

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %} {{ person.biography|raw }} {% if person.urls|length > 0 %}
    @@ -29,7 +27,7 @@ {% endfor %}
{% endif %} -

+

Created {{ person.created|date }}. Most recently updated {{ person.updated|date }}

@@ -37,7 +35,7 @@ {% if is_granted('ROLE_CONTENT_ADMIN') %}

- Add media files | + Add media files | Remove media files

{% endif %} @@ -51,17 +49,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} @@ -108,7 +106,7 @@ Update artwork contributions

{% endif %} - + {% if person.artworkContributions|length %}
diff --git a/templates/project/add_media.html.twig b/templates/project/add_media.html.twig index 923b0bc..f14bee2 100644 --- a/templates/project/add_media.html.twig +++ b/templates/project/add_media.html.twig @@ -19,7 +19,7 @@ @@ -46,17 +46,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File category
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File category
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/project/artworks.html.twig b/templates/project/artworks.html.twig index 7bbb035..b575a18 100644 --- a/templates/project/artworks.html.twig +++ b/templates/project/artworks.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project/contributions.html.twig b/templates/project/contributions.html.twig index 52d0e4e..026ec83 100644 --- a/templates/project/contributions.html.twig +++ b/templates/project/contributions.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project/edit.html.twig b/templates/project/edit.html.twig index 63ce2b1..5b6c867 100644 --- a/templates/project/edit.html.twig +++ b/templates/project/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project/index.html.twig b/templates/project/index.html.twig index 9a51869..d32cc57 100644 --- a/templates/project/index.html.twig +++ b/templates/project/index.html.twig @@ -1,29 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Project List

Displaying {{ projects|length }} projects of {{ projects.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} - - Search - -
-
+{% endblock %} -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} + + Search + +{% endblock %} +{% block body %} {% for project in projects %}

@@ -31,7 +26,7 @@

{{ project.excerpt|raw }} -

+

Created {{ project.created|date }}. Most recently updated {{ project.updated|date }}

{% endfor %} diff --git a/templates/project/new.html.twig b/templates/project/new.html.twig index c58cb61..3d849e3 100644 --- a/templates/project/new.html.twig +++ b/templates/project/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project/remove_media.html.twig b/templates/project/remove_media.html.twig index 060bb29..c9ac8f8 100644 --- a/templates/project/remove_media.html.twig +++ b/templates/project/remove_media.html.twig @@ -21,17 +21,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/project/search.html.twig b/templates/project/search.html.twig index 5cf0e8c..d263442 100644 --- a/templates/project/search.html.twig +++ b/templates/project/search.html.twig @@ -1,13 +1,13 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Project Search

{% if projects|length > 0 %}

Displaying {{ projects|length }} projects of {{ projects.getTotalItemCount }} total.

{% endif %} -{% endblock %} +{% endblock %} {% block body %} @@ -21,7 +21,7 @@ @@ -30,7 +30,7 @@

Search for projects or project pages here.

- + {% if projects|length > 0 %} {% for project in projects %} @@ -40,7 +40,7 @@ {{ project.excerpt|raw }} -

+

Created {{ project.created|date }}. Most recently updated {{ project.updated|date }}

{% endfor %} diff --git a/templates/project/show.html.twig b/templates/project/show.html.twig index 19eade7..23a8d16 100644 --- a/templates/project/show.html.twig +++ b/templates/project/show.html.twig @@ -14,35 +14,30 @@ {% endif %} {% endblock %} -{% block body %} - -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Add Page - - - Delete - - {% endif %} -
-
+{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Add Page + + + Delete + + {% endif %} +{% endblock %} +{% block body %} {% if is_granted('ROLE_USER') %} -
-
-

- Excerpt -

+
+
+ Excerpt
-
+
{{ project.excerpt|raw }}
@@ -50,7 +45,7 @@ {{ project.content|raw }} -
+
Created {{ project.created|date('Y-m-d H:i:s') }}. Most recent update {{ project.updated|date }}.
@@ -61,7 +56,7 @@ {{ projectPage.excerpt|raw }} -
+
Created {{ projectPage.created|date('Y-m-d H:i:s') }}. Most recent update {{ projectPage.updated|date }}.
{% endfor %} @@ -84,17 +79,17 @@
{{ mediaFile.getMetadataFields('dc_title', false) }} -
-
Id
-
{{ mediaFile.id }}
-
File type
-
{{ mediaFile.mimetype }}
-
Original name
-
{{ mediaFile.originalName }}
-
Uploaded
-
{{ mediaFile.updated|date }}
-
URL
-
+
+
Id
+
{{ mediaFile.id }}
+
File type
+
{{ mediaFile.mimetype }}
+
Original name
+
{{ mediaFile.originalName }}
+
Uploaded
+
{{ mediaFile.updated|date }}
+
URL
+
{{ url('media_file_raw', {'id': mediaFile.id}) }} diff --git a/templates/project_category/edit.html.twig b/templates/project_category/edit.html.twig index d26e268..faafd36 100644 --- a/templates/project_category/edit.html.twig +++ b/templates/project_category/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_category/index.html.twig b/templates/project_category/index.html.twig index dc85bea..d4e90ce 100644 --- a/templates/project_category/index.html.twig +++ b/templates/project_category/index.html.twig @@ -1,31 +1,28 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ProjectCategory List

Displaying {{ projectCategories|length }} projectCategories of {{ projectCategories.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} +{% endblock %} +{% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
+ + New + {% endif %} +{% endblock %} +{% block body %}
- + - + diff --git a/templates/project_category/new.html.twig b/templates/project_category/new.html.twig index d205518..c06b673 100644 --- a/templates/project_category/new.html.twig +++ b/templates/project_category/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_category/show.html.twig b/templates/project_category/show.html.twig index 7faccc2..7280c2e 100644 --- a/templates/project_category/show.html.twig +++ b/templates/project_category/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ProjectCategory

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
NameLabelLabel CreatedUpdatedUpdated
@@ -53,8 +51,10 @@ {{ project }}
- {{ project.venues[0].location }}: - {{ project.startDate|date }} - {{ project.endDate|date }} + {% if project.venues.first() %} + {{ project.venues.first().location }}: + {{ project.startDate|date }} - {{ project.endDate|date }} + {% endif %}

{{ project.excerpt|raw }} diff --git a/templates/project_page/edit.html.twig b/templates/project_page/edit.html.twig index d837520..07e35bf 100644 --- a/templates/project_page/edit.html.twig +++ b/templates/project_page/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_page/index.html.twig b/templates/project_page/index.html.twig index ccc778e..e6bd6c5 100644 --- a/templates/project_page/index.html.twig +++ b/templates/project_page/index.html.twig @@ -1,26 +1,21 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

{{ project }} Pages

Displaying {{ projectPages|length }} pages of {{ projectPages.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} +{% endblock %} +{% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
+ + New + {% endif %} +{% endblock %} -
- +{% block body %} {% for projectPage in projectPages %}

@@ -28,7 +23,7 @@

{{ projectPage.excerpt|raw }} -
+
Created {{ projectPage.created|date('Y-m-d H:i:s') }}. Most recent update {{ projectPage.updated|date }}.
{% endfor %} diff --git a/templates/project_page/new.html.twig b/templates/project_page/new.html.twig index f8071f9..8f0961f 100644 --- a/templates/project_page/new.html.twig +++ b/templates/project_page/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_page/show.html.twig b/templates/project_page/show.html.twig index f49ae93..4efd4af 100644 --- a/templates/project_page/show.html.twig +++ b/templates/project_page/show.html.twig @@ -1,37 +1,33 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ProjectPage

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}

{{ project.title }}

-

{{ projectPage.title }}

+

{{ projectPage.title }}

{% if is_granted('ROLE_ADMIN') %} -
-
-

- Excerpt -

+
+
+ Excerpt
-
+
{{ projectPage.excerpt|raw }}
@@ -39,7 +35,7 @@ {{ projectPage.content|raw }} -
+
Created {{ projectPage.created|date('Y-m-d H:i:s') }}. Most recent update {{ projectPage.updated|date }}.
diff --git a/templates/project_role/edit.html.twig b/templates/project_role/edit.html.twig index 6ea17d8..8e672c8 100644 --- a/templates/project_role/edit.html.twig +++ b/templates/project_role/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_role/index.html.twig b/templates/project_role/index.html.twig index 5389e59..e6b03b8 100644 --- a/templates/project_role/index.html.twig +++ b/templates/project_role/index.html.twig @@ -7,18 +7,15 @@

{% endblock %} -{% block body %} - +{% block action_buttons %} {% if is_granted('ROLE_CONTENT_ADMIN') %} -
- -
+ + New + {% endif %} +{% endblock %} +{% block body %}
diff --git a/templates/project_role/new.html.twig b/templates/project_role/new.html.twig index 01b96f3..2d4f8ae 100644 --- a/templates/project_role/new.html.twig +++ b/templates/project_role/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/project_role/show.html.twig b/templates/project_role/show.html.twig index 940aab4..5ca0231 100644 --- a/templates/project_role/show.html.twig +++ b/templates/project_role/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

ProjectRole

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
@@ -53,7 +51,7 @@ - + {% for contribution in projectRole.contributions %} @@ -72,7 +70,7 @@ {% endif %} - {% endfor %} + {% endfor %}
Project Person Organization
{{ contribution.project }}
{% endif %} diff --git a/templates/venue/edit.html.twig b/templates/venue/edit.html.twig index 9902645..9acc6f2 100644 --- a/templates/venue/edit.html.twig +++ b/templates/venue/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/venue/index.html.twig b/templates/venue/index.html.twig index 4c92595..ee58e6b 100644 --- a/templates/venue/index.html.twig +++ b/templates/venue/index.html.twig @@ -1,26 +1,21 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Venue List

Displaying {{ venues|length }} venues of {{ venues.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} - -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} -
-
+{% endblock %} -
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} +{% endblock %} +{% block body %} {% for venue in venues %}

@@ -28,7 +23,7 @@

{{ text_service.trim(venue.description, 100) }}

-

+

Created {{ venue.created|date }}. Most recently updated {{ venue.updated|date }}

{% endfor %} diff --git a/templates/venue/new.html.twig b/templates/venue/new.html.twig index 35709b5..3a2f5da 100644 --- a/templates/venue/new.html.twig +++ b/templates/venue/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/venue/show.html.twig b/templates/venue/show.html.twig index c44b1b6..1f29fb3 100644 --- a/templates/venue/show.html.twig +++ b/templates/venue/show.html.twig @@ -1,35 +1,30 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

Venue

-{% endblock %} - -{% block body %} - -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% endblock %} -
+{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} +{% block body %}

{{ venue.name }}

{{ venue.location }}

{{ venue.address }}

{{ venue.description|raw }}

{{ venue.url }}

-

+

Created {{ venue.created|date }}. Most recently updated {{ venue.updated|date }}

@@ -41,8 +36,8 @@

- {{ text_service.trim(project.description, 100) }} -

+ {{ text_service.trim(project.description, 100) }} +

{% endfor %} {% endif %} diff --git a/templates/venue_category/edit.html.twig b/templates/venue_category/edit.html.twig index 44a2fc8..8c2e346 100644 --- a/templates/venue_category/edit.html.twig +++ b/templates/venue_category/edit.html.twig @@ -5,24 +5,10 @@ {{ form_start(edit_form) }} {{ form_widget(edit_form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(edit_form) }} {% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} diff --git a/templates/venue_category/index.html.twig b/templates/venue_category/index.html.twig index a0830c5..9148d4b 100644 --- a/templates/venue_category/index.html.twig +++ b/templates/venue_category/index.html.twig @@ -1,31 +1,28 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

VenueCategory List

Displaying {{ venueCategories|length }} venueCategories of {{ venueCategories.getTotalItemCount }} total.

-{% endblock %} - -{% block body %} +{% endblock %} -
-
- {% if is_granted('ROLE_CONTENT_ADMIN') %} - - New - - {% endif %} -
-
+{% block action_buttons %} + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + New + + {% endif %} +{% endblock %} +{% block body %} - + - + diff --git a/templates/venue_category/new.html.twig b/templates/venue_category/new.html.twig index e87e4bb..a5f7c04 100644 --- a/templates/venue_category/new.html.twig +++ b/templates/venue_category/new.html.twig @@ -5,24 +5,10 @@ {{ form_start(form) }} {{ form_widget(form) }} -
-
-
- - Cancel -
+
+ + Cancel
{{ form_end(form) }} -{% endblock %} - -{% block styles %} - - -{% endblock %} - -{% block javascripts %} - - - -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/templates/venue_category/show.html.twig b/templates/venue_category/show.html.twig index 2a625a0..f8e8ffe 100644 --- a/templates/venue_category/show.html.twig +++ b/templates/venue_category/show.html.twig @@ -1,26 +1,24 @@ {% extends 'base.html.twig' %} -{% block pageheader %} +{% block pageheader %}

VenueCategory

-{% endblock %} +{% endblock %} -{% block body %} +{% block action_buttons %} + + Back + + {% if is_granted('ROLE_CONTENT_ADMIN') %} + + Edit + + + Delete + + {% endif %} +{% endblock %} -
-
- - Back - - {% if is_granted('ROLE_CONTENT_ADMIN') %} - - Edit - - - Delete - - {% endif %} -
-
+{% block body %}
NameLabelLabel CreatedUpdatedUpdated
diff --git a/tests/Controller/ArtisticStatementControllerTest.php b/tests/Controller/ArtisticStatementControllerTest.php index 069b157..583aaeb 100644 --- a/tests/Controller/ArtisticStatementControllerTest.php +++ b/tests/Controller/ArtisticStatementControllerTest.php @@ -2,90 +2,75 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ArtisticStatementFixtures; use App\Entity\ArtisticStatement; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ArtisticStatementControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ArtisticStatementFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ArtisticStatementControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/artistic_statement/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artistic_statement/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artistic_statement/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/artistic_statement/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artistic_statement/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artistic_statement/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/artistic_statement/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artistic_statement/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artistic_statement/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->markTestIncomplete( - 'This test has not been implemented yet.' - ); + $this->markTestIncomplete(); $form = $formCrawler->selectButton('Update')->form([ // DO STUFF HERE. // 'artistic_statements[FIELDNAME]' => 'FIELDVALUE', @@ -94,26 +79,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/artistic_statement/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/artistic_statement/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artistic_statement/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artistic_statement/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +110,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/artistic_statement/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artistic_statement/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ArtisticStatement::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ArtisticStatement::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artistic_statement/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/artistic_statement/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ArtisticStatement::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ArtisticStatement::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ArtworkCategoryControllerTest.php b/tests/Controller/ArtworkCategoryControllerTest.php index 6f9061e..879b8b4 100644 --- a/tests/Controller/ArtworkCategoryControllerTest.php +++ b/tests/Controller/ArtworkCategoryControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ArtworkCategoryFixtures; use App\Entity\ArtworkCategory; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ArtworkCategoryControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ArtworkCategoryFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ArtworkCategoryControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/artwork_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/artwork_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/artwork_category/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_category/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork_category/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/artwork_category/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/artwork_category/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_category/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork_category/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/artwork_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_category/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ArtworkCategory::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ArtworkCategory::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/artwork_category/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ArtworkCategory::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ArtworkCategory::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ArtworkContributionControllerTest.php b/tests/Controller/ArtworkContributionControllerTest.php index c01c0cf..48dedce 100644 --- a/tests/Controller/ArtworkContributionControllerTest.php +++ b/tests/Controller/ArtworkContributionControllerTest.php @@ -2,43 +2,31 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ArtworkContributionFixtures; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ArtworkContributionControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ArtworkContributionFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ArtworkContributionControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/artwork_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } } diff --git a/tests/Controller/ArtworkControllerTest.php b/tests/Controller/ArtworkControllerTest.php index 85b7a41..00f26c3 100644 --- a/tests/Controller/ArtworkControllerTest.php +++ b/tests/Controller/ArtworkControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ArtworkFixtures; use App\Entity\Artwork; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ArtworkControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ArtworkFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ArtworkControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/artwork/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/artwork/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(3, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/artwork/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/artwork/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/artwork/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/artwork/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Artwork::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Artwork::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/artwork/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Artwork::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Artwork::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ArtworkRoleControllerTest.php b/tests/Controller/ArtworkRoleControllerTest.php index 051e918..a16b655 100644 --- a/tests/Controller/ArtworkRoleControllerTest.php +++ b/tests/Controller/ArtworkRoleControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ArtworkRoleFixtures; use App\Entity\ArtworkRole; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ArtworkRoleControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ArtworkRoleFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ArtworkRoleControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/artwork_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/artwork_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/artwork_role/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_role/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork_role/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/artwork_role/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/artwork_role/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_role/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/artwork_role/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/artwork_role/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/artwork_role/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ArtworkRole::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ArtworkRole::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/artwork_role/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/artwork_role/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ArtworkRole::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ArtworkRole::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/LocationControllerTest.php b/tests/Controller/LocationControllerTest.php index 5103b72..1af6824 100644 --- a/tests/Controller/LocationControllerTest.php +++ b/tests/Controller/LocationControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\LocationFixtures; use App\Entity\Location; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class LocationControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - LocationFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class LocationControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/location/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/location/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/location/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/location/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/location/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/location/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/location/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/location/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/location/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/location/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/location/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/location/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/location/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/location/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/location/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Location::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Location::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/location/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/location/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Location::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Location::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/MediaFileCategoryControllerTest.php b/tests/Controller/MediaFileCategoryControllerTest.php index b083653..cde2f2f 100644 --- a/tests/Controller/MediaFileCategoryControllerTest.php +++ b/tests/Controller/MediaFileCategoryControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\MediaFileCategoryFixtures; use App\Entity\MediaFileCategory; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class MediaFileCategoryControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - MediaFileCategoryFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class MediaFileCategoryControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/media_file_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/media_file_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/media_file_category/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file_category/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/media_file_category/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/media_file_category/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/media_file_category/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file_category/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/media_file_category/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/media_file_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file_category/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(MediaFileCategory::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(MediaFileCategory::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/media_file_category/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(MediaFileCategory::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(MediaFileCategory::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/MediaFileControllerTest.php b/tests/Controller/MediaFileControllerTest.php index 2f417d5..3febeed 100644 --- a/tests/Controller/MediaFileControllerTest.php +++ b/tests/Controller/MediaFileControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\MediaFileFixtures; use App\Entity\MediaFile; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class MediaFileControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - MediaFileFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class MediaFileControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/media_file/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/media_file/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(2, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/media_file/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/media_file/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/media_file/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/media_file/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/media_file/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/media_file/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/media_file/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(MediaFile::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(MediaFile::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/media_file/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/media_file/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(MediaFile::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(MediaFile::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/OrganizationControllerTest.php b/tests/Controller/OrganizationControllerTest.php index 3d34c0d..c336f40 100644 --- a/tests/Controller/OrganizationControllerTest.php +++ b/tests/Controller/OrganizationControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\OrganizationFixtures; use App\Entity\Organization; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class OrganizationControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - OrganizationFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class OrganizationControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/organization/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/organization/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/organization/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/organization/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/organization/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/organization/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/organization/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/organization/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/organization/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/organization/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/organization/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/organization/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/organization/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/organization/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/organization/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Organization::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Organization::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/organization/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/organization/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Organization::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Organization::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/PersonControllerTest.php b/tests/Controller/PersonControllerTest.php index d72c516..74e42bb 100644 --- a/tests/Controller/PersonControllerTest.php +++ b/tests/Controller/PersonControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\PersonFixtures; use App\Entity\Person; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class PersonControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - PersonFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class PersonControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/person/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/person/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/person/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/person/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/person/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/person/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/person/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/person/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/person/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/person/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/person/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/person/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/person/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/person/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/person/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Person::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Person::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/person/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/person/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Person::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Person::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ProjectCategoryControllerTest.php b/tests/Controller/ProjectCategoryControllerTest.php index 824632b..b9582b0 100644 --- a/tests/Controller/ProjectCategoryControllerTest.php +++ b/tests/Controller/ProjectCategoryControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ProjectCategoryFixtures; use App\Entity\ProjectCategory; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ProjectCategoryControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ProjectCategoryFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ProjectCategoryControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/project_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/project_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/project_category/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_category/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project_category/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/project_category/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/project_category/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_category/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project_category/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/project_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_category/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ProjectCategory::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ProjectCategory::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/project_category/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ProjectCategory::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ProjectCategory::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ProjectContributionControllerTest.php b/tests/Controller/ProjectContributionControllerTest.php index fa3d52a..bb41b08 100644 --- a/tests/Controller/ProjectContributionControllerTest.php +++ b/tests/Controller/ProjectContributionControllerTest.php @@ -2,43 +2,31 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ProjectContributionFixtures; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ProjectContributionControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ProjectContributionFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ProjectContributionControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/project_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_contribution/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } } diff --git a/tests/Controller/ProjectControllerTest.php b/tests/Controller/ProjectControllerTest.php index feed37d..8ed9a79 100644 --- a/tests/Controller/ProjectControllerTest.php +++ b/tests/Controller/ProjectControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ProjectFixtures; use App\Entity\Project; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ProjectControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ProjectFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ProjectControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/project/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/project/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/project/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/project/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/project/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/project/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Project::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Project::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/project/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Project::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Project::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ProjectPageControllerTest.php b/tests/Controller/ProjectPageControllerTest.php index c6e156e..9fd8a6d 100644 --- a/tests/Controller/ProjectPageControllerTest.php +++ b/tests/Controller/ProjectPageControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ProjectPageFixtures; use App\Entity\ProjectPage; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ProjectPageControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ProjectPageFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ProjectPageControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/project/2/page'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/2/page'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/2/page'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/project/2/page/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/2/page/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/2/page/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/project/2/page/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/2/page/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project/2/page/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/project/2/page/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/project/2/page/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/2/page/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project/2/page/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/project/2/page/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project/2/page/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ProjectPage::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ProjectPage::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project/2/page/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/project/2/page', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ProjectPage::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ProjectPage::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/ProjectRoleControllerTest.php b/tests/Controller/ProjectRoleControllerTest.php index 73f8897..579f151 100644 --- a/tests/Controller/ProjectRoleControllerTest.php +++ b/tests/Controller/ProjectRoleControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\ProjectRoleFixtures; use App\Entity\ProjectRole; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class ProjectRoleControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - ProjectRoleFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class ProjectRoleControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/project_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_role/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/project_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_role/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/project_role/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_role/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project_role/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/project_role/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/project_role/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_role/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/project_role/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/project_role/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/project_role/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(ProjectRole::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(ProjectRole::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/project_role/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/project_role/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(ProjectRole::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(ProjectRole::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/VenueCategoryControllerTest.php b/tests/Controller/VenueCategoryControllerTest.php index ef6652f..eee930e 100644 --- a/tests/Controller/VenueCategoryControllerTest.php +++ b/tests/Controller/VenueCategoryControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\VenueCategoryFixtures; use App\Entity\VenueCategory; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class VenueCategoryControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - VenueCategoryFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class VenueCategoryControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/venue_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue_category/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/venue_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue_category/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/venue_category/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue_category/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/venue_category/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/venue_category/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/venue_category/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue_category/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/venue_category/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/venue_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue_category/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(VenueCategory::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(VenueCategory::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue_category/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/venue_category/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(VenueCategory::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(VenueCategory::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/Controller/VenueControllerTest.php b/tests/Controller/VenueControllerTest.php index 1e6acd1..7b23ac0 100644 --- a/tests/Controller/VenueControllerTest.php +++ b/tests/Controller/VenueControllerTest.php @@ -2,86 +2,73 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - namespace App\Tests\Controller; use App\DataFixtures\VenueFixtures; use App\Entity\Venue; use Nines\UserBundle\DataFixtures\UserFixtures; -use Nines\UtilBundle\Tests\ControllerBaseCase; - -class VenueControllerTest extends ControllerBaseCase { - protected function fixtures() : array { - return [ - UserFixtures::class, - VenueFixtures::class, - ]; - } +use Nines\UtilBundle\TestCase\ControllerTestCase; +use Symfony\Component\HttpFoundation\Response; +class VenueControllerTest extends ControllerTestCase { public function testAnonIndex() : void { $crawler = $this->client->request('GET', '/venue/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testUserIndex() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('New')->count()); } public function testAdminIndex() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue/'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('New')->count()); } public function testAnonShow() : void { $crawler = $this->client->request('GET', '/venue/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testUserShow() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(0, $crawler->selectLink('Edit')->count()); $this->assertSame(0, $crawler->selectLink('Delete')->count()); } public function testAdminShow() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue/1'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->assertSame(1, $crawler->selectLink('Edit')->count()); $this->assertSame(1, $crawler->selectLink('Delete')->count()); } public function testAnonEdit() : void { $crawler = $this->client->request('GET', '/venue/1/edit'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserEdit() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue/1/edit'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminEdit() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/venue/1/edit'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -94,26 +81,25 @@ public function testAdminEdit() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect('/venue/1')); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonNew() : void { $crawler = $this->client->request('GET', '/venue/new'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserNew() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue/new'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminNew() : void { - $this->login('user.admin'); + $this->login(UserFixtures::ADMIN); $formCrawler = $this->client->request('GET', '/venue/new'); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); $this->markTestIncomplete( 'This test has not been implemented yet.' @@ -126,33 +112,31 @@ public function testAdminNew() : void { $this->client->submit($form); $this->assertTrue($this->client->getResponse()->isRedirect()); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); // $this->assertEquals(1, $responseCrawler->filter('td:contains("FIELDVALUE")')->count()); } public function testAnonDelete() : void { $crawler = $this->client->request('GET', '/venue/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('http://localhost/login', Response::HTTP_FOUND); } public function testUserDelete() : void { - $this->login('user.user'); + $this->login(UserFixtures::USER); $crawler = $this->client->request('GET', '/venue/1/delete'); - $this->assertSame(403, $this->client->getResponse()->getStatusCode()); + $this->assertResponseStatusCodeSame(Response::HTTP_FORBIDDEN); } public function testAdminDelete() : void { - $preCount = count($this->entityManager->getRepository(Venue::class)->findAll()); - $this->login('user.admin'); + $preCount = count($this->em->getRepository(Venue::class)->findAll()); + $this->login(UserFixtures::ADMIN); $crawler = $this->client->request('GET', '/venue/1/delete'); - $this->assertSame(302, $this->client->getResponse()->getStatusCode()); - $this->assertTrue($this->client->getResponse()->isRedirect()); + $this->assertResponseRedirects('/venue/', Response::HTTP_FOUND); $responseCrawler = $this->client->followRedirect(); - $this->assertSame(200, $this->client->getResponse()->getStatusCode()); + $this->assertResponseIsSuccessful(); - $this->entityManager->clear(); - $postCount = count($this->entityManager->getRepository(Venue::class)->findAll()); + $this->em->clear(); + $postCount = count($this->em->getRepository(Venue::class)->findAll()); $this->assertSame($preCount - 1, $postCount); } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 2cf824f..76f11dd 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -2,12 +2,6 @@ declare(strict_types=1); -/* - * (c) 2021 Michael Joyce - * This source file is subject to the GPL v2, bundled - * with this source code in the file LICENSE. - */ - use Symfony\Component\Dotenv\Dotenv; require dirname(__DIR__) . '/vendor/autoload.php'; @@ -17,3 +11,7 @@ } elseif (method_exists(Dotenv::class, 'bootEnv')) { (new Dotenv())->bootEnv(dirname(__DIR__) . '/.env'); } + +if ($_SERVER['APP_DEBUG']) { + umask(0); +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 730c056..0000000 --- a/yarn.lock +++ /dev/null @@ -1,43 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -bootstrap3@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/bootstrap3/-/bootstrap3-3.3.5.tgz#496a4ef6c087214fa96838196d60de645e82591a" - integrity sha512-KoChQrvYQQv44JrkjEiSy/90CYp5/4QDF2DZZysD/mPYlZGc+z0QN1aLDUiXhl1KIjWNu5UdJ3w8NhrKZnJOUw== - -jquery-ui@>=1.0, jquery-ui@^1.12.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034" - integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q== - dependencies: - jquery ">=1.8.0 <4.0.0" - -jquery@>=1.7, "jquery@>=1.8.0 <4.0.0", jquery@^3.4.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470" - integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw== - -select2-bootstrap-css@^1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/select2-bootstrap-css/-/select2-bootstrap-css-1.4.6.tgz#5cfb68246f5299ca1858e01efd788804c734997e" - integrity sha512-BBsisfivUYjwhj3QdWNS15sBqC/DHoszRC4B3GIzJwMNO1pT1uVvwDm5u2TLXi7oj/3S4vIeQ6yAuMa86d7c9A== - -select2@^4.0.13: - 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.4.0: - version "5.10.5" - resolved "https://registry.yarnpkg.com/tinymce/-/tinymce-5.10.5.tgz#02aef6a67e915f1559e51fa8fb007270d9666778" - integrity sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w==