diff --git a/.env.dist b/.env.dist
new file mode 100644
index 000000000..c2bc90073
--- /dev/null
+++ b/.env.dist
@@ -0,0 +1,38 @@
+# In all environments, the following files are loaded if they exist,
+# the latter taking precedence over the former:
+#
+# * .env.dist contains default values for the environment variables needed by the app
+# * .env.local uncommitted file with local overrides
+# * .env.$APP_ENV committed environment-specific defaults
+# * .env.$APP_ENV.local uncommitted environment-specific overrides
+#
+# Real environment variables win over .env files.
+#
+# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
+#
+# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
+
+###> symfony/framework-bundle ###
+APP_ENV=dev
+APP_SECRET=8d05fae29eaeeda1edf6008093f395b4
+#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
+#TRUSTED_HOSTS='^localhost|example\.com$'
+###< symfony/framework-bundle ###
+
+###> nelmio/cors-bundle ###
+CORS_ALLOW_ORIGIN=^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$
+###< nelmio/cors-bundle ###
+
+###> doctrine/doctrine-bundle ###
+# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
+# 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
+###< doctrine/doctrine-bundle ###
+
+###> lexik/jwt-authentication-bundle ###
+JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
+JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
+JWT_PASSPHRASE=30e1f97a4a670a03fb98ecab5c3e4265
+###< lexik/jwt-authentication-bundle ###
diff --git a/.env.test.dist b/.env.test.dist
new file mode 100644
index 000000000..f9eff7cbc
--- /dev/null
+++ b/.env.test.dist
@@ -0,0 +1,4 @@
+# define your env variables for the test environment here
+KERNEL_CLASS='SuiteCRM\Core\Base\Kernel'
+APP_SECRET='$ecretf0rt3st'
+SYMFONY_DEPRECATIONS_HELPER=999999
diff --git a/.gitignore b/.gitignore
index 0771c3c9b..a12a1306b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,16 @@
## SuiteCRM 8 ##
+###> symfony/framework-bundle ###
+/.env
+/.env.local
+/.env.local.php
+/.env.*.local
+/config/secrets/prod/prod.decrypt.private.php
+/public/bundles/
+/var/
+/vendor/
+###< symfony/framework-bundle ###
+
build/
config/
!config/.gitkeep
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 000000000..0379bfcad
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,66 @@
+# Use the front controller as index file. It serves as a fallback solution when
+# every other rewrite/redirect fails (e.g. in an aliased environment without
+# mod_rewrite). Additionally, this reduces the matching process for the
+# start page (path "/") because otherwise Apache will apply the rewriting rules
+# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl).
+DirectoryIndex index.php
+
+# By default, Apache does not evaluate symbolic links if you did not enable this
+# feature in your server configuration. Uncomment the following line if you
+# install assets as symlinks or if you experience problems related to symlinks
+# when compiling LESS/Sass/CoffeScript assets.
+# Options FollowSymlinks
+
+# Disabling MultiViews prevents unwanted negotiation, e.g. "/index" should not resolve
+# to the front controller "/index.php" but be rewritten to "/index.php/index".
+
+ Options -MultiViews
+
+
+
+ RewriteEngine On
+
+ # Determine the RewriteBase automatically and set it as environment variable.
+ # If you are using Apache aliases to do mass virtual hosting or installed the
+ # project in a subdirectory, the base path will be prepended to allow proper
+ # resolution of the index.php file and to redirect to the correct URI. It will
+ # work in environments without path prefix as well, providing a safe, one-size
+ # fits all solution. But as you do not need it in this case, you can comment
+ # the following 2 lines to eliminate the overhead.
+ 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]
+
+ # Redirect to URI without front controller to prevent duplicate content
+ # (with and without `/index.php`). Only do this redirect on the initial
+ # rewrite by Apache and not on subsequent cycles. Otherwise we would get an
+ # endless redirect loop (request -> rewrite to front controller ->
+ # redirect -> request -> ...).
+ # So in case you get a "too many redirects" error or you always get redirected
+ # to the start page because your Apache does not expose the REDIRECT_STATUS
+ # environment variable, you have 2 choices:
+ # - disable this feature by commenting the following 2 lines or
+ # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
+ # following RewriteCond (best solution)
+ RewriteCond %{ENV:REDIRECT_STATUS} =""
+ RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
+
+ # If the requested filename exists, simply serve it.
+ # We only want to let Apache serve files and not directories.
+ # Rewrite all other queries to the front controller.
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ %{ENV:BASE}/index.php [L]
+
+
+
+
+ # When mod_rewrite is not available, we instruct a temporary redirect of
+ # the start page to the front controller explicitly so that the website
+ # and the generated links can still be used.
+ RedirectMatch 307 ^/$ /index.php/
+ # RedirectTemp cannot be used instead
+
+
diff --git a/bin/console b/bin/console
index d28a313a9..d55fc0eed 100644
--- a/bin/console
+++ b/bin/console
@@ -1,25 +1,10 @@
#!/usr/bin/env php
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)) {
+ /** @noinspection UnusedFunctionResultInspection */
+ Debug::enable();
+ }
+}
+
+$kernel = new Kernel($_SERVER['APP_ENV'], (bool)$_SERVER['APP_DEBUG']);
+$application = new Application($kernel);
try {
- $appConfig = $configManager->loadFiles(BASE_PATH . 'config/config.yml');
-} catch (Exception $e) {
- trigger_error('CLI failed to load files: ' . $e);
-}
-
-if ($appConfig->has('storage.mysql')) {
- $connectionParams = $appConfig->get('storage.mysql');
- $namespaces = $appConfig->get('entity.namespaces');
-
- $driver = new SimplifiedYamlDriver($namespaces);
-
- $isDevMode = false;
-
- if ($appConfig->has('server.environment') && $appConfig->get('server.environment') === 'develop') {
- $isDevMode = true;
- }
-
- $config = Setup::createYAMLMetadataConfiguration($namespaces, $isDevMode);
-
- $cache = new ArrayCache();
-
- $config->setMetadataCacheImpl($cache);
- $config->setQueryCacheImpl($cache);
- $config->setMetadataDriverImpl($driver);
-
- // Table Prefix
- $evm = new EventManager();
- $tablePrefix = new SuiteCRM\Core\Base\Module\Storage\TablePrefix('suite8_');
- $evm->addEventListener(Events::loadClassMetadata, $tablePrefix);
-
- try {
- $entityManager = EntityManager::create($connectionParams, $config, $evm);
- } catch (ORMException $e) {
- trigger_error('CLI failed to get create entity manager instance: ' . $e);
- }
-
- //-- This I had to add to support the Mysql enum type.
- try {
- $platform = $entityManager->getConnection()->getDatabasePlatform();
- } catch (DBALException $e) {
- trigger_error('CLI failed to get DB platform: ' . $e);
- }
-
- try {
- $platform->registerDoctrineTypeMapping('enum', 'string');
- } catch (DBALException $e) {
- trigger_error('CLI failed to get register doctrine type mapping: ' . $e);
- }
-
- $helperSet = ConsoleRunner::createHelperSet($entityManager);
-}
-
-$configPath = [BASE_PATH . 'config/config.yml', BASE_PATH . 'core/base/Config/modules.config.yml'];
-
-$fileHelper = new File();
-
-$commandMapper = new CommandMapper($fileHelper, $configManager, $configPath);
-
-$application->setHelperSet($helperSet);
-$application->addCommands($commandMapper->getAllCommands());
-
-ConsoleRunner::addCommands($application);
-
-// Run Console Application
-try {
- $application->run();
-} catch (Exception $e) {
- trigger_error('Application run failure: ' . $e);
+ $application->run($input);
+} catch (Exception $exception) {
+ echo 'An error occurred while attempting to run the application ' . $exception->getMessage();
}
diff --git a/composer.json b/composer.json
index 593ea050a..253d6d483 100755
--- a/composer.json
+++ b/composer.json
@@ -13,26 +13,47 @@
},
"require": {
"ext-json": "*",
+ "api-platform/api-pack": "^1.2",
"bshaffer/oauth2-server-httpfoundation-bridge": "^1.4",
"bshaffer/oauth2-server-php": "^1.11.1",
"composer/installers": "~1.0",
"doctrine/cache": "^1.8",
"doctrine/dbal": "^2.9",
"doctrine/orm": "2.6.*",
+ "lexik/jwt-authentication-bundle": "^2.6",
"monolog/monolog": "^1.23",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "pimple/pimple": "^3.2",
+ "psr/log": "^1.1",
+ "symfony/cache": "^4.4",
"symfony/config": "^4.2",
- "symfony/console": "^4.3",
+ "symfony/console": "^4.4",
+ "symfony/dependency-injection": "^4.4",
+ "symfony/dotenv": "^4.4",
+ "symfony/error-handler": "^4.4",
+ "symfony/filesystem": "^4.4",
+ "symfony/finder": "^4.4",
+ "symfony/flex": "^1.6",
+ "symfony/framework-bundle": "^4.4",
"symfony/http-foundation": "^4.2",
+ "symfony/http-kernel": "^4.4",
+ "symfony/monolog-bundle": "^3.5",
"symfony/routing": "4.4.x-dev",
- "symfony/yaml": "^4.2"
+ "symfony/yaml": "^4.2",
+ "thecodingmachine/graphqlite": "^3.1",
+ "webonyx/graphql-php": "^0.13.8"
},
"require-dev": {
- "roave/security-advisories": "dev-master",
- "phpunit/phpunit": "^7.3",
- "phpmetrics/phpmetrics": "^2.4.1",
- "phploc/phploc": "^4.0.1",
+ "dama/doctrine-test-bundle": "^5.0",
"doctrine/doctrine-fixtures-bundle": "~3.2",
- "dama/doctrine-test-bundle": "^5.0"
+ "phploc/phploc": "^4.0.1",
+ "phpmetrics/phpmetrics": "^2.4.1",
+ "phpunit/phpunit": "^7.3",
+ "roave/security-advisories": "dev-master",
+ "symfony/maker-bundle": "^1.14"
+ },
+ "conflict": {
+ "symfony/symfony": "*"
},
"license": "GPL-3.0",
"authors": [
@@ -44,9 +65,19 @@
"psr-4": {
"SuiteCRM\\Core\\Base\\": "core/base/",
"SuiteCRM\\Core\\Modules\\": "core/modules/",
- "SuiteCRM\\Core\\Legacy\\": "core/legacy/"
+ "SuiteCRM\\Core\\Legacy\\": "core/legacy/",
+ "App\\Command\\": "core/base/src/Command/"
}
},
"minimum-stability": "dev",
- "prefer-stable": true
+ "prefer-stable": true,
+ "extra": {
+ "src-dir": "core/base/src"
+ },
+ "scripts": {
+ "auto-scripts": {
+ "cache:clear": "symfony-cmd",
+ "assets:install %PUBLIC_DIR%": "symfony-cmd"
+ }
+ }
}
diff --git a/composer.lock b/composer.lock
index 3f43d371a..bf793b06b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,192 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "1dd262db5abdd532a2ad48b4d72b44c7",
+ "content-hash": "6a95edda9e84873edcf1c4aec758eeaa",
"packages": [
+ {
+ "name": "api-platform/api-pack",
+ "version": "v1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/api-platform/api-pack.git",
+ "reference": "41364f8763475d7709c43f790aa77a4157d038e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/api-platform/api-pack/zipball/41364f8763475d7709c43f790aa77a4157d038e2",
+ "reference": "41364f8763475d7709c43f790aa77a4157d038e2",
+ "shasum": ""
+ },
+ "require": {
+ "api-platform/core": "^2.1",
+ "doctrine/annotations": "^1.0",
+ "doctrine/doctrine-bundle": "^1.6 || ^2.0",
+ "doctrine/orm": "^2.4.5",
+ "nelmio/cors-bundle": "^1.5 || ^2.0",
+ "php": "^7.0",
+ "phpdocumentor/reflection-docblock": "^3.0 || ^4.0",
+ "symfony/asset": "*",
+ "symfony/expression-language": "*",
+ "symfony/security-bundle": "*",
+ "symfony/twig-bundle": "*",
+ "symfony/validator": "*"
+ },
+ "type": "symfony-pack",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A pack for API Platform",
+ "time": "2019-11-12T17:43:33+00:00"
+ },
+ {
+ "name": "api-platform/core",
+ "version": "v2.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/api-platform/core.git",
+ "reference": "2d402688c485457adbc771e347e6498e70c6f232"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/api-platform/core/zipball/2d402688c485457adbc771e347e6498e70c6f232",
+ "reference": "2d402688c485457adbc771e347e6498e70c6f232",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^1.0",
+ "fig/link-util": "^1.0",
+ "php": ">=7.1",
+ "psr/cache": "^1.0",
+ "psr/container": "^1.0",
+ "symfony/http-foundation": "^4.3.6 || ^5.0",
+ "symfony/http-kernel": "^4.3.7 || ^5.0",
+ "symfony/property-access": "^3.4 || ^4.0 || ^5.0",
+ "symfony/property-info": "^3.4 || ^4.0 || ^5.0",
+ "symfony/serializer": "^4.3 || ^5.0",
+ "symfony/web-link": "^4.1 || ^5.0",
+ "willdurand/negotiation": "^2.0.3"
+ },
+ "conflict": {
+ "doctrine/common": "<2.7",
+ "doctrine/mongodb-odm": "<2.0"
+ },
+ "require-dev": {
+ "behat/behat": "^3.1",
+ "behat/mink": "^1.7",
+ "behat/mink-browserkit-driver": "^1.3.1",
+ "behat/mink-extension": "^2.2",
+ "behat/symfony2-extension": "^2.1.1",
+ "behatch/contexts": "^3.1.0",
+ "doctrine/annotations": "^1.7",
+ "doctrine/common": "^2.11",
+ "doctrine/data-fixtures": "^1.2.2",
+ "doctrine/doctrine-bundle": "^1.8 || ^2.0",
+ "doctrine/doctrine-cache-bundle": "^1.3.5",
+ "doctrine/mongodb-odm": "^2.0",
+ "doctrine/mongodb-odm-bundle": "^4.0",
+ "doctrine/orm": "^2.6.4",
+ "elasticsearch/elasticsearch": "^6.0",
+ "friendsofsymfony/user-bundle": "^2.2@dev",
+ "guzzlehttp/guzzle": "^6.0",
+ "jangregor/phpstan-prophecy": "^0.4.2",
+ "justinrainbow/json-schema": "^5.2.1",
+ "nelmio/api-doc-bundle": "^2.13.4",
+ "phpdocumentor/reflection-docblock": "^3.0 || ^4.0",
+ "phpdocumentor/type-resolver": "^0.3 || ^0.4",
+ "phpspec/prophecy": "^1.8",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.11.10",
+ "phpstan/phpstan-doctrine": "^0.11.5",
+ "phpstan/phpstan-phpunit": "^0.11.2",
+ "phpstan/phpstan-symfony": "^0.11.6",
+ "phpunit/phpunit": "^7.5.2 || ^8.0",
+ "psr/log": "^1.0",
+ "ramsey/uuid": "^3.7",
+ "ramsey/uuid-doctrine": "^1.4",
+ "sebastian/object-enumerator": "^3.0.3",
+ "symfony/asset": "^3.4 || ^4.0 || ^5.0",
+ "symfony/browser-kit": "^4.3 || ^5.0",
+ "symfony/cache": "^3.4 || ^4.0 || ^5.0",
+ "symfony/config": "^3.4 || ^4.0 || ^5.0",
+ "symfony/console": "^3.4 || ^4.0 || ^5.0",
+ "symfony/css-selector": "^3.4 || ^4.0 || ^5.0",
+ "symfony/debug": "^3.4 || ^4.0",
+ "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0",
+ "symfony/doctrine-bridge": "^3.4 || ^4.0 || ^5.0",
+ "symfony/dom-crawler": "^3.4 || ^4.0 || ^5.0",
+ "symfony/event-dispatcher": "^3.4 || ^4.0 || ^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.3.2 || ^5.0",
+ "symfony/http-client": "^4.3 || ^5.0",
+ "symfony/mercure-bundle": "*",
+ "symfony/messenger": "^4.3 || ^5.0",
+ "symfony/phpunit-bridge": "^4.3 || ^5.0",
+ "symfony/routing": "^3.4 || ^4.3 || ^5.0",
+ "symfony/security-bundle": "^3.4 || ^4.0 || ^5.0",
+ "symfony/security-core": "^4.3 || ^5.0",
+ "symfony/twig-bundle": "^3.4 || ^4.0 || ^5.0",
+ "symfony/validator": "^3.4 || ^4.0 || ^5.0",
+ "symfony/web-profiler-bundle": "^4.2 || ^5.0",
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0",
+ "twig/twig": "^1.42.3 || ^2.12",
+ "webonyx/graphql-php": ">=0.13.1 <1.0"
+ },
+ "suggest": {
+ "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.",
+ "elasticsearch/elasticsearch": "To support Elasticsearch.",
+ "friendsofsymfony/user-bundle": "To use the FOSUserBundle bridge.",
+ "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.",
+ "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.",
+ "psr/cache-implementation": "To use metadata caching.",
+ "ramsey/uuid": "To support Ramsey's UUID identifiers.",
+ "symfony/cache": "To have metadata caching when using Symfony integration.",
+ "symfony/config": "To load XML configuration files.",
+ "symfony/expression-language": "To use authorization features.",
+ "symfony/security": "To use authorization features.",
+ "symfony/twig-bundle": "To use the Swagger UI integration.",
+ "symfony/web-profiler-bundle": "To use the data collector.",
+ "webonyx/graphql-php": "To support GraphQL."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ApiPlatform\\Core\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com",
+ "homepage": "https://dunglas.fr"
+ }
+ ],
+ "description": "Build a fully-featured hypermedia or GraphQL API in minutes",
+ "homepage": "https://api-platform.com",
+ "keywords": [
+ "Hydra",
+ "JSON-LD",
+ "api",
+ "graphql",
+ "hal",
+ "jsonapi",
+ "openapi",
+ "rest",
+ "swagger"
+ ],
+ "time": "2019-11-23T11:27:39+00:00"
+ },
{
"name": "bshaffer/oauth2-server-httpfoundation-bridge",
"version": "v1.4",
@@ -110,142 +294,6 @@
],
"time": "2018-12-04T00:29:32+00:00"
},
- {
- "name": "composer/ca-bundle",
- "version": "1.2.4",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
- "reference": "10bb96592168a0f8e8f6dcde3532d9fa50b0b527",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "ext-pcre": "*",
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
- "psr/log": "^1.0",
- "symfony/process": "^2.5 || ^3.0 || ^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\CaBundle\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.",
- "keywords": [
- "cabundle",
- "cacert",
- "certificate",
- "ssl",
- "tls"
- ],
- "time": "2019-08-30T08:44:50+00:00"
- },
- {
- "name": "composer/composer",
- "version": "1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/composer.git",
- "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/bb01f2180df87ce7992b8331a68904f80439dd2f",
- "reference": "bb01f2180df87ce7992b8331a68904f80439dd2f",
- "shasum": ""
- },
- "require": {
- "composer/ca-bundle": "^1.0",
- "composer/semver": "^1.0",
- "composer/spdx-licenses": "^1.2",
- "composer/xdebug-handler": "^1.1",
- "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
- "php": "^5.3.2 || ^7.0",
- "psr/log": "^1.0",
- "seld/jsonlint": "^1.4",
- "seld/phar-utils": "^1.0",
- "symfony/console": "^2.7 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
- "symfony/finder": "^2.7 || ^3.0 || ^4.0",
- "symfony/process": "^2.7 || ^3.0 || ^4.0"
- },
- "conflict": {
- "symfony/console": "2.8.38"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7",
- "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
- },
- "suggest": {
- "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
- "ext-zip": "Enabling the zip extension allows you to unzip archives",
- "ext-zlib": "Allow gzip compression of HTTP requests"
- },
- "bin": [
- "bin/composer"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.9-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\": "src/Composer"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nils Adermann",
- "email": "naderman@naderman.de",
- "homepage": "http://www.naderman.de"
- },
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.",
- "homepage": "https://getcomposer.org/",
- "keywords": [
- "autoload",
- "dependency",
- "package"
- ],
- "time": "2019-11-01T16:20:17+00:00"
- },
{
"name": "composer/installers",
"version": "v1.7.0",
@@ -368,172 +416,6 @@
],
"time": "2019-08-12T15:00:31+00:00"
},
- {
- "name": "composer/semver",
- "version": "1.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
- "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.5 || ^5.0.5",
- "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Semver\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "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": "Semver library that offers utilities, version constraint parsing and validation.",
- "keywords": [
- "semantic",
- "semver",
- "validation",
- "versioning"
- ],
- "time": "2019-03-19T17:25:45+00:00"
- },
- {
- "name": "composer/spdx-licenses",
- "version": "1.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/spdx-licenses.git",
- "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5",
- "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Composer\\Spdx\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "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": "SPDX licenses list and validation library.",
- "keywords": [
- "license",
- "spdx",
- "validator"
- ],
- "time": "2019-07-29T10:31:59+00:00"
- },
- {
- "name": "composer/xdebug-handler",
- "version": "1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/xdebug-handler.git",
- "reference": "cbe23383749496fe0f373345208b79568e4bc248"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248",
- "reference": "cbe23383749496fe0f373345208b79568e4bc248",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Composer\\XdebugHandler\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
- }
- ],
- "description": "Restarts a process without Xdebug.",
- "keywords": [
- "Xdebug",
- "performance"
- ],
- "time": "2019-11-06T16:40:04+00:00"
- },
{
"name": "doctrine/annotations",
"version": "v1.8.0",
@@ -839,16 +721,16 @@
},
{
"name": "doctrine/dbal",
- "version": "v2.10.0",
+ "version": "v2.10.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934"
+ "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
- "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8",
+ "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8",
"shasum": ""
},
"require": {
@@ -927,7 +809,98 @@
"sqlserver",
"sqlsrv"
],
- "time": "2019-11-03T16:50:43+00:00"
+ "time": "2020-01-04T12:56:21+00:00"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "2.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0ef972d3b730f975c80db9fffa4b2a0258c91442",
+ "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "^2.9.0",
+ "doctrine/persistence": "^1.3.3",
+ "jdorn/sql-formatter": "^1.2.16",
+ "php": "^7.1",
+ "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.3.7|^5.0",
+ "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0",
+ "symfony/service-contracts": "^1.1.1|^2.0"
+ },
+ "conflict": {
+ "doctrine/orm": "<2.6",
+ "twig/twig": "<1.34|>=2.0,<2.4"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "doctrine/orm": "^2.6",
+ "ocramius/proxy-manager": "^2.1",
+ "phpunit/phpunit": "^7.5",
+ "symfony/phpunit-bridge": "^4.2",
+ "symfony/property-info": "^4.3.3|^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"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "To use the data collector."
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "time": "2019-12-19T13:47:07+00:00"
},
{
"name": "doctrine/event-manager",
@@ -1273,16 +1246,16 @@
},
{
"name": "doctrine/persistence",
- "version": "1.2.0",
+ "version": "1.3.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "43526ae63312942e5316100bb3ed589ba1aba491"
+ "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/43526ae63312942e5316100bb3ed589ba1aba491",
- "reference": "43526ae63312942e5316100bb3ed589ba1aba491",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/99b196bbd4715a94fa100fac664a351ffa46d6a5",
+ "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5",
"shasum": ""
},
"require": {
@@ -1297,19 +1270,20 @@
"doctrine/common": "<2.10@dev"
},
"require-dev": {
- "doctrine/coding-standard": "^5.0",
- "phpstan/phpstan": "^0.8",
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-master": "1.3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Doctrine\\Common\\": "lib/Doctrine/Common",
+ "Doctrine\\Persistence\\": "lib/Doctrine/Persistence"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1351,7 +1325,7 @@
"orm",
"persistence"
],
- "time": "2019-04-23T12:39:21+00:00"
+ "time": "2019-12-13T10:43:02+00:00"
},
{
"name": "doctrine/reflection",
@@ -1429,39 +1403,85 @@
"time": "2018-06-14T14:45:07+00:00"
},
{
- "name": "justinrainbow/json-schema",
- "version": "5.2.9",
+ "name": "ecodev/graphql-upload",
+ "version": "4.0.0",
"source": {
"type": "git",
- "url": "https://github.com/justinrainbow/json-schema.git",
- "reference": "44c6787311242a979fa15c704327c20e7221a0e4"
+ "url": "https://github.com/Ecodev/graphql-upload.git",
+ "reference": "7bc34bccab0dfc61e3307a43980d8a4a477ec37c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4",
- "reference": "44c6787311242a979fa15c704327c20e7221a0e4",
+ "url": "https://api.github.com/repos/Ecodev/graphql-upload/zipball/7bc34bccab0dfc61e3307a43980d8a4a477ec37c",
+ "reference": "7bc34bccab0dfc61e3307a43980d8a4a477ec37c",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "ext-json": "*",
+ "php": "^7.1",
+ "psr/http-server-middleware": "^1.0",
+ "webonyx/graphql-php": "^0.13.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
- "json-schema/json-schema-test-suite": "1.2.0",
- "phpunit/phpunit": "^4.8.35"
+ "friendsofphp/php-cs-fixer": "@stable",
+ "phpstan/phpstan": "^0.10.5",
+ "phpunit/phpunit": "@stable",
+ "zendframework/zend-diactoros": "@stable"
},
- "bin": [
- "bin/validate-json"
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GraphQL\\Upload\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
],
+ "description": "A middleware to support file uploads in GraphQL",
+ "keywords": [
+ "api",
+ "graphql",
+ "middleware",
+ "multipart",
+ "upload"
+ ],
+ "time": "2018-12-04T05:49:23+00:00"
+ },
+ {
+ "name": "fig/link-util",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link-util.git",
+ "reference": "47f55860678a9e202206047bc02767556d298106"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link-util/zipball/47f55860678a9e202206047bc02767556d298106",
+ "reference": "47f55860678a9e202206047bc02767556d298106",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.0",
+ "psr/link": "~1.0@dev"
+ },
+ "provide": {
+ "psr/link-implementation": "1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.1",
+ "squizlabs/php_codesniffer": "^2.3.1"
+ },
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "JsonSchema\\": "src/JsonSchema/"
+ "Fig\\Link\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1470,42 +1490,234 @@
],
"authors": [
{
- "name": "Bruno Prieto Reis",
- "email": "bruno.p.reis@gmail.com"
- },
- {
- "name": "Justin Rainbow",
- "email": "justin.rainbow@gmail.com"
- },
- {
- "name": "Igor Wiedler",
- "email": "igor@wiedler.ch"
- },
- {
- "name": "Robert Schönthal",
- "email": "seroscho@googlemail.com"
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
}
],
- "description": "A library to validate a json schema.",
- "homepage": "https://github.com/justinrainbow/json-schema",
+ "description": "Common utility implementations for HTTP links",
"keywords": [
- "json",
- "schema"
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
],
- "time": "2019-09-25T14:49:45+00:00"
+ "time": "2019-12-18T15:40:05+00:00"
},
{
- "name": "monolog/monolog",
- "version": "1.25.2",
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287"
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
- "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12T16:20:24+00:00"
+ },
+ {
+ "name": "lcobucci/jwt",
+ "version": "3.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/lcobucci/jwt.git",
+ "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18",
+ "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "mikey179/vfsstream": "~1.5",
+ "phpmd/phpmd": "~2.2",
+ "phpunit/php-invoker": "~1.1",
+ "phpunit/phpunit": "^5.7 || ^7.3",
+ "squizlabs/php_codesniffer": "~2.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Lcobucci\\JWT\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Luís Otávio Cobucci Oblonczyk",
+ "email": "lcobucci@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "A simple library to work with JSON Web Token and JSON Web Signature",
+ "keywords": [
+ "JWS",
+ "jwt"
+ ],
+ "time": "2019-05-24T18:30:49+00:00"
+ },
+ {
+ "name": "lexik/jwt-authentication-bundle",
+ "version": "v2.6.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git",
+ "reference": "448551fc08c6cff37aad9d8f27f6b9615cd28966"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/448551fc08c6cff37aad9d8f27f6b9615cd28966",
+ "reference": "448551fc08c6cff37aad9d8f27f6b9615cd28966",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "lcobucci/jwt": "^3.2",
+ "namshi/jose": "^7.2",
+ "php": "^5.5|^7.0",
+ "symfony/framework-bundle": "^3.4|^4.0|^5.0",
+ "symfony/security-bundle": "^3.4|^4.0|^5.0"
+ },
+ "require-dev": {
+ "symfony/browser-kit": "^3.4|^4.0|^5.0",
+ "symfony/console": "^3.4|^4.0|^5.0",
+ "symfony/dom-crawler": "^3.4|^4.0|^5.0",
+ "symfony/phpunit-bridge": "^3.4|^4.0|^5.0",
+ "symfony/var-dumper": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "gesdinet/jwt-refresh-token-bundle": "Implements a refresh token system over Json Web Tokens in Symfony",
+ "spomky-labs/lexik-jose-bridge": "Provides a JWT Token encoder with encryption support"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Lexik\\Bundle\\JWTAuthenticationBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Barthe",
+ "email": "j.barthe@lexik.fr",
+ "homepage": "https://github.com/jeremyb"
+ },
+ {
+ "name": "Nicolas Cabot",
+ "email": "n.cabot@lexik.fr",
+ "homepage": "https://github.com/slashfan"
+ },
+ {
+ "name": "Cedric Girard",
+ "email": "c.girard@lexik.fr",
+ "homepage": "https://github.com/cedric-g"
+ },
+ {
+ "name": "Dev Lexik",
+ "email": "dev@lexik.fr",
+ "homepage": "https://github.com/lexik"
+ },
+ {
+ "name": "Robin Chalas",
+ "email": "robin.chalas@gmail.com",
+ "homepage": "https://github.com/chalasr"
+ },
+ {
+ "name": "Lexik Community",
+ "homepage": "https://github.com/lexik/LexikJWTAuthenticationBundle/graphs/contributors"
+ }
+ ],
+ "description": "This bundle provides JWT authentication for your Symfony REST API",
+ "homepage": "https://github.com/lexik/LexikJWTAuthenticationBundle",
+ "keywords": [
+ "Authentication",
+ "JWS",
+ "api",
+ "bundle",
+ "jwt",
+ "rest",
+ "symfony"
+ ],
+ "time": "2019-11-22T14:22:26+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.25.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1",
+ "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1",
"shasum": ""
},
"require": {
@@ -1570,7 +1782,422 @@
"logging",
"psr-3"
],
- "time": "2019-11-13T10:00:05+00:00"
+ "time": "2019-12-20T14:15:16+00:00"
+ },
+ {
+ "name": "mouf/classname-mapper",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thecodingmachine/classname-mapper.git",
+ "reference": "fa32a0ef5a45292d2240a405aed8a1aa5f04d642"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thecodingmachine/classname-mapper/zipball/fa32a0ef5a45292d2240a405aed8a1aa5f04d642",
+ "reference": "fa32a0ef5a45292d2240a405aed8a1aa5f04d642",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0 | ~5.0",
+ "satooshi/php-coveralls": "~1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Mouf\\Composer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David Négrier",
+ "email": "d.negrier@thecodingmachine.com",
+ "homepage": "http://mouf-php.com"
+ }
+ ],
+ "description": "Provides a way to find in which PHP files a class will be looked upon.",
+ "homepage": "http://mouf-php.com/packages/thecodingmachine/classname-mapper",
+ "keywords": [
+ "autoload",
+ "composer"
+ ],
+ "time": "2019-01-17T16:26:30+00:00"
+ },
+ {
+ "name": "namshi/jose",
+ "version": "7.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/namshi/jose.git",
+ "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff",
+ "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff",
+ "shasum": ""
+ },
+ "require": {
+ "ext-date": "*",
+ "ext-hash": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-spl": "*",
+ "php": ">=5.5",
+ "symfony/polyfill-php56": "^1.0"
+ },
+ "require-dev": {
+ "phpseclib/phpseclib": "^2.0",
+ "phpunit/phpunit": "^4.5|^5.0",
+ "satooshi/php-coveralls": "^1.0"
+ },
+ "suggest": {
+ "ext-openssl": "Allows to use OpenSSL as crypto engine.",
+ "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Namshi\\JOSE\\": "src/Namshi/JOSE/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Alessandro Nadalin",
+ "email": "alessandro.nadalin@gmail.com"
+ },
+ {
+ "name": "Alessandro Cinelli (cirpo)",
+ "email": "alessandro.cinelli@gmail.com"
+ }
+ ],
+ "description": "JSON Object Signing and Encryption library for PHP.",
+ "keywords": [
+ "JSON Web Signature",
+ "JSON Web Token",
+ "JWS",
+ "json",
+ "jwt",
+ "token"
+ ],
+ "time": "2016-12-05T07:27:31+00:00"
+ },
+ {
+ "name": "nelmio/cors-bundle",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nelmio/NelmioCorsBundle.git",
+ "reference": "9683e6d30d000ef998919261329d825de7c53499"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/9683e6d30d000ef998919261329d825de7c53499",
+ "reference": "9683e6d30d000ef998919261329d825de7c53499",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/framework-bundle": "^4.3 || ^5.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.2",
+ "symfony/phpunit-bridge": "^4.3 || ^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Nelmio\\CorsBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nelmio",
+ "homepage": "http://nelm.io"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://github.com/nelmio/NelmioCorsBundle/contributors"
+ }
+ ],
+ "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Symfony application",
+ "keywords": [
+ "api",
+ "cors",
+ "crossdomain"
+ ],
+ "time": "2019-11-15T08:54:08+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpdocumentor/type-resolver": "0.4.*",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2019-12-28T18:55:12+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-07-14T14:27:02+00:00"
+ },
+ {
+ "name": "pimple/pimple",
+ "version": "v3.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/silexphp/Pimple.git",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Pimple": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Pimple, a simple Dependency Injection Container",
+ "homepage": "http://pimple.sensiolabs.org",
+ "keywords": [
+ "container",
+ "dependency injection"
+ ],
+ "time": "2018-01-21T07:42:36+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "time": "2016-08-06T20:24:11+00:00"
},
{
"name": "psr/container",
@@ -1621,6 +2248,211 @@
],
"time": "2017-02-14T16:28:37+00:00"
},
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/http-server-handler",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-handler.git",
+ "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+ "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side request handler",
+ "keywords": [
+ "handler",
+ "http",
+ "http-interop",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response",
+ "server"
+ ],
+ "time": "2018-10-30T16:46:14+00:00"
+ },
+ {
+ "name": "psr/http-server-middleware",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-server-middleware.git",
+ "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+ "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0",
+ "psr/http-message": "^1.0",
+ "psr/http-server-handler": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Server\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP server-side middleware",
+ "keywords": [
+ "http",
+ "http-interop",
+ "middleware",
+ "psr",
+ "psr-15",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2018-10-30T17:12:04+00:00"
+ },
+ {
+ "name": "psr/link",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/link.git",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Link\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for HTTP links",
+ "keywords": [
+ "http",
+ "http-link",
+ "link",
+ "psr",
+ "psr-13",
+ "rest"
+ ],
+ "time": "2016-10-28T16:06:13+00:00"
+ },
{
"name": "psr/log",
"version": "1.1.2",
@@ -1669,80 +2501,31 @@
"time": "2019-11-01T11:05:21+00:00"
},
{
- "name": "seld/jsonlint",
- "version": "1.7.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19",
- "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19",
- "shasum": ""
- },
- "require": {
- "php": "^5.3 || ^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
- },
- "bin": [
- "bin/jsonlint"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Seld\\JsonLint\\": "src/Seld/JsonLint/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
- }
- ],
- "description": "JSON Linter",
- "keywords": [
- "json",
- "linter",
- "parser",
- "validator"
- ],
- "time": "2019-10-24T14:27:39+00:00"
- },
- {
- "name": "seld/phar-utils",
+ "name": "psr/simple-cache",
"version": "1.0.1",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/phar-utils.git",
- "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a"
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a",
- "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
"shasum": ""
},
"require": {
- "php": ">=5.3"
+ "php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Seld\\PharUtils\\": "src/"
+ "Psr\\SimpleCache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1751,28 +2534,225 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be"
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
}
],
- "description": "PHAR file format utilities, for when PHP phars you up",
+ "description": "Common interfaces for simple caching",
"keywords": [
- "phra"
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
],
- "time": "2015-10-13T18:44:15+00:00"
+ "time": "2017-10-23T01:57:42+00:00"
},
{
- "name": "symfony/config",
- "version": "v4.4.1",
+ "name": "symfony/asset",
+ "version": "v4.4.2",
"source": {
"type": "git",
- "url": "https://github.com/symfony/config.git",
- "reference": "7aa5817f1b7a8ed377752b90fcc47dfb3c67b40c"
+ "url": "https://github.com/symfony/asset.git",
+ "reference": "7ec5fc653dab63d7519a6f411982ee224a696d66"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/7aa5817f1b7a8ed377752b90fcc47dfb3c67b40c",
- "reference": "7aa5817f1b7a8ed377752b90fcc47dfb3c67b40c",
+ "url": "https://api.github.com/repos/symfony/asset/zipball/7ec5fc653dab63d7519a6f411982ee224a696d66",
+ "reference": "7ec5fc653dab63d7519a6f411982ee224a696d66",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "^3.4|^4.0|^5.0",
+ "symfony/http-kernel": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Asset\\": ""
+ },
+ "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": "Symfony Asset Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-10-12T00:35:04+00:00"
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "6af64bab165e588300378a87bcd2df3c7c31c144"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/6af64bab165e588300378a87bcd2df3c7c31c144",
+ "reference": "6af64bab165e588300378a87bcd2df3c7c31c144",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/cache": "~1.0",
+ "psr/log": "~1.0",
+ "symfony/cache-contracts": "^1.1.7|^2",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.2|^5.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.5",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/var-dumper": "<4.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0",
+ "symfony/cache-implementation": "1.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "~1.6",
+ "doctrine/dbal": "~2.5",
+ "predis/predis": "~1.1",
+ "psr/simple-cache": "^1.0",
+ "symfony/config": "^4.2|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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 Cache component with PSR-6, PSR-16, and tags",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ],
+ "time": "2019-12-16T10:45:21+00:00"
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v1.1.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1",
+ "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/cache": "^1.0"
+ },
+ "suggest": {
+ "symfony/cache-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "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": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-10-04T21:43:27+00:00"
+ },
+ {
+ "name": "symfony/config",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/config.git",
+ "reference": "6911d432edd5b50822986604fd5a5be3af856d30"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/config/zipball/6911d432edd5b50822986604fd5a5be3af856d30",
+ "reference": "6911d432edd5b50822986604fd5a5be3af856d30",
"shasum": ""
},
"require": {
@@ -1823,20 +2803,20 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2019-12-01T10:50:45+00:00"
+ "time": "2019-12-18T12:00:29+00:00"
},
{
"name": "symfony/console",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201"
+ "reference": "82437719dab1e6bdd28726af14cb345c2ec816d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/f0aea3df20d15635b3cb9730ca5eea1c65b7f201",
- "reference": "f0aea3df20d15635b3cb9730ca5eea1c65b7f201",
+ "url": "https://api.github.com/repos/symfony/console/zipball/82437719dab1e6bdd28726af14cb345c2ec816d0",
+ "reference": "82437719dab1e6bdd28726af14cb345c2ec816d0",
"shasum": ""
},
"require": {
@@ -1899,11 +2879,526 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2019-12-01T10:06:17+00:00"
+ "time": "2019-12-17T10:32:23+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "5c4c1db977dc70bb3250e1308d3e8c6341aa38f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/5c4c1db977dc70bb3250e1308d3e8c6341aa38f5",
+ "reference": "5c4c1db977dc70bb3250e1308d3e8c6341aa38f5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<3.4"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "^3.4|^4.0|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "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": "Symfony Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-16T14:46:54+00:00"
+ },
+ {
+ "name": "symfony/dependency-injection",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dependency-injection.git",
+ "reference": "79b0358207a3571cc3af02a57d0321927921f539"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/79b0358207a3571cc3af02a57d0321927921f539",
+ "reference": "79b0358207a3571cc3af02a57d0321927921f539",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/container": "^1.0",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/config": "<4.3|>=5.0",
+ "symfony/finder": "<3.4",
+ "symfony/proxy-manager-bridge": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0",
+ "symfony/service-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/config": "^4.3",
+ "symfony/expression-language": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^3.4|^4.0|^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": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\DependencyInjection\\": ""
+ },
+ "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": "Symfony DependencyInjection Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-19T16:00:02+00:00"
+ },
+ {
+ "name": "symfony/doctrine-bridge",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/doctrine-bridge.git",
+ "reference": "3e40beb8dbb06d2967e37938f4c3f20f425137a6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/3e40beb8dbb06d2967e37938f4c3f20f425137a6",
+ "reference": "3e40beb8dbb06d2967e37938f4c3f20f425137a6",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/event-manager": "~1.0",
+ "doctrine/persistence": "^1.3",
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "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/security-core": "<4.4",
+ "symfony/validator": "<4.4.2|<5.0.2,>=5.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.6",
+ "doctrine/collections": "~1.0",
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.4",
+ "doctrine/orm": "^2.6.3",
+ "doctrine/reflection": "~1.0",
+ "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|^5.0",
+ "symfony/http-kernel": "^4.3.7",
+ "symfony/messenger": "^4.4|^5.0",
+ "symfony/property-access": "^3.4|^4.0|^5.0",
+ "symfony/property-info": "^3.4|^4.0|^5.0",
+ "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0",
+ "symfony/security-core": "^4.4|^5.0",
+ "symfony/stopwatch": "^3.4|^4.0|^5.0",
+ "symfony/translation": "^3.4|^4.0|^5.0",
+ "symfony/validator": "^4.4.2|^5.0.2",
+ "symfony/var-dumper": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "doctrine/data-fixtures": "",
+ "doctrine/dbal": "",
+ "doctrine/orm": "",
+ "symfony/form": "",
+ "symfony/property-info": "",
+ "symfony/validator": ""
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": ""
+ },
+ "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": "Symfony Doctrine Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-17T08:15:02+00:00"
+ },
+ {
+ "name": "symfony/dotenv",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dotenv.git",
+ "reference": "c387ab37887f997162a8579d335b38f328d27859"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/c387ab37887f997162a8579d335b38f328d27859",
+ "reference": "c387ab37887f997162a8579d335b38f328d27859",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "require-dev": {
+ "symfony/process": "^3.4.2|^4.0|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Dotenv\\": ""
+ },
+ "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": "Registers environment variables from a .env file",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "time": "2019-12-19T15:57:49+00:00"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "6d7d7712a6ff5215ec26215672293b154f1db8c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/6d7d7712a6ff5215ec26215672293b154f1db8c1",
+ "reference": "6d7d7712a6ff5215ec26215672293b154f1db8c1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0",
+ "symfony/debug": "^4.4",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/serializer": "^4.4|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "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": "Symfony ErrorHandler Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-16T14:46:54+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b3c3068a72623287550fe20b84a2b01dcba2686f",
+ "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/event-dispatcher-contracts": "^1.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "1.1"
+ },
+ "require-dev": {
+ "psr/log": "~1.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-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": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "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": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-11-28T13:33:56+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v1.1.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+ "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "psr/event-dispatcher": "",
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "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": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-09-17T09:54:03+00:00"
+ },
+ {
+ "name": "symfony/expression-language",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/expression-language.git",
+ "reference": "539e7ff0b635c8b90d8127bc929da781a96eab2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/539e7ff0b635c8b90d8127bc929da781a96eab2d",
+ "reference": "539e7ff0b635c8b90d8127bc929da781a96eab2d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/cache": "^3.4|^4.0|^5.0",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ExpressionLanguage\\": ""
+ },
+ "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": "Symfony ExpressionLanguage Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-10T10:33:21+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -1953,7 +3448,7 @@
},
{
"name": "symfony/finder",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@@ -2001,17 +3496,197 @@
"time": "2019-11-17T21:56:56+00:00"
},
{
- "name": "symfony/http-foundation",
- "version": "v4.4.1",
+ "name": "symfony/flex",
+ "version": "v1.6.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5"
+ "url": "https://github.com/symfony/flex.git",
+ "reference": "952f45d1c5077e658cb16a61d11603bee873f968"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8bccc59e61b41963d14c3dbdb23181e5c932a1d5",
- "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/952f45d1c5077e658cb16a61d11603bee873f968",
+ "reference": "952f45d1c5077e658cb16a61d11603bee873f968",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2",
+ "symfony/dotenv": "^3.4|^4.0|^5.0",
+ "symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0",
+ "symfony/process": "^2.7|^3.0|^4.0|^5.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ },
+ "class": "Symfony\\Flex\\Flex"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Flex\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "Composer plugin for Symfony",
+ "time": "2019-12-13T18:05:11+00:00"
+ },
+ {
+ "name": "symfony/framework-bundle",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/framework-bundle.git",
+ "reference": "c80526b4c22f6ddc23080225bf276f094d2c398e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c80526b4c22f6ddc23080225bf276f094d2c398e",
+ "reference": "c80526b4c22f6ddc23080225bf276f094d2c398e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-xml": "*",
+ "php": "^7.1.3",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/config": "^4.3.4|^5.0",
+ "symfony/dependency-injection": "^4.4.1|^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",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/routing": "^4.4|^5.0"
+ },
+ "conflict": {
+ "doctrine/persistence": "<1.3",
+ "phpdocumentor/reflection-docblock": "<3.0",
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+ "symfony/asset": "<3.4",
+ "symfony/browser-kit": "<4.3",
+ "symfony/console": "<4.3",
+ "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.7",
+ "doctrine/cache": "~1.0",
+ "paragonie/sodium_compat": "^1.8",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0",
+ "symfony/asset": "^3.4|^4.0|^5.0",
+ "symfony/browser-kit": "^4.3|^5.0",
+ "symfony/console": "^4.3.4|^5.0",
+ "symfony/css-selector": "^3.4|^4.0|^5.0",
+ "symfony/dom-crawler": "^4.3|^5.0",
+ "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/polyfill-intl-icu": "~1.0",
+ "symfony/process": "^3.4|^4.0|^5.0",
+ "symfony/property-info": "^3.4|^4.0|^5.0",
+ "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.41|^2.10|^3.0"
+ },
+ "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"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\FrameworkBundle\\": ""
+ },
+ "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": "Symfony FrameworkBundle",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-17T08:15:02+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fcae1cff5b57b2a9c3aabefeb1527678705ddb62",
+ "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62",
"shasum": ""
},
"require": {
@@ -2053,11 +3728,225 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
- "time": "2019-11-28T13:33:56+00:00"
+ "time": "2019-12-19T15:57:49+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "fe310d2e95cd4c356836c8ecb0895a46d97fede2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fe310d2e95cd4c356836c8ecb0895a46d97fede2",
+ "reference": "fe310d2e95cd4c356836c8ecb0895a46d97fede2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0",
+ "symfony/error-handler": "^4.4",
+ "symfony/event-dispatcher": "^4.4",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-php73": "^1.9"
+ },
+ "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.34|<2.4,>=2"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/cache": "~1.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.34|^2.4|^3.0"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "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": "Symfony HttpKernel Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-19T16:23:40+00:00"
+ },
+ {
+ "name": "symfony/inflector",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/inflector.git",
+ "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/inflector/zipball/98581481d9ddabe4db3a66e10202fe1fa08d791b",
+ "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Inflector\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Inflector Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string",
+ "symfony",
+ "words"
+ ],
+ "time": "2019-11-06T12:02:32+00:00"
+ },
+ {
+ "name": "symfony/lock",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/lock.git",
+ "reference": "738d8a5d8d093a1e30ff98909c8ad9ed91944601"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/lock/zipball/738d8a5d8d093a1e30ff98909c8ad9ed91944601",
+ "reference": "738d8a5d8d093a1e30ff98909c8ad9ed91944601",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.5"
+ },
+ "require-dev": {
+ "doctrine/dbal": "~2.5",
+ "mongodb/mongodb": "~1.1",
+ "predis/predis": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Lock\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jérémy Derussé",
+ "email": "jeremy@derusse.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Lock Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cas",
+ "flock",
+ "locking",
+ "mutex",
+ "redlock",
+ "semaphore"
+ ],
+ "time": "2019-12-13T08:10:41+00:00"
},
{
"name": "symfony/mime",
- "version": "v4.4.1",
+ "version": "v4.4.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
@@ -2117,6 +4006,136 @@
],
"time": "2019-11-30T08:27:26+00:00"
},
+ {
+ "name": "symfony/monolog-bridge",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bridge.git",
+ "reference": "da3718c84f29d4b1ef607e2a13c496186a5975c1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/da3718c84f29d4b1ef607e2a13c496186a5975c1",
+ "reference": "da3718c84f29d4b1ef607e2a13c496186a5975c1",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "^1.25.1",
+ "php": "^7.1.3",
+ "symfony/http-kernel": "^4.3",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "symfony/console": "<3.4",
+ "symfony/http-foundation": "<3.4"
+ },
+ "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."
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Monolog\\": ""
+ },
+ "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": "Symfony Monolog Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-10T10:33:21+00:00"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v3.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
+ "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.22 || ~2.0",
+ "php": ">=5.6",
+ "symfony/config": "~3.4 || ~4.0 || ^5.0",
+ "symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
+ "symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
+ "symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4 || ~4.0 || ^5.0",
+ "symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0",
+ "symfony/yaml": "~3.4 || ~4.0 || ^5.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2019-11-13T13:11:14+00:00"
+ },
{
"name": "symfony/polyfill-ctype",
"version": "v1.13.1",
@@ -2296,6 +4315,62 @@
],
"time": "2019-11-27T14:18:11+00:00"
},
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.13.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
+ "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-util": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.13-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php56\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "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 5.6+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2019-11-27T13:56:44+00:00"
+ },
{
"name": "symfony/polyfill-php72",
"version": "v1.13.1",
@@ -2410,21 +4485,80 @@
"time": "2019-11-27T16:25:15+00:00"
},
{
- "name": "symfony/process",
- "version": "v4.4.1",
+ "name": "symfony/polyfill-util",
+ "version": "v1.13.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "51c0135ef3f44c5803b33dc60e96bf4f77752726"
+ "url": "https://github.com/symfony/polyfill-util.git",
+ "reference": "964a67f293b66b95883a5ed918a65354fcd2258f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/51c0135ef3f44c5803b33dc60e96bf4f77752726",
- "reference": "51c0135ef3f44c5803b33dc60e96bf4f77752726",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f",
+ "reference": "964a67f293b66b95883a5ed918a65354fcd2258f",
"shasum": ""
},
"require": {
- "php": "^7.1.3"
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.13-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Util\\": ""
+ }
+ },
+ "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 utilities for portability of PHP codes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compat",
+ "compatibility",
+ "polyfill",
+ "shim"
+ ],
+ "time": "2019-11-27T13:56:44+00:00"
+ },
+ {
+ "name": "symfony/property-access",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "055fe3134f8f301ff44af314d83463b858ea6413"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/055fe3134f8f301ff44af314d83463b858ea6413",
+ "reference": "055fe3134f8f301ff44af314d83463b858ea6413",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/inflector": "^3.4|^4.0|^5.0"
+ },
+ "require-dev": {
+ "symfony/cache": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To cache access methods."
},
"type": "library",
"extra": {
@@ -2434,7 +4568,7 @@
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Process\\": ""
+ "Symfony\\Component\\PropertyAccess\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2454,9 +4588,96 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Process Component",
+ "description": "Symfony PropertyAccess Component",
"homepage": "https://symfony.com",
- "time": "2019-11-28T13:33:56+00:00"
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "time": "2019-12-10T10:33:21+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "8afd280f159697177e48eefa89efd4db60a57665"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/8afd280f159697177e48eefa89efd4db60a57665",
+ "reference": "8afd280f159697177e48eefa89efd4db60a57665",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/inflector": "^3.4|^4.0|^5.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2",
+ "phpdocumentor/type-resolver": "<0.3.0",
+ "symfony/dependency-injection": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.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"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Property Info Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "time": "2019-11-05T16:11:08+00:00"
},
{
"name": "symfony/routing",
@@ -2464,12 +4685,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "51f3f20ad29329a0bdf5c0e2f722d3764b065273"
+ "reference": "6faed8df36d5532db9f2b0d906bd746ad8bcd0c8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/51f3f20ad29329a0bdf5c0e2f722d3764b065273",
- "reference": "51f3f20ad29329a0bdf5c0e2f722d3764b065273",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/6faed8df36d5532db9f2b0d906bd746ad8bcd0c8",
+ "reference": "6faed8df36d5532db9f2b0d906bd746ad8bcd0c8",
"shasum": ""
},
"require": {
@@ -2532,7 +4753,423 @@
"uri",
"url"
],
- "time": "2019-12-01T08:39:58+00:00"
+ "time": "2020-01-04T13:00:46+00:00"
+ },
+ {
+ "name": "symfony/security-bundle",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-bundle.git",
+ "reference": "9bf16458fee90bd62c240625dd94e335bad91885"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/9bf16458fee90bd62c240625dd94e335bad91885",
+ "reference": "9bf16458fee90bd62c240625dd94e335bad91885",
+ "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/security-core": "^4.4",
+ "symfony/security-csrf": "^4.2|^5.0",
+ "symfony/security-guard": "^4.2|^5.0",
+ "symfony/security-http": "^4.4.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/doctrine-bundle": "^1.5|^2.0",
+ "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.41|^2.10|^3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SecurityBundle\\": ""
+ },
+ "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": "Symfony SecurityBundle",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-16T10:45:21+00:00"
+ },
+ {
+ "name": "symfony/security-core",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-core.git",
+ "reference": "52709ee2aafd13d777253d510d96fbf2ccc5a578"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/52709ee2aafd13d777253d510d96fbf2ccc5a578",
+ "reference": "52709ee2aafd13d777253d510d96fbf2ccc5a578",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/event-dispatcher-contracts": "^1.1|^2",
+ "symfony/service-contracts": "^1.1.6|^2"
+ },
+ "conflict": {
+ "symfony/event-dispatcher": "<4.3|>=5",
+ "symfony/ldap": "<4.4",
+ "symfony/security-guard": "<4.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "psr/log": "~1.0",
+ "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/validator": "^3.4.31|^4.3.4|^5.0"
+ },
+ "suggest": {
+ "psr/container-implementation": "To instantiate the Security class",
+ "symfony/event-dispatcher": "",
+ "symfony/expression-language": "For using the expression voter",
+ "symfony/http-foundation": "",
+ "symfony/ldap": "For using LDAP integration",
+ "symfony/validator": "For using the user password constraint"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Core\\": ""
+ },
+ "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": "Symfony Security Component - Core Library",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-16T11:07:37+00:00"
+ },
+ {
+ "name": "symfony/security-csrf",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-csrf.git",
+ "reference": "aeed1a2315019b5a090f5ad34c01f1935ea9b757"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-csrf/zipball/aeed1a2315019b5a090f5ad34c01f1935ea9b757",
+ "reference": "aeed1a2315019b5a090f5ad34c01f1935ea9b757",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/security-core": "^3.4|^4.0|^5.0"
+ },
+ "conflict": {
+ "symfony/http-foundation": "<3.4"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "symfony/http-foundation": "For using the class SessionTokenStorage."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Csrf\\": ""
+ },
+ "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": "Symfony Security Component - CSRF Library",
+ "homepage": "https://symfony.com",
+ "time": "2019-10-12T00:35:04+00:00"
+ },
+ {
+ "name": "symfony/security-guard",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-guard.git",
+ "reference": "203a81f9fcfc3bbaba7f1103c261a30d2648611b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-guard/zipball/203a81f9fcfc3bbaba7f1103c261a30d2648611b",
+ "reference": "203a81f9fcfc3bbaba7f1103c261a30d2648611b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/security-core": "^3.4.22|^4.2.3|^5.0",
+ "symfony/security-http": "^4.4.1"
+ },
+ "require-dev": {
+ "psr/log": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Guard\\": ""
+ },
+ "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": "Symfony Security Component - Guard",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-07T16:27:44+00:00"
+ },
+ {
+ "name": "symfony/security-http",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/security-http.git",
+ "reference": "8ab510f214fd9c37769378b5036da58d444fe142"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/8ab510f214fd9c37769378b5036da58d444fe142",
+ "reference": "8ab510f214fd9c37769378b5036da58d444fe142",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/http-foundation": "^3.4|^4.0|^5.0",
+ "symfony/http-kernel": "^4.4",
+ "symfony/property-access": "^3.4|^4.0|^5.0",
+ "symfony/security-core": "^4.4"
+ },
+ "conflict": {
+ "symfony/event-dispatcher": ">=5",
+ "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "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"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Security\\Http\\": ""
+ },
+ "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": "Symfony Security Component - HTTP Integration",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-13T12:11:48+00:00"
+ },
+ {
+ "name": "symfony/serializer",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/serializer.git",
+ "reference": "e5bc3f6dee44dc06e7e640cce4baa741b73ecb6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/e5bc3f6dee44dc06e7e640cce4baa741b73ecb6e",
+ "reference": "e5bc3f6dee44dc06e7e640cce4baa741b73ecb6e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "phpdocumentor/type-resolver": "<0.2.1",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/property-access": "<3.4",
+ "symfony/property-info": "<3.4",
+ "symfony/yaml": "<3.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.0",
+ "doctrine/cache": "~1.0",
+ "phpdocumentor/reflection-docblock": "^3.2|^4.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/property-access": "^3.4|^4.0|^5.0",
+ "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. You will also need doctrine/cache.",
+ "doctrine/cache": "For using the default cached annotation reader and metadata cache.",
+ "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."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Serializer\\": ""
+ },
+ "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": "Symfony Serializer Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-16T11:07:37+00:00"
},
{
"name": "symfony/service-contracts",
@@ -2593,17 +5230,556 @@
"time": "2019-10-14T12:27:06+00:00"
},
{
- "name": "symfony/yaml",
- "version": "v4.4.1",
+ "name": "symfony/translation-contracts",
+ "version": "v1.1.7",
"source": {
"type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "76de473358fe802578a415d5bb43c296cf09d211"
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/76de473358fe802578a415d5bb43c296cf09d211",
- "reference": "76de473358fe802578a415d5bb43c296cf09d211",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/364518c132c95642e530d9b2d217acbc2ccac3e6",
+ "reference": "364518c132c95642e530d9b2d217acbc2ccac3e6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
+ },
+ "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": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "time": "2019-09-17T11:12:18+00:00"
+ },
+ {
+ "name": "symfony/twig-bridge",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bridge.git",
+ "reference": "936cf6f5b973377345e8ac43870987ef8e747ce3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/936cf6f5b973377345e8ac43870987ef8e747ce3",
+ "reference": "936cf6f5b973377345e8ac43870987ef8e747ce3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/translation-contracts": "^1.1|^2",
+ "twig/twig": "^1.41|^2.10|^3.0"
+ },
+ "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",
+ "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.3.5",
+ "symfony/http-foundation": "^4.3|^5.0",
+ "symfony/http-kernel": "^4.4",
+ "symfony/mime": "^4.3|^5.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/routing": "^3.4|^4.0|^5.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",
+ "twig/cssinliner-extra": "^2.12",
+ "twig/inky-extra": "^2.12",
+ "twig/markdown-extra": "^2.12"
+ },
+ "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",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Twig\\": ""
+ },
+ "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": "Symfony Twig Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-05T05:58:42+00:00"
+ },
+ {
+ "name": "symfony/twig-bundle",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bundle.git",
+ "reference": "a6e7bd9731256a55b2270c1283de8bc3bda06e8f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a6e7bd9731256a55b2270c1283de8bc3bda06e8f",
+ "reference": "a6e7bd9731256a55b2270c1283de8bc3bda06e8f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/http-foundation": "^4.3|^5.0",
+ "symfony/http-kernel": "^4.4",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/twig-bridge": "^4.4|^5.0",
+ "twig/twig": "^1.41|^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.1",
+ "symfony/framework-bundle": "<4.4",
+ "symfony/translation": "<4.2"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "doctrine/cache": "~1.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"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\TwigBundle\\": ""
+ },
+ "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": "Symfony TwigBundle",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-10T11:13:11+00:00"
+ },
+ {
+ "name": "symfony/validator",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/validator.git",
+ "reference": "79eb122bed116c1fbe0769698d5b46acce1860a2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/79eb122bed116c1fbe0769698d5b46acce1860a2",
+ "reference": "79eb122bed116c1fbe0769698d5b46acce1860a2",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "doctrine/lexer": "<1.0.2",
+ "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.7",
+ "doctrine/cache": "~1.0",
+ "egulias/email-validator": "^2.1.10",
+ "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/property-access": "^3.4|^4.0|^5.0",
+ "symfony/property-info": "^3.4|^4.0|^5.0",
+ "symfony/translation": "^4.2",
+ "symfony/yaml": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+ "doctrine/cache": "For using the default cached annotation reader.",
+ "egulias/email-validator": "Strict (RFC compliant) email validation",
+ "psr/cache-implementation": "For using the mapping cache.",
+ "symfony/config": "",
+ "symfony/expression-language": "For using the Expression validator",
+ "symfony/http-foundation": "",
+ "symfony/intl": "",
+ "symfony/property-access": "For accessing properties within comparison constraints",
+ "symfony/property-info": "To automatically add NotNull and Type constraints",
+ "symfony/translation": "For translating validation errors.",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Validator\\": ""
+ },
+ "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": "Symfony Validator Component",
+ "homepage": "https://symfony.com",
+ "time": "2019-12-17T08:15:02+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
+ "reference": "be330f919bdb395d1e0c3f2bfb8948512d6bdd99",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php72": "~1.5"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^3.4|^4.0|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "twig/twig": "^1.34|^2.4|^3.0"
+ },
+ "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"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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 mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2019-12-18T13:41:29+00:00"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e566070effe60b8d16b99e958cdbd92aa2e470cb",
+ "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.1.1|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "serialize"
+ ],
+ "time": "2019-12-01T08:39:58+00:00"
+ },
+ {
+ "name": "symfony/web-link",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/web-link.git",
+ "reference": "bc6432b92681b2f28ced2f3bbcf051e75eea569c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/web-link/zipball/bc6432b92681b2f28ced2f3bbcf051e75eea569c",
+ "reference": "bc6432b92681b2f28ced2f3bbcf051e75eea569c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/link": "^1.0",
+ "symfony/polyfill-php72": "^1.5"
+ },
+ "conflict": {
+ "symfony/http-kernel": "<4.3"
+ },
+ "provide": {
+ "psr/link-implementation": "1.0"
+ },
+ "require-dev": {
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.3|^5.0"
+ },
+ "suggest": {
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\WebLink\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony WebLink Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "dns-prefetch",
+ "http",
+ "http2",
+ "link",
+ "performance",
+ "prefetch",
+ "preload",
+ "prerender",
+ "psr13",
+ "push"
+ ],
+ "time": "2019-10-12T00:35:04+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v4.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "a08832b974dd5fafe3085a66d41fe4c84bb2628c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/a08832b974dd5fafe3085a66d41fe4c84bb2628c",
+ "reference": "a08832b974dd5fafe3085a66d41fe4c84bb2628c",
"shasum": ""
},
"require": {
@@ -2649,7 +5825,346 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2019-11-12T14:51:11+00:00"
+ "time": "2019-12-10T10:33:21+00:00"
+ },
+ {
+ "name": "thecodingmachine/class-explorer",
+ "version": "v1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thecodingmachine/class-explorer.git",
+ "reference": "743016beaa1d6b9b9d0785f4450540336d3e4eee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thecodingmachine/class-explorer/zipball/743016beaa1d6b9b9d0785f4450540336d3e4eee",
+ "reference": "743016beaa1d6b9b9d0785f4450540336d3e4eee",
+ "shasum": ""
+ },
+ "require": {
+ "mouf/classname-mapper": "^1",
+ "php": ">=7.1",
+ "psr/simple-cache": "^1"
+ },
+ "require-dev": {
+ "maglnet/composer-require-checker": "^1.0",
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpstan/phpstan": "^0.10.3",
+ "phpunit/phpunit": "^7.2.7",
+ "squizlabs/php_codesniffer": "^3.2.3",
+ "symfony/cache": "^4.1.4",
+ "thecodingmachine/phpstan-strict-rules": "^0.11.0"
+ },
+ "type": "library",
+ "extra": {
+ "class": "TheCodingMachine\\ClassExplorer\\ClassExplorerPlugin",
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TheCodingMachine\\ClassExplorer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David Négrier",
+ "email": "d.negrier@thecodingmachine.com",
+ "homepage": "http://mouf-php.com"
+ }
+ ],
+ "description": "Find the list of all your classes and more.",
+ "homepage": "https://github.com/thecodingmachine/class-explorer",
+ "keywords": [
+ "classes",
+ "reflection"
+ ],
+ "time": "2019-01-31T11:07:30+00:00"
+ },
+ {
+ "name": "thecodingmachine/graphqlite",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thecodingmachine/graphqlite.git",
+ "reference": "c04dfefc649a9acde9500577c81aca7cfad80da0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thecodingmachine/graphqlite/zipball/c04dfefc649a9acde9500577c81aca7cfad80da0",
+ "reference": "c04dfefc649a9acde9500577c81aca7cfad80da0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.2",
+ "doctrine/cache": "^1.8",
+ "ecodev/graphql-upload": "^4.0",
+ "php": ">=7.1",
+ "phpdocumentor/reflection-docblock": "^4.3",
+ "phpdocumentor/type-resolver": "^0.4",
+ "psr/container": "^1",
+ "psr/http-message": "^1",
+ "psr/simple-cache": "^1",
+ "symfony/lock": "^3 || ^4",
+ "thecodingmachine/class-explorer": "^1.0.2",
+ "webonyx/graphql-php": "^0.13"
+ },
+ "require-dev": {
+ "beberlei/porpaginas": "^1.2",
+ "mouf/picotainer": "^1.1",
+ "phpstan/phpstan": "^0.11",
+ "phpunit/phpunit": "^7.5.16",
+ "satooshi/php-coveralls": "^1.0",
+ "symfony/cache": "^4.1.4"
+ },
+ "suggest": {
+ "beberlei/porpaginas": "If you want automatic pagination in your GraphQL types"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "TheCodingMachine\\GraphQLite\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David Négrier",
+ "email": "d.negrier@thecodingmachine.com"
+ }
+ ],
+ "description": "Write your GraphQL queries in simple to write controllers (using webonyx/graphql-php).",
+ "time": "2019-10-14T14:40:53+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v2.12.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "97b6311585cae66a26833b14b33785f5797f7d39"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/97b6311585cae66a26833b14b33785f5797f7d39",
+ "reference": "97b6311585cae66a26833b14b33785f5797f7d39",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.12-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ },
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "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": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2019-12-28T07:12:03+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
+ "reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "vimeo/psalm": "<3.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2019-11-24T13:36:37+00:00"
+ },
+ {
+ "name": "webonyx/graphql-php",
+ "version": "v0.13.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webonyx/graphql-php.git",
+ "reference": "6829ae58f4c59121df1f86915fb9917a2ec595e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6829ae58f4c59121df1f86915fb9917a2ec595e8",
+ "reference": "6829ae58f4c59121df1f86915fb9917a2ec595e8",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": "^7.1||^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpbench/phpbench": "^0.14.0",
+ "phpstan/phpstan": "^0.11.4",
+ "phpstan/phpstan-phpunit": "^0.11.0",
+ "phpstan/phpstan-strict-rules": "^0.11.0",
+ "phpunit/phpcov": "^5.0",
+ "phpunit/phpunit": "^7.2",
+ "psr/http-message": "^1.0",
+ "react/promise": "2.*"
+ },
+ "suggest": {
+ "psr/http-message": "To use standard GraphQL server",
+ "react/promise": "To leverage async resolving on React PHP platform"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GraphQL\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP port of GraphQL reference implementation",
+ "homepage": "https://github.com/webonyx/graphql-php",
+ "keywords": [
+ "api",
+ "graphql"
+ ],
+ "time": "2019-08-25T10:32:47+00:00"
+ },
+ {
+ "name": "willdurand/negotiation",
+ "version": "v2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/willdurand/Negotiation.git",
+ "reference": "03436ededa67c6e83b9b12defac15384cb399dc9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9",
+ "reference": "03436ededa67c6e83b9b12defac15384cb399dc9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Negotiation\\": "src/Negotiation"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "William Durand",
+ "email": "will+git@drnd.me"
+ }
+ ],
+ "description": "Content Negotiation tools for PHP provided as a standalone library.",
+ "homepage": "http://williamdurand.fr/Negotiation/",
+ "keywords": [
+ "accept",
+ "content",
+ "format",
+ "header",
+ "negotiation"
+ ],
+ "time": "2017-05-14T17:21:12+00:00"
}
],
"packages-dev": [
@@ -2775,94 +6290,6 @@
],
"time": "2019-10-30T20:03:18+00:00"
},
- {
- "name": "doctrine/doctrine-bundle",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/DoctrineBundle.git",
- "reference": "f96fac225563f5b3b4eeb2f80eb982b7f56484d8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f96fac225563f5b3b4eeb2f80eb982b7f56484d8",
- "reference": "f96fac225563f5b3b4eeb2f80eb982b7f56484d8",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "^2.9.0",
- "jdorn/sql-formatter": "^1.2.16",
- "php": "^7.1",
- "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.3.7|^5.0",
- "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0"
- },
- "conflict": {
- "doctrine/orm": "<2.6",
- "twig/twig": "<1.34|>=2.0,<2.4"
- },
- "require-dev": {
- "doctrine/coding-standard": "^6.0",
- "doctrine/orm": "^2.6",
- "phpunit/phpunit": "^7.5",
- "symfony/phpunit-bridge": "^4.2",
- "symfony/property-info": "^4.3.3|^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"
- },
- "suggest": {
- "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
- "symfony/web-profiler-bundle": "To use the data collector."
- },
- "type": "symfony-bundle",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Doctrine\\Bundle\\DoctrineBundle\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Symfony Community",
- "homepage": "http://symfony.com/contributors"
- },
- {
- "name": "Doctrine Project",
- "homepage": "http://www.doctrine-project.org/"
- }
- ],
- "description": "Symfony DoctrineBundle",
- "homepage": "http://www.doctrine-project.org",
- "keywords": [
- "database",
- "dbal",
- "orm",
- "persistence"
- ],
- "time": "2019-11-28T08:38:10+00:00"
- },
{
"name": "doctrine/doctrine-fixtures-bundle",
"version": "3.3.0",
@@ -2930,68 +6357,18 @@
],
"time": "2019-11-13T15:46:58+00:00"
},
- {
- "name": "jdorn/sql-formatter",
- "version": "v1.2.17",
- "source": {
- "type": "git",
- "url": "https://github.com/jdorn/sql-formatter.git",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
- "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2.4"
- },
- "require-dev": {
- "phpunit/phpunit": "3.7.*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "lib"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jeremy Dorn",
- "email": "jeremy@jeremydorn.com",
- "homepage": "http://jeremydorn.com/"
- }
- ],
- "description": "a PHP SQL highlighting library",
- "homepage": "https://github.com/jdorn/sql-formatter/",
- "keywords": [
- "highlight",
- "sql"
- ],
- "time": "2014-01-12T16:20:24+00:00"
- },
{
"name": "myclabs/deep-copy",
- "version": "1.9.3",
+ "version": "1.9.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea"
+ "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea",
- "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7",
+ "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7",
"shasum": ""
},
"require": {
@@ -3026,7 +6403,7 @@
"object",
"object graph"
],
- "time": "2019-08-09T12:45:53+00:00"
+ "time": "2019-12-15T19:12:40+00:00"
},
{
"name": "nikic/php-parser",
@@ -3182,156 +6559,6 @@
"description": "Library for handling version information and constraints",
"time": "2018-07-08T19:19:57+00:00"
},
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "require-dev": {
- "phpunit/phpunit": "~6"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "time": "2018-08-07T13:53:10+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "4.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
- "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e",
- "shasum": ""
- },
- "require": {
- "php": "^7.0",
- "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
- "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
- "webmozart/assert": "^1.0"
- },
- "require-dev": {
- "doctrine/instantiator": "^1.0.5",
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^6.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2019-09-12T14:27:41+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
- "shasum": ""
- },
- "require": {
- "php": "^7.1",
- "phpdocumentor/reflection-common": "^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "^7.1",
- "mockery/mockery": "~1",
- "phpunit/phpunit": "^7.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2019-08-22T18:11:29+00:00"
- },
{
"name": "phploc/phploc",
"version": "4.0.1",
@@ -3383,16 +6610,16 @@
},
{
"name": "phpmetrics/phpmetrics",
- "version": "v2.4.1",
+ "version": "v2.5.0",
"source": {
"type": "git",
"url": "https://github.com/phpmetrics/PhpMetrics.git",
- "reference": "39095017413805cd6d9ada16cfaf8aaffcb2fec4"
+ "reference": "2456b133664925836d2b807ed6403eb97dddb6c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/39095017413805cd6d9ada16cfaf8aaffcb2fec4",
- "reference": "39095017413805cd6d9ada16cfaf8aaffcb2fec4",
+ "url": "https://api.github.com/repos/phpmetrics/PhpMetrics/zipball/2456b133664925836d2b807ed6403eb97dddb6c4",
+ "reference": "2456b133664925836d2b807ed6403eb97dddb6c4",
"shasum": ""
},
"require": {
@@ -3406,8 +6633,9 @@
"halleck45/phpmetrics": "*"
},
"require-dev": {
- "phpunit/phpunit": ">=4.8.27,<=5.7.13",
- "sebastian/comparator": ">=1.2.3"
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14",
+ "sebastian/comparator": ">=1.2.3",
+ "squizlabs/php_codesniffer": "^3.5"
},
"bin": [
"bin/phpmetrics"
@@ -3441,37 +6669,37 @@
"quality",
"testing"
],
- "time": "2018-07-10T17:19:33+00:00"
+ "time": "2019-12-12T08:55:05+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "1.9.0",
+ "version": "1.10.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203"
+ "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203",
- "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
+ "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
- "sebastian/comparator": "^1.1|^2.0|^3.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
- "phpspec/phpspec": "^2.5|^3.2",
+ "phpspec/phpspec": "^2.5 || ^3.2",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.8.x-dev"
+ "dev-master": "1.10.x-dev"
}
},
"autoload": {
@@ -3504,7 +6732,7 @@
"spy",
"stub"
],
- "time": "2019-10-03T11:07:50+00:00"
+ "time": "2019-12-22T21:05:45+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -3760,16 +6988,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "7.5.17",
+ "version": "7.5.19",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a"
+ "reference": "4263f76a3fc65385e242ef7357b99f3bed36707e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4c92a15296e58191a4cd74cff3b34fc8e374174a",
- "reference": "4c92a15296e58191a4cd74cff3b34fc8e374174a",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4263f76a3fc65385e242ef7357b99f3bed36707e",
+ "reference": "4263f76a3fc65385e242ef7357b99f3bed36707e",
"shasum": ""
},
"require": {
@@ -3840,53 +7068,7 @@
"testing",
"xunit"
],
- "time": "2019-10-28T10:37:36+00:00"
- },
- {
- "name": "psr/cache",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
- "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ],
- "time": "2016-08-06T20:24:11+00:00"
+ "time": "2020-01-06T16:53:05+00:00"
},
{
"name": "roave/security-advisories",
@@ -3894,12 +7076,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "e4ee2c8e4ccd908debc64069faf023c684a76760"
+ "reference": "67ac6ea8f4a078c3c9b7aec5d7ae70f098c37389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/e4ee2c8e4ccd908debc64069faf023c684a76760",
- "reference": "e4ee2c8e4ccd908debc64069faf023c684a76760",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/67ac6ea8f4a078c3c9b7aec5d7ae70f098c37389",
+ "reference": "67ac6ea8f4a078c3c9b7aec5d7ae70f098c37389",
"shasum": ""
},
"conflict": {
@@ -3920,7 +7102,7 @@
"composer/composer": "<=1-alpha.11",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/core": ">=2,<3.5.39",
- "contao/core-bundle": ">=4,<4.4.39|>=4.5,<4.7.5",
+ "contao/core-bundle": ">=4,<4.4.46|>=4.5,<4.8.6",
"contao/listing-bundle": ">=4,<4.4.8",
"datadog/dd-trace": ">=0.30,<0.30.2",
"david-garcia/phpwhois": "<=4.3.1",
@@ -3934,8 +7116,9 @@
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
"dompdf/dompdf": ">=0.6,<0.6.2",
- "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5",
- "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5",
+ "drupal/core": ">=7,<7.69|>=8,<8.7.11|>=8.8,<8.8.1",
+ "drupal/drupal": ">=7,<7.69|>=8,<8.7.11|>=8.8,<8.8.1",
+ "endroid/qr-code-bundle": "<3.4.2",
"erusev/parsedown": "<1.7.2",
"ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.4",
"ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1",
@@ -3967,7 +7150,7 @@
"league/commonmark": "<0.18.3",
"magento/magento1ce": "<1.9.4.3",
"magento/magento1ee": ">=1,<1.14.4.3",
- "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2",
+ "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
"monolog/monolog": ">=1.8,<1.12",
"namshi/jose": "<2.2",
"onelogin/php-saml": "<2.10.4",
@@ -3990,6 +7173,7 @@
"pusher/pusher-php-server": "<2.2.1",
"robrichards/xmlseclibs": ">=1,<3.0.4",
"sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
+ "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
"shopware/shopware": "<5.3.7",
@@ -4049,8 +7233,8 @@
"titon/framework": ">=0,<9.9.99",
"truckersmp/phpwhois": "<=4.3.1",
"twig/twig": "<1.38|>=2,<2.7",
- "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.27|>=9,<9.5.8",
- "typo3/cms-core": ">=8,<8.7.27|>=9,<9.5.8",
+ "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.30|>=9,<9.5.12|>=10,<10.2.1",
+ "typo3/cms-core": ">=8,<8.7.30|>=9,<9.5.12|>=10,<10.2.1",
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
"typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
@@ -4104,7 +7288,7 @@
}
],
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
- "time": "2019-12-02T13:03:15+00:00"
+ "time": "2020-01-06T19:16:46+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
@@ -4712,904 +7896,72 @@
"time": "2016-10-03T07:35:21+00:00"
},
{
- "name": "symfony/cache",
- "version": "v4.4.1",
+ "name": "symfony/maker-bundle",
+ "version": "v1.14.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/cache.git",
- "reference": "de737c81ea95018d11a3ef908ad2ebf203741b96"
+ "url": "https://github.com/symfony/maker-bundle.git",
+ "reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/de737c81ea95018d11a3ef908ad2ebf203741b96",
- "reference": "de737c81ea95018d11a3ef908ad2ebf203741b96",
+ "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/c864e7f9b8d1e1f5f60acc3beda11299f637aded",
+ "reference": "c864e7f9b8d1e1f5f60acc3beda11299f637aded",
"shasum": ""
},
"require": {
- "php": "^7.1.3",
- "psr/cache": "~1.0",
- "psr/log": "~1.0",
- "symfony/cache-contracts": "^1.1.7|^2",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.2|^5.0"
- },
- "conflict": {
- "doctrine/dbal": "<2.5",
- "symfony/dependency-injection": "<3.4",
- "symfony/http-kernel": "<4.4",
- "symfony/var-dumper": "<4.4"
- },
- "provide": {
- "psr/cache-implementation": "1.0",
- "psr/simple-cache-implementation": "1.0",
- "symfony/cache-implementation": "1.0"
- },
- "require-dev": {
- "cache/integration-tests": "dev-master",
- "doctrine/cache": "~1.6",
- "doctrine/dbal": "~2.5",
- "predis/predis": "~1.1",
- "psr/simple-cache": "^1.0",
- "symfony/config": "^4.2|^5.0",
- "symfony/dependency-injection": "^3.4|^4.1|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Cache\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "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 Cache component with PSR-6, PSR-16, and tags",
- "homepage": "https://symfony.com",
- "keywords": [
- "caching",
- "psr6"
- ],
- "time": "2019-12-01T10:50:45+00:00"
- },
- {
- "name": "symfony/cache-contracts",
- "version": "v1.1.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/cache-contracts.git",
- "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1",
- "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/cache": "^1.0"
- },
- "suggest": {
- "symfony/cache-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Cache\\": ""
- }
- },
- "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": "Generic abstractions related to caching",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-10-04T21:43:27+00:00"
- },
- {
- "name": "symfony/debug",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "b8600a1d7d20b0e80906398bb1f50612fa074a8e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/b8600a1d7d20b0e80906398bb1f50612fa074a8e",
- "reference": "b8600a1d7d20b0e80906398bb1f50612fa074a8e",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/log": "~1.0"
- },
- "conflict": {
- "symfony/http-kernel": "<3.4"
- },
- "require-dev": {
- "symfony/http-kernel": "^3.4|^4.0|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "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": "Symfony Debug Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-28T13:33:56+00:00"
- },
- {
- "name": "symfony/dependency-injection",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dependency-injection.git",
- "reference": "ad46a4def1325befab696b49c839dffea3fc92bd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad46a4def1325befab696b49c839dffea3fc92bd",
- "reference": "ad46a4def1325befab696b49c839dffea3fc92bd",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/container": "^1.0",
- "symfony/service-contracts": "^1.1.6|^2"
- },
- "conflict": {
- "symfony/config": "<4.3|>=5.0",
- "symfony/finder": "<3.4",
- "symfony/proxy-manager-bridge": "<3.4",
- "symfony/yaml": "<3.4"
- },
- "provide": {
- "psr/container-implementation": "1.0",
- "symfony/service-implementation": "1.0"
- },
- "require-dev": {
- "symfony/config": "^4.3",
- "symfony/expression-language": "^3.4|^4.0|^5.0",
- "symfony/yaml": "^3.4|^4.0|^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": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\DependencyInjection\\": ""
- },
- "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": "Symfony DependencyInjection Component",
- "homepage": "https://symfony.com",
- "time": "2019-12-01T10:19:36+00:00"
- },
- {
- "name": "symfony/doctrine-bridge",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "31c3d72f9e7a03e1b9d136084a9201c2225ee348"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/31c3d72f9e7a03e1b9d136084a9201c2225ee348",
- "reference": "31c3d72f9e7a03e1b9d136084a9201c2225ee348",
- "shasum": ""
- },
- "require": {
- "doctrine/event-manager": "~1.0",
- "doctrine/persistence": "~1.0",
- "php": "^7.1.3",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/service-contracts": "^1.1|^2"
- },
- "conflict": {
- "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/security-core": "<4.4",
- "symfony/validator": "<4.4"
- },
- "require-dev": {
- "doctrine/annotations": "~1.7",
- "doctrine/cache": "~1.6",
- "doctrine/collections": "~1.0",
- "doctrine/data-fixtures": "1.0.*",
- "doctrine/dbal": "~2.4",
- "doctrine/orm": "^2.6.3",
- "doctrine/reflection": "~1.0",
- "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|^5.0",
- "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|^5.0",
- "symfony/var-dumper": "^3.4|^4.0|^5.0"
- },
- "suggest": {
- "doctrine/data-fixtures": "",
- "doctrine/dbal": "",
- "doctrine/orm": "",
- "symfony/form": "",
- "symfony/property-info": "",
- "symfony/validator": ""
- },
- "type": "symfony-bridge",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Bridge\\Doctrine\\": ""
- },
- "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": "Symfony Doctrine Bridge",
- "homepage": "https://symfony.com",
- "time": "2019-12-01T08:39:58+00:00"
- },
- {
- "name": "symfony/error-handler",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/error-handler.git",
- "reference": "a1ad02d62789efed1d2b2796f1c15e0c6a00fc3b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/a1ad02d62789efed1d2b2796f1c15e0c6a00fc3b",
- "reference": "a1ad02d62789efed1d2b2796f1c15e0c6a00fc3b",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/log": "~1.0",
- "symfony/debug": "^4.4",
- "symfony/var-dumper": "^4.4|^5.0"
- },
- "require-dev": {
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\ErrorHandler\\": ""
- },
- "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": "Symfony ErrorHandler Component",
- "homepage": "https://symfony.com",
- "time": "2019-12-01T08:46:01+00:00"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b3c3068a72623287550fe20b84a2b01dcba2686f",
- "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/event-dispatcher-contracts": "^1.1"
- },
- "conflict": {
- "symfony/dependency-injection": "<3.4"
- },
- "provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "1.1"
- },
- "require-dev": {
- "psr/log": "~1.0",
+ "doctrine/inflector": "^1.2",
+ "nikic/php-parser": "^4.0",
+ "php": "^7.0.8",
"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/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": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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": "Symfony EventDispatcher Component",
- "homepage": "https://symfony.com",
- "time": "2019-11-28T13:33:56+00:00"
- },
- {
- "name": "symfony/event-dispatcher-contracts",
- "version": "v1.1.7",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
- "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "suggest": {
- "psr/event-dispatcher": "",
- "symfony/event-dispatcher-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
- }
- },
- "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": "Generic abstractions related to dispatching event",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "time": "2019-09-17T09:54:03+00:00"
- },
- {
- "name": "symfony/framework-bundle",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/framework-bundle.git",
- "reference": "69ac426bfaca9270e549cea184eece00357f2675"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/69ac426bfaca9270e549cea184eece00357f2675",
- "reference": "69ac426bfaca9270e549cea184eece00357f2675",
- "shasum": ""
- },
- "require": {
- "ext-xml": "*",
- "php": "^7.1.3",
- "symfony/cache": "^4.4|^5.0",
- "symfony/config": "^4.3.4|^5.0",
- "symfony/dependency-injection": "^4.4.1|^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",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/routing": "^4.4|^5.0"
- },
- "conflict": {
- "phpdocumentor/reflection-docblock": "<3.0",
- "phpdocumentor/type-resolver": "<0.2.1",
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
- "symfony/asset": "<3.4",
- "symfony/browser-kit": "<4.3",
- "symfony/console": "<4.3",
- "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"
+ "symfony/framework-bundle": "^3.4|^4.0|^5.0",
+ "symfony/http-kernel": "^3.4|^4.0|^5.0"
},
"require-dev": {
- "doctrine/annotations": "~1.7",
- "doctrine/cache": "~1.0",
- "paragonie/sodium_compat": "^1.8",
- "phpdocumentor/reflection-docblock": "^3.0|^4.0",
- "symfony/asset": "^3.4|^4.0|^5.0",
- "symfony/browser-kit": "^4.3|^5.0",
- "symfony/console": "^4.3.4|^5.0",
- "symfony/css-selector": "^3.4|^4.0|^5.0",
- "symfony/dom-crawler": "^4.3|^5.0",
- "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/polyfill-intl-icu": "~1.0",
+ "doctrine/doctrine-bundle": "^1.8|^2.0",
+ "doctrine/orm": "^2.3",
+ "friendsofphp/php-cs-fixer": "^2.8",
+ "friendsoftwig/twigcs": "^3.1.2",
+ "symfony/http-client": "^4.3|^5.0",
+ "symfony/phpunit-bridge": "^4.3|^5.0",
"symfony/process": "^3.4|^4.0|^5.0",
- "symfony/property-info": "^3.4|^4.0|^5.0",
- "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.41|^2.10|^3.0"
- },
- "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/security-core": "^3.4|^4.0|^5.0",
+ "symfony/yaml": "^3.4|^4.0|^5.0"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
- "dev-master": "4.4-dev"
+ "dev-master": "1.0-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Bundle\\FrameworkBundle\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
+ "Symfony\\Bundle\\MakerBundle\\": "src/"
+ }
},
"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": "Symfony FrameworkBundle",
- "homepage": "https://symfony.com",
- "time": "2019-11-28T14:12:27+00:00"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "e4187780ed26129ee86d5234afbebf085e144f88"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e4187780ed26129ee86d5234afbebf085e144f88",
- "reference": "e4187780ed26129ee86d5234afbebf085e144f88",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "psr/log": "~1.0",
- "symfony/error-handler": "^4.4",
- "symfony/event-dispatcher": "^4.4",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php73": "^1.9"
- },
- "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.34|<2.4,>=2"
- },
- "provide": {
- "psr/log-implementation": "1.0"
- },
- "require-dev": {
- "psr/cache": "~1.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.34|^2.4|^3.0"
- },
- "suggest": {
- "symfony/browser-kit": "",
- "symfony/config": "",
- "symfony/console": "",
- "symfony/dependency-injection": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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": "Symfony HttpKernel Component",
- "homepage": "https://symfony.com",
- "time": "2019-12-01T14:06:38+00:00"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
- "reference": "0a89a1dbbedd9fb2cfb2336556dec8305273c19a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php72": "~1.5"
- },
- "conflict": {
- "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
- "symfony/console": "<3.4"
- },
- "require-dev": {
- "ext-iconv": "*",
- "symfony/console": "^3.4|^4.0|^5.0",
- "symfony/process": "^4.4|^5.0",
- "twig/twig": "^1.34|^2.4|^3.0"
- },
- "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"
- },
- "bin": [
- "Resources/bin/var-dump-server"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "files": [
- "Resources/functions/dump.php"
- ],
- "psr-4": {
- "Symfony\\Component\\VarDumper\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "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 mechanism for exploring and dumping PHP variables",
- "homepage": "https://symfony.com",
+ "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.",
+ "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html",
"keywords": [
- "debug",
- "dump"
+ "code generator",
+ "generator",
+ "scaffold",
+ "scaffolding"
],
- "time": "2019-11-28T13:33:56+00:00"
- },
- {
- "name": "symfony/var-exporter",
- "version": "v4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-exporter.git",
- "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e566070effe60b8d16b99e958cdbd92aa2e470cb",
- "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "require-dev": {
- "symfony/var-dumper": "^4.1.1|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.4-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\VarExporter\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
- "homepage": "https://symfony.com",
- "keywords": [
- "clone",
- "construct",
- "export",
- "hydrate",
- "instantiate",
- "serialize"
- ],
- "time": "2019-12-01T08:39:58+00:00"
+ "time": "2019-11-07T00:56:03+00:00"
},
{
"name": "theseer/fdomdocument",
@@ -5690,54 +8042,6 @@
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"time": "2019-06-13T22:48:21+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozart/assert.git",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
- "shasum": ""
- },
- "require": {
- "php": "^5.3.3 || ^7.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "vimeo/psalm": "<3.6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^7.5.13"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Webmozart\\Assert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Assertions to validate method input/output with nice error messages.",
- "keywords": [
- "assert",
- "check",
- "validate"
- ],
- "time": "2019-11-24T13:36:37+00:00"
}
],
"aliases": [],
@@ -5748,7 +8052,9 @@
},
"prefer-stable": true,
"prefer-lowest": false,
- "platform": [],
+ "platform": {
+ "ext-json": "*"
+ },
"platform-dev": [],
"platform-overrides": {
"php": "7.2.0"
diff --git a/config/bootstrap.php b/config/bootstrap.php
new file mode 100644
index 000000000..352cfebc3
--- /dev/null
+++ b/config/bootstrap.php
@@ -0,0 +1,24 @@
+=1.2)
+if (is_array($env = @include dirname(__DIR__) . '/.env.local.php') && ($_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
new file mode 100644
index 000000000..0b065713b
--- /dev/null
+++ b/config/bundles.php
@@ -0,0 +1,12 @@
+ ['all' => true],
+ Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
+ Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
+ Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
+ ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true],
+ DAMA\DoctrineTestBundle\DAMADoctrineTestBundle::class => ['test' => true],
+ Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
+ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
+];
diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml
new file mode 100644
index 000000000..c0df5e682
--- /dev/null
+++ b/config/packages/api_platform.yaml
@@ -0,0 +1,39 @@
+api_platform:
+ graphql:
+ graphiql:
+ enabled: false
+ graphql_playground:
+ enabled: false
+ mapping:
+ paths: ['%kernel.project_dir%/core']
+ patch_formats:
+ json: ['application/merge-patch+json']
+ graphql: ['application/graphql']
+ swagger:
+ versions: [3]
+ oauth:
+ # To enable or disable oauth.
+ enabled: true
+
+ # The oauth client id.
+ clientId: 'scrmfe'
+
+ # The oauth client secret.
+ clientSecret: 'scrmfe'
+
+ # The oauth type.
+ type: 'oauth2'
+
+ # The oauth flow grant type.
+ flow: 'password'
+
+ # The oauth token url.
+ tokenUrl: '/oauth/v2/token'
+
+ # The oauth authentication url.
+ authorizationUrl: '/oauth/v2/auth'
+
+ # The oauth scopes.
+ scopes: []
+
+ enable_swagger_ui: false
diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml
new file mode 100644
index 000000000..6899b7200
--- /dev/null
+++ b/config/packages/cache.yaml
@@ -0,0 +1,19 @@
+framework:
+ cache:
+ # Unique name of your app: used to compute stable namespaces for cache keys.
+ #prefix_seed: your_vendor_name/app_name
+
+ # The "app" cache stores to the filesystem by default.
+ # The data in this cache should persist between deploys.
+ # Other options include:
+
+ # Redis
+ #app: cache.adapter.redis
+ #default_redis_provider: redis://localhost
+
+ # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
+ #app: cache.adapter.apcu
+
+ # Namespaced pools use the above "app" backend by default
+ #pools:
+ #my.dedicated.cache: null
diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml
new file mode 100644
index 000000000..b1998da1a
--- /dev/null
+++ b/config/packages/dev/monolog.yaml
@@ -0,0 +1,19 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
+ # uncomment to get logging in your browser
+ # you may have to allow bigger header sizes in your Web server configuration
+ #firephp:
+ # type: firephp
+ # level: info
+ #chromephp:
+ # type: chromephp
+ # level: info
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine", "!console"]
diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml
new file mode 100644
index 000000000..ddc2fb266
--- /dev/null
+++ b/config/packages/doctrine.yaml
@@ -0,0 +1,18 @@
+doctrine:
+ dbal:
+ url: '%env(resolve:DATABASE_URL)%'
+
+ # 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
+ auto_mapping: true
+ mappings:
+ App:
+ is_bundle: false
+ type: annotation
+ dir: '%kernel.project_dir%/core/modules'
+ prefix: 'SuiteCRM\Core\Modules\'
+ alias: App
diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml
new file mode 100644
index 000000000..6089f4bd0
--- /dev/null
+++ b/config/packages/framework.yaml
@@ -0,0 +1,16 @@
+framework:
+ secret: '%env(APP_SECRET)%'
+ #csrf_protection: true
+ #http_method_override: true
+
+ # Enables session support. Note that the session will ONLY be started if you read or write from it.
+ # Remove or comment this section to explicitly disable session support.
+ session:
+ handler_id: null
+ cookie_secure: auto
+ cookie_samesite: lax
+
+ #esi: true
+ #fragments: true
+ php_errors:
+ log: true
diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml
new file mode 100644
index 000000000..084f59a05
--- /dev/null
+++ b/config/packages/prod/doctrine.yaml
@@ -0,0 +1,20 @@
+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
new file mode 100644
index 000000000..5bcdf06ea
--- /dev/null
+++ b/config/packages/prod/monolog.yaml
@@ -0,0 +1,23 @@
+monolog:
+ handlers:
+ main:
+ type: fingers_crossed
+ action_level: error
+ handler: nested
+ excluded_http_codes: [404, 405]
+ nested:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ console:
+ type: console
+ process_psr_3_messages: false
+ channels: ["!event", "!doctrine"]
+ deprecation:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log"
+ deprecation_filter:
+ type: filter
+ handler: deprecation
+ max_level: info
+ channels: ["php"]
diff --git a/config/packages/prod/routing.yaml b/config/packages/prod/routing.yaml
new file mode 100644
index 000000000..b3e6a0af2
--- /dev/null
+++ b/config/packages/prod/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ strict_requirements: null
diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml
new file mode 100644
index 000000000..7e977620b
--- /dev/null
+++ b/config/packages/routing.yaml
@@ -0,0 +1,3 @@
+framework:
+ router:
+ utf8: true
diff --git a/config/packages/security.yaml b/config/packages/security.yaml
new file mode 100644
index 000000000..ce69ba752
--- /dev/null
+++ b/config/packages/security.yaml
@@ -0,0 +1,22 @@
+security:
+ # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
+ providers:
+ in_memory: { memory: null }
+ firewalls:
+ dev:
+ pattern: ^/(_(profiler|wdt)|css|images|js)/
+ security: false
+ main:
+ anonymous: lazy
+
+ # activate different ways to authenticate
+ # https://symfony.com/doc/current/security.html#firewalls-authentication
+
+ # https://symfony.com/doc/current/security/impersonating_user.html
+ # switch_user: true
+
+ # Easy way to control access for large sections of your site
+ # Note: Only the *first* access control that matches will be used
+ access_control:
+ # - { path: ^/admin, roles: ROLE_ADMIN }
+ # - { path: ^/profile, roles: ROLE_USER }
diff --git a/config/packages/test/dama_doctrine_test_bundle.yaml b/config/packages/test/dama_doctrine_test_bundle.yaml
new file mode 100644
index 000000000..80b009117
--- /dev/null
+++ b/config/packages/test/dama_doctrine_test_bundle.yaml
@@ -0,0 +1,4 @@
+dama_doctrine_test:
+ enable_static_connection: true
+ enable_static_meta_data_cache: true
+ enable_static_query_cache: true
diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml
new file mode 100644
index 000000000..d051c8400
--- /dev/null
+++ b/config/packages/test/framework.yaml
@@ -0,0 +1,4 @@
+framework:
+ test: true
+ session:
+ storage_id: session.storage.mock_file
diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml
new file mode 100644
index 000000000..2762653c8
--- /dev/null
+++ b/config/packages/test/monolog.yaml
@@ -0,0 +1,7 @@
+monolog:
+ handlers:
+ main:
+ type: stream
+ path: "%kernel.logs_dir%/%kernel.environment%.log"
+ level: debug
+ channels: ["!event"]
diff --git a/config/packages/test/twig.yaml b/config/packages/test/twig.yaml
new file mode 100644
index 000000000..8c6e0b401
--- /dev/null
+++ b/config/packages/test/twig.yaml
@@ -0,0 +1,2 @@
+twig:
+ strict_variables: true
diff --git a/config/packages/test/validator.yaml b/config/packages/test/validator.yaml
new file mode 100644
index 000000000..1e5ab7880
--- /dev/null
+++ b/config/packages/test/validator.yaml
@@ -0,0 +1,3 @@
+framework:
+ validation:
+ not_compromised_password: false
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
new file mode 100644
index 000000000..b3cdf3064
--- /dev/null
+++ b/config/packages/twig.yaml
@@ -0,0 +1,2 @@
+twig:
+ default_path: '%kernel.project_dir%/templates'
diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml
new file mode 100644
index 000000000..350786a13
--- /dev/null
+++ b/config/packages/validator.yaml
@@ -0,0 +1,8 @@
+framework:
+ validation:
+ email_validation_mode: html5
+
+ # Enables validator auto-mapping support.
+ # For instance, basic validation constraints will be inferred from Doctrine's metadata.
+ #auto_mapping:
+ # App\Entity\: []
diff --git a/config/routes/api_platform.yaml b/config/routes/api_platform.yaml
new file mode 100644
index 000000000..38f11cba8
--- /dev/null
+++ b/config/routes/api_platform.yaml
@@ -0,0 +1,4 @@
+api_platform:
+ resource: .
+ type: api_platform
+ prefix: /api
diff --git a/config/routes/dev/framework.yaml b/config/routes/dev/framework.yaml
new file mode 100644
index 000000000..bcbbf13d0
--- /dev/null
+++ b/config/routes/dev/framework.yaml
@@ -0,0 +1,3 @@
+_errors:
+ resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
+ prefix: /_error
diff --git a/config/services.yaml b/config/services.yaml
new file mode 100644
index 000000000..ce5e5825f
--- /dev/null
+++ b/config/services.yaml
@@ -0,0 +1,28 @@
+framework:
+ secret: "%secret%"
+
+parameters:
+ secret: ThisTokenIsNotSoSecretChangeIt
+
+services:
+ # default configuration for services in *this* file
+ _defaults:
+ autowire: true # Automatically injects dependencies in your services.
+ autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
+ bind:
+ $projectDir: '%kernel.project_dir%'
+
+ # makes classes in src/ available to be used as services
+ # this creates a service per class whose id is the fully-qualified class name
+ App\:
+ resource: '../core/src/*'
+ exclude: '../core/src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'
+
+ # controllers are imported separately to make sure services can be injected
+ # as action arguments even if you don't extend any base controller class
+ SuiteCRM\Core\Modules\:
+ resource: '../core/modules/'
+ tags: ['controller.service_arguments']
+
+ # add more service definitions when explicit configuration is needed
+ # please note that last definitions always *replace* previous ones
diff --git a/core/base/Cli/CommandMapper.php b/core/base/Cli/CommandMapper.php
deleted file mode 100644
index 282c1b905..000000000
--- a/core/base/Cli/CommandMapper.php
+++ /dev/null
@@ -1,106 +0,0 @@
-fileHelper = $file;
-
- try {
- $this->configParameters = $config->loadFiles($config_path);
- } catch (\Exception $e) {
- trigger_error('Config failed to load files: ' . $e);
- }
-
- $this->enabledModules = $this->configParameters->get('modules.enabled');
- }
-
- public function getAllModules(): void
- {
- $modules = (new ModuleManager($this->configParameters, $this->fileHelper))->getAllModules();
-
- $this->enabledModules = $modules;
- }
-
- /**
- * @return array
- */
- public function getAllCommands(): array
- {
- $commandClasses = [];
-
- $filePaths = [];
-
- if (empty($this->enabledModules)) {
- $this->getAllModules();
- }
-
- if (!empty($this->enabledModules)) {
- foreach ($this->enabledModules as $module) {
- $filePaths[] = APP_PATH . '/' . $module . '/Cli';
- }
- }
-
- $files = $this->fileHelper->findFiles($filePaths, '/Command.php$/');
-
- if (!empty($files)) {
- foreach ($files as $file) {
- $parts = explode('/', $file);
-
- $key = array_search('modules', $parts, true);
-
- $parts = array_splice($parts, ($key + 1), count($parts));
-
- $filename = end($parts);
- $classname = rtrim($filename, '.php');
-
- $keys = array_keys($parts);
- $key = end($keys);
-
- $parts[$key] = $classname;
-
- $commandClass = 'SuiteCRM\\Core\\Modules\\' . implode('\\', $parts);
-
- $commandClasses[] = new $commandClass($this->configParameters);
- }
- }
-
- return $commandClasses;
- }
-
-}
diff --git a/core/base/Cli/SuiteCommand.php b/core/base/Cli/SuiteCommand.php
deleted file mode 100644
index 37c210f9e..000000000
--- a/core/base/Cli/SuiteCommand.php
+++ /dev/null
@@ -1,19 +0,0 @@
-locate($path);
- }
-
- $loaderResolver = new LoaderResolver([new YamlLoader($fileLocator)]);
-
- $delegatingLoader = new DelegatingLoader($loaderResolver);
-
- // All config parameters
- $allParameters = [];
-
- if ($configPaths !== false) {
- foreach ($configPaths as $path) {
- // Load the parameters from the path resource
- $parameters = $delegatingLoader->load($path);
-
- // Merge parameters together
- if (!empty($parameters)) {
- $allParameters = array_merge($allParameters, $parameters);
- }
- }
- }
-
- return new ParameterCollection($allParameters);
- }
-}
-
diff --git a/core/base/Config/ParameterCollection.php b/core/base/Config/ParameterCollection.php
deleted file mode 100644
index ae70c0e03..000000000
--- a/core/base/Config/ParameterCollection.php
+++ /dev/null
@@ -1,13 +0,0 @@
-load($data);
- }
-
- /**
- * Recursive function to collect the collection data
- *
- * @param array $data The collection data
- * @param string $parent_key The parent keys attached to the child array
- * @return bool
- */
- public function load($data, $parent_key = ''): bool
- {
- if (empty($data)) {
- return false;
- }
-
- $parentKey = ($parent_key !== '') ? $parent_key . '.' : '';
-
- foreach ($data as $key => $val) {
- if (is_array($val)) {
- $this->load($data[$key], $parentKey . $key);
- }
-
- $this->data[$parentKey . $key] = $val;
- }
-
- return true;
- }
-
- /**
- * Get all config variable
- *
- * @return array
- */
- public function getAll(): array
- {
- return $this->data;
- }
-
- /**
- * Get collection data
- *
- * @param string $key
- * @return bool|mixed
- */
- public function get($key)
- {
- return ($this->has($key)) ? $this->data[$key] : false;
- }
-
- /**
- * Set collection data
- *
- * @param string $key Name of parameter to set
- * @param mixed $value Value to set
- */
- public function set($key, $value): void
- {
- $this->data[$key] = $value;
- }
-
- /**
- * Find out if parameter exists
- *
- * @param string $key Name to find out
- * @return bool
- */
- public function has($key): bool
- {
- return isset($this->data[$key]);
- }
-
- /**
- * Count collection entry for key
- *
- * @param string|null $key The config key you want to count
- * @return int
- */
- public function count($key = null): int
- {
- return ($key === null) ? count($this->data) : count($this->data[$key]);
- }
-
- /**
- * Check if the collection key is empty
- *
- * @param string $key
- * @return bool true if empty - false - if not
- */
- public function isEmpty($key): bool
- {
- $has = $this->has($key);
-
- if ($has) {
- $count = $this->count($key);
-
- if ($count > 0) {
- return false;
- }
- }
-
- return true;
- }
-}
diff --git a/core/base/Helper/Data/CollectionInterface.php b/core/base/Helper/Data/CollectionInterface.php
deleted file mode 100644
index f9740f35d..000000000
--- a/core/base/Helper/Data/CollectionInterface.php
+++ /dev/null
@@ -1,50 +0,0 @@
-isDot()) {
- continue;
- }
-
- if ($fileInfo->isDir()) {
- $directories[] = $fileInfo->getFilename();
- }
- }
- }
-
- asort($directories);
-
- return array_values($directories);
- }
-
- /**
- * Make directory
- *
- * @param string $path
- * @param int $permissions octal
- * @return bool
- */
- public function makeDir($path, $permissions = 0755): bool
- {
- return is_dir($path) || mkdir($path, $permissions, true) || is_dir($path);
- }
-
- /**
- * Delete a directory and all files
- *
- * @param string $dir The directory path you want to delete
- * @param array $files_to_leave
- * @return bool True - successfully deleted False - issue with deletion
- */
- public function deleteDirectory(string $dir, array $files_to_leave = []): bool
- {
- $di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
-
- $ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
-
- if (empty($files_to_leave)) {
- foreach ($ri as $file) {
- $file->isDir() ? rmdir($file) : unlink($file);
- }
- } else {
- foreach ($ri as $file) {
- if (strpos($file->getPathName(), $files_to_leave[0]) === false) {
- $file->isDir() ? rmdir($file) : unlink($file);
- }
- }
- }
-
- return (!$this->isDirectoryEmpty($dir)) ?: rmdir($dir);
- }
-
- /**
- * Check to see if directory is empty
- *
- * @param string $dir
- * @return bool
- */
- public function isDirectoryEmpty($dir): bool
- {
- if (!is_readable($dir)) {
- return null;
- }
-
- return (count(scandir($dir)) == 2);
- }
-
- /**
- * File files
- *
- * @param string|array $directories The directory to look in
- * @param string $search The pattern to find the files
- * @return array
- */
- public function findFiles($directories, $search): array
- {
- $foundFiles = [];
-
- // Convert to array if string given
- if (is_string($directories)) {
- $directories = [$directories];
- }
-
- foreach ($directories as $directory) {
- $directory = realpath($directory);
-
- if (!is_dir($directory)) {
- continue;
- }
-
- $objDirectory = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS);
-
- $iterator = new RecursiveIteratorIterator($objDirectory);
-
- $files = new \RegexIterator($iterator, $search, \RecursiveRegexIterator::GET_MATCH);
-
- if ($files !== null) {
- foreach ($files as $key => $value) {
- $foundFiles[] = $key;
- }
- }
- }
-
- return $foundFiles;
- }
-
- /**
- * Copy files recursively
- * @param $src
- * @param $dst
- */
- public function recurseCopy($src, $dst): void
- {
- $dir = \opendir($src);
-
- if (!is_dir($dst)) {
- try {
- if (!mkdir($dst, 0755, true) && !is_dir($dst)) {
- throw new \RuntimeException(sprintf('Directory "%s" was not created', $dst));
- }
- } catch (\Exception $e) {
- throw new \RuntimeException($e->getMessage());
- }
- }
-
- chmod($dst, 0755);
-
- while (false !== ($file = \readdir($dir))) {
- if (($file !== '.') && ($file !== '..')) {
- if (\is_dir($src . '/' . $file)) {
- $this->recurseCopy($src . '/' . $file, $dst . '/' . $file);
- } else {
- \copy($src . '/' . $file, $dst . '/' . $file);
- }
- }
- }
-
- \closedir($dir);
- }
-}
diff --git a/core/base/Helper/File/FileMapperInterface.php b/core/base/Helper/File/FileMapperInterface.php
deleted file mode 100644
index 144badf2d..000000000
--- a/core/base/Helper/File/FileMapperInterface.php
+++ /dev/null
@@ -1,18 +0,0 @@
-modules = $modules;
- $this->config = $config;
- $this->route = $route;
- }
-
- /**
- * Run the Application
- *
- * @return mixed
- */
- public function run()
- {
- return $this;
- }
-
- /**
- * Get all routes from enabled modules
- *
- * @return array
- */
- public function getAllRoutes(): ?array
- {
- $allRoutes = [];
-
- foreach ($this->modules as $module) {
- $allRoutes = array_merge($allRoutes, $module);
- }
-
- return $allRoutes;
- }
-
- /**
- * Get the route of the instance call
- *
- * @return mixed
- * @throws \Exception
- */
- public function getRoute()
- {
- if ($this->route === null) {
- throw new \RuntimeException('Route was not configured');
- }
-
- return $this->route;
- }
-
- /**
- * Get all services
- *
- * @return array
- */
- public function getAllServices(): array
- {
- $allServices = [];
-
- foreach ($this->modules as $module) {
- $allServices = array_merge($allServices, $module);
- }
-
- return $allServices;
- }
-
-}
diff --git a/core/base/Module/Controller.php b/core/base/Module/Controller.php
deleted file mode 100644
index 21bc961cf..000000000
--- a/core/base/Module/Controller.php
+++ /dev/null
@@ -1,294 +0,0 @@
-config = $config;
- $this->requestObj = $request;
- $this->responseObj = $response;
- $this->view = $view;
- $this->services = $services;
-
- if ($this->config->has('storage.mysql.driver')) {
- $connectionParams = $this->config->get('storage.mysql');
- $namespaces = $this->config->get('entity.namespaces');
-
- $realNamespaces = [];
-
- foreach ($namespaces as $path => $namespace) {
- $realPath = realpath($path);
- if ($realPath !== false) {
- $realNamespaces[$realPath] = $namespace;
- }
- }
-
- $driver = new SimplifiedYamlDriver($realNamespaces);
-
-
- $realNamespaces = [];
-
- foreach ($namespaces as $path => $namespace) {
- $realPath = realpath($path);
- if ($realPath !== false) {
- $realNamespaces[$realPath] = $namespace;
- }
- }
-
- $driver = new SimplifiedYamlDriver($realNamespaces);
-
- $isDevMode = false;
-
- if ($this->config->has('server.environment') && $this->config->get('server.environment') === 'develop') {
- $isDevMode = true;
- }
-
- $config = Setup::createYAMLMetadataConfiguration(
- (array)$namespaces,
- $isDevMode
- );
-
- $cache = new ArrayCache();
-
- $config->setMetadataCacheImpl($cache);
- $config->setQueryCacheImpl($cache);
- $config->setMetadataDriverImpl($driver);
-
- // Table Prefix
- $evm = new EventManager();
- $tablePrefix = new TablePrefix('suite8_');
- $evm->addEventListener(Events::loadClassMetadata, $tablePrefix);
-
- try {
- $entityManager = EntityManager::create($connectionParams, $config, $evm);
- } catch (ORMException $e) {
- trigger_error('Failed to get create entity manager instance: ' . $e);
- }
-
- //-- This I had to add to support the Mysql enum type.
- try {
- $platform = $entityManager->getConnection()->getDatabasePlatform();
- } catch (DBALException $e) {
- trigger_error('Failed to get DB platform: ' . $e);
- }
-
- try {
- $platform->registerDoctrineTypeMapping('enum', 'string');
- } catch (DBALException $e) {
- trigger_error('Failed to get register doctrine type mapping: ' . $e);
- }
-
- $this->em = $entityManager;
- }
- }
-
- /**
- * Get a storage class
- *
- * @param $namespace
- * @return object
- */
- public function getStorage($namespace)
- {
- [$module, $entityName] = explode('.', $namespace);
-
- return $this->em->getRepository(
- 'SuiteCRM\Core\Modules\\' . ucfirst($module) . '\Entity\\' . ucfirst($entityName)
- );
- }
-
- /**
- * Get a service class
- *
- * @param $serviceName
- * @return object
- * @throws Exception
- */
- public function getService($serviceName)
- {
- if (!$this->services->has($serviceName)) {
- throw new \RuntimeException('No Service Found: ' . $serviceName);
- }
-
- return $this->services->get($serviceName);
- }
-
- /**
- * Quick function to allow for $this->render
- *
- * @param $view
- * @param array $params
- * @param string $template
- * @return string
- */
- public function render($view, $params = [], $template = 'default.html.php'): string
- {
- return $this->view->render($view, $params, $template);
- }
-
- /**
- * Redirect to URL
- *
- * @param mixed $url Array or string
- * @param mixed $params Params too be sent
- * @param int $statusCode
- * @todo Get Base URL, Concat the Base URL with Route (Controller, Action), Test Array and String
- *
- */
- public function redirect($url, $params = [], $statusCode = 303): void
- {
- $this->session->set('redirectPost', $params);
-
- if (is_array($url)) {
- $url = implode('/', $url);
- }
-
- $urlHelper = new Url();
-
- header('Location: ' . $urlHelper->baseUrl() . $url, true, $statusCode);
- die();
- }
-
- /**
- * Redirect to URL
- *
- * @param mixed $url URL to redirect to
- * @param int $statusCode Forces the HTTP response code to the specified value. Note that this parameter only has an effect if the header is not empty.
- */
- public function redirectToUrl($url, $statusCode = 303): void
- {
- header('Location: ' . $url, true, $statusCode);
- die();
- }
-
- /**
- * Create a flash message.
- *
- * @param string $message Flash Message
- * @param string $type Type of Message
- * @return void
- * @todo create one time session var for flash_msg,
- *
- */
- public function flashMsg($message, $type = 'default'): void
- {
- $this->session->set('flashMsg', ['message' => $message, 'type' => $type], 1);
- }
-
- /**
- * @param $template
- * @param $params
- */
- public function renderTemplate($template, $params): void
- {
- $response = [
- 'template' => '
-
-
-
- ',
- 'scripts' => [
- 'https://code.jquery.com/jquery-3.4.1.min.js'
- ]
- ];
-
- header('Content-Type: application/json');
-
- echo json_encode($response);
- }
-}
diff --git a/core/base/Module/Manager.php b/core/base/Module/Manager.php
deleted file mode 100644
index 2ab36b565..000000000
--- a/core/base/Module/Manager.php
+++ /dev/null
@@ -1,134 +0,0 @@
-config = $config;
- $this->fileHelper = $file_helper;
- }
-
- /**
- * Get Module Paths
- *
- * @return array
- */
- public function getModulePaths(): array
- {
- // Get config module paths if set
-
- if (!$this->config->isEmpty('modules.paths')) {
- $modulePaths = [];
- $configModulePaths = $this->config->get('modules.paths');
-
- foreach ($configModulePaths as $modulePath) {
- $modulePaths[] = realpath(__DIR__ . $modulePath);
- }
-
- return $modulePaths;
- }
-
- // Return default module paths
- return [
- realpath(BASE_PATH . '/core/modules')
- ];
- }
-
- /**
- * Get an array of all modules
- *
- * @return array
- */
- public function getAllModules(): array
- {
- $modulePaths = $this->getModulePaths();
-
- return (new ModuleMapper($modulePaths, $this->fileHelper, $this->config))->getAllModuleFolders();
- }
-
- /**
- * Get a list of the enabled modules
- *
- * @return array
- */
- public function listEnabled(): array
- {
- $modulePaths = $this->getModulePaths();
- $moduleMapper = new ModuleMapper($modulePaths, $this->fileHelper, $this->config);
- $modules = [];
-
- if ($this->config->has('modules.enabled')) {
- $foundModules = [];
-
- $enabledModules = $this->config->get('modules.enabled');
- $modules = $moduleMapper->checkModulesExist($enabledModules);
-
- return $moduleMapper->getModuleClassesFromFileName($modules);
- }
-
- $moduleNames = $this->getAllModules();
- $modules = $moduleMapper->checkModulesExist($moduleNames);
-
- return $moduleMapper->getModuleClassesFromFileName($modules);
- }
-
- /**
- * Get Module Services
- *
- * @return array
- */
- public function getModuleServices(): ?array
- {
- $modules = $this->getEnabled();
-
- $moduleServices = [];
-
- foreach ($modules as $module) {
- $moduleServices[] = $module->getServices;
- }
- }
-
- /**
- * Get Module Command
- *
- * @return array
- */
- public function getModuleCommands(): ?array
- {
- $modules = $this->getEnabled();
-
- $moduleCommands = [];
-
- foreach ($modules as $module) {
- //$moduleCommands
- }
- }
-}
diff --git a/core/base/Module/ModuleCollection.php b/core/base/Module/ModuleCollection.php
deleted file mode 100644
index efcd32c4c..000000000
--- a/core/base/Module/ModuleCollection.php
+++ /dev/null
@@ -1,22 +0,0 @@
-filePaths = $file_paths;
- $this->fileHelper = $file;
- $this->moduleConfigParameters = $module_config_params;
- $this->enabledModules = $this->moduleConfigParameters->get('modules.enabled');
- }
-
-
- /**
- * Get All Module Folders
- *
- * @return array
- */
- public function getAllModuleFolders(): array
- {
- return $this->fileHelper->findDirectories($this->filePaths);
- }
-
-
- /**
- * Check modules exist out of an array input modules
- *
- * @param array $modules array of module names to check
- * @return array List if found modules
- */
- public function checkModulesExist($modules): array
- {
- $foundModules = [];
-
- if (!empty($modules)) {
- foreach ($modules as $module) {
- foreach ($this->filePaths as $path) {
- if (file_exists($path . '/' . $module . '/' . $module . '.php')) {
- $foundModules[] = $path . '/' . $module . '/' . $module . '.php';
- }
- }
- }
- }
-
- return $foundModules;
- }
-
- /**
- * Get all module classes from file name
- *
- * @param $files
- * @return array|bool
- */
- public function getModuleClassesFromFileName($files)
- {
- if (empty($files)) {
- return false;
- }
-
- $moduleClasses = [];
-
- foreach ($files as $file) {
- $file = str_replace('suitecrm/', '', $file);
- $parts = explode('/', $file);
- $parts = array_splice($parts, 4, count($parts));
-
- $filename = end($parts);
- $classname = rtrim($filename, '.php');
-
- $keys = array_keys($parts);
- $key = end($keys);
-
- $parts[$key] = $classname;
-
- $parts = array_map('ucfirst', $parts);
-
- $commandClass = 'SuiteCRM\\' . implode('\\', $parts);
-
- $moduleClasses[] = new $commandClass();
- }
-
- return $moduleClasses;
- }
-
-}
diff --git a/core/base/Module/Service/Manager.php b/core/base/Module/Service/Manager.php
deleted file mode 100644
index 773a9f2f8..000000000
--- a/core/base/Module/Service/Manager.php
+++ /dev/null
@@ -1,34 +0,0 @@
-listEnabled() as $module) {
- $file = new FileLocator();
-
- $service = new $module();
- }
-
- return (new ServiceCollection())->load();
- }
-
-
-}
diff --git a/core/base/Module/Service/ServiceCollection.php b/core/base/Module/Service/ServiceCollection.php
deleted file mode 100644
index 43360832b..000000000
--- a/core/base/Module/Service/ServiceCollection.php
+++ /dev/null
@@ -1,22 +0,0 @@
-fileHelper = $file;
- $this->moduleManager = $moduleManager;
- $this->config = $config;
- }
-
- /**
- * Get all services enabled in the system
- *
- * @return ServiceCollection
- */
- public function getAllServices(): ServiceCollection
- {
- $serviceClasses = [];
-
- $filePaths = [];
-
- $enabledModules = $this->moduleManager->getAllModules();
-
- // Get Application Service
- if (!empty($enabledModules)) {
- foreach ($enabledModules as $module) {
- $path = APP_PATH . 'Modules/' . $module . '/Service';
- if (file_exists($path)) {
- $filePaths[] = $path;
- }
- }
- }
-
- $files = $this->fileHelper->findFiles($filePaths, '/Service.php$/');
-
- if (!empty($files)) {
- foreach ($files as $file) {
- $parts = explode('/', $file);
-
- $key = array_search('Modules', $parts, true);
-
- $parts = array_splice($parts, $key, count($parts));
-
- $filename = end($parts);
- $classname = rtrim($filename, '.php');
-
- $keys = array_keys($parts);
- $key = end($keys);
-
- $parts[$key] = $classname;
-
- $serviceClass = 'SuiteCRM\\App\\' . implode('\\', $parts);
-
- $service = new $serviceClass();
- $serviceName = $service->getName();
-
- $serviceClasses[$serviceName] = $service->createService();
- }
- }
-
- // Load in configuration services if they're available
- if ($this->config->has('services')) {
- foreach ($this->config->get('services') as $serviceName => $serviceFactory) {
- $serviceFactory = new $serviceFactory();
- $service = $serviceFactory->createService();
- $serviceClasses[$serviceName] = $service;
- }
- }
-
- return new ServiceCollection($serviceClasses);
- }
-}
diff --git a/core/base/Module/Storage/DataCollectionManager.php b/core/base/Module/Storage/DataCollectionManager.php
deleted file mode 100644
index eaea1c2d4..000000000
--- a/core/base/Module/Storage/DataCollectionManager.php
+++ /dev/null
@@ -1,58 +0,0 @@
-dataProviders = $dataProviders;
- }
-
- /**
- * Get the Collection Object
- *
- * @param string $resourceClass
- * @param string $operationName
- * @param array $context
- * @return array
- */
- public function getCollection(string $resourceClass, string $operationName = null, array $context = []): array
- {
- foreach ($this->dataProviders as $dataProvider) {
- try {
- if ($dataProvider instanceof RestrictedDataProviderInterface
- && !$dataProvider->supports($resourceClass, $operationName, $context)) {
- continue;
- }
-
- return $dataProvider->getCollection($resourceClass, $operationName, $context);
- } catch (ResourceClassNotSupportedException $e) {
- @trigger_error(
- sprintf(
- 'Throwing a "%s" in a data provider is deprecated in favor of implementing "%s"',
- ResourceClassNotSupportedException::class,
- RestrictedDataProviderInterface::class
- ),
- E_USER_DEPRECATED
- );
- }
- }
-
- return [];
- }
-}
diff --git a/core/base/Module/Storage/DoctrineCommands.php b/core/base/Module/Storage/DoctrineCommands.php
deleted file mode 100644
index 0041dd713..000000000
--- a/core/base/Module/Storage/DoctrineCommands.php
+++ /dev/null
@@ -1,37 +0,0 @@
-getApplication()->getKernel()->getContainer()->get('doctrine');
-
- $em = $doctrine->getEntityManager();
- $db = $em->getConnection();
-
- $helperSet = $this->getHelperSet();
- $helperSet->set(new ConnectionHelper($db), 'db');
- $helperSet->set(new EntityManagerHelper($em), 'em');
-
- parent::execute($input, $output);
- }
-
-}
diff --git a/core/base/Module/Storage/Manager.php b/core/base/Module/Storage/Manager.php
deleted file mode 100644
index 435e1d816..000000000
--- a/core/base/Module/Storage/Manager.php
+++ /dev/null
@@ -1,25 +0,0 @@
-addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $tablePrefix);
-
- $em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config, $evm);
-
- parent::__construct();
- }
-}
\ No newline at end of file
diff --git a/core/base/Module/Storage/TablePrefix.php b/core/base/Module/Storage/TablePrefix.php
deleted file mode 100644
index 864b5d2ff..000000000
--- a/core/base/Module/Storage/TablePrefix.php
+++ /dev/null
@@ -1,49 +0,0 @@
-prefix = (string)$prefix;
- }
-
- /**
- * @param LoadClassMetadataEventArgs $eventArgs
- */
- public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs): void
- {
- $classMetadata = $eventArgs->getClassMetadata();
-
- if (!$classMetadata->isInheritanceTypeSingleTable() || $classMetadata->getName(
- ) === $classMetadata->rootEntityName) {
- $classMetadata->setPrimaryTable(
- [
- 'name' => $this->prefix . $classMetadata->getTableName()
- ]
- );
- }
-
- foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
- if ($mapping['type'] === ClassMetadataInfo::MANY_TO_MANY && $mapping['isOwningSide']) {
- $mappedTableName = $mapping['joinTable']['name'];
- $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
- }
- }
- }
-
-}
diff --git a/core/base/Module/View/Handler.php b/core/base/Module/View/Handler.php
deleted file mode 100644
index 256cead8f..000000000
--- a/core/base/Module/View/Handler.php
+++ /dev/null
@@ -1,39 +0,0 @@
-requestObj = $request;
- $this->config = $config;
- }
-
- /**
- * @return object
- * @throws \Exception
- */
- public function load()
- {
- // Check the correct controller and action is going to load based on the URI
-
- $module = ($this->requestObj->query->has('module')) ? $this->requestObj->query->get('module') : '';
- $controller = ($this->requestObj->query->has('controller')) ? $this->requestObj->query->get('controller') : '';
- $action = ($this->requestObj->query->has('action')) ? $this->requestObj->query->get('action') : '';
-
- // Run Installer if database config hasn't been configured
-
- if (empty($module)) {
- // Check mandatory parameters are set
-
- if (!$this->config->has('app.default_route.module')) {
- throw new \RuntimeException('Default module has not been configured.');
- }
-
- $module = $this->config->get('app.default_route.module');
- }
-
- if (empty($controller)) {
- // Check mandatory parameters are set
- if (!$this->config->has('app.default_route.controller')) {
- throw new \RuntimeException('Default controller has not been configured.');
- }
-
- $controller = $this->config->get('app.default_route.controller');
- }
-
- if (empty($action)) {
- // Check mandatory parameters are set
- if (!$this->config->has('app.default_route.action')) {
- throw new \RuntimeException('Default action has not been configured.');
- }
-
- $action = $this->config->get('app.default_route.action');
- }
-
- $format = 'SuiteCRM\Core\Modules\%s\Controller\%s';
-
- $controller = sprintf($format, ucfirst($module), ucfirst($controller));
-
- // run the controller action
- return (object)[
- 'module' => $module,
- 'controller' => $controller,
- 'action' => 'action' . ucfirst($action)
- ];
- }
-}
diff --git a/core/base/Route/ModRewriteRouter.php b/core/base/Route/ModRewriteRouter.php
deleted file mode 100644
index 4f15d7cd4..000000000
--- a/core/base/Route/ModRewriteRouter.php
+++ /dev/null
@@ -1,99 +0,0 @@
-requestObj = $request;
- $this->config = $config;
- }
-
- /**
- * @return object
- * @throws \Exception
- */
- public function load()
- {
- // Check the correct controller and action is going to load based on the URI
- if ($this->requestObj->query->has('query_string')) {
- $uri = explode('/', $this->requestObj->query->get('query_string'));
-
- if (count($uri) === 1) {
- array_push($uri, '', '');
- } elseif (count($uri) === 2) {
- $uri[] = '';
- }
-
- [$module, $controller, $action] = $uri;
- }
-
- // Run Installer if database config hasn't been configured
-
- if (empty($module)) {
- // Check mandatory parameters are set
-
- if (!$this->config->has('app.default_route.module')) {
- throw new \RuntimeException('Default module has not been configured.');
- }
-
- $module = $this->config->get('app.default_route.module');
- }
-
- if (empty($controller)) {
- // Check mandatory parameters are set
- if (!$this->config->has('app.default_route.controller')) {
- throw new \RuntimeException('Default controller has not been configured.');
- }
-
- $controller = $this->config->get('app.default_route.controller');
- }
-
- if (empty($action)) {
- // Check mandatory parameters are set
- if (!$this->config->has('app.default_route.action')) {
- throw new \RuntimeException('Default action has not been configured.');
- }
-
- $action = $this->config->get('app.default_route.action');
- }
-
- $format = 'SuiteCRM\Core\Modules\%s\Controller\%s';
-
- $controller = sprintf($format, ucfirst($module), ucfirst($controller));
-
- // run the controller action
- return (object)[
- 'module' => $module,
- 'controller' => $controller,
- 'action' => 'action' . ucfirst($action)
- ];
- }
-}
diff --git a/core/base/Route/RouterInterface.php b/core/base/Route/RouterInterface.php
deleted file mode 100644
index 97a1998ae..000000000
--- a/core/base/Route/RouterInterface.php
+++ /dev/null
@@ -1,15 +0,0 @@
-config = $config;
@@ -33,18 +33,18 @@ class Authentication extends LegacyHandler
* @param $grant_type
*
* @return boolean
- * @throws \Exception
+ * @throws Exception
*/
public function login($username, $password, $grant_type = 'password'): bool
{
if ($this->runLegacyEntryPoint()) {
- $authController = new \AuthenticationController();
+ $authController = new AuthenticationController();
$PARAMS = [];
return $authController->login($username, $password, $PARAMS);
}
- throw new \RuntimeException('Running legacy entry point failed');
+ throw new RuntimeException('Running legacy entry point failed');
}
}
diff --git a/core/legacy/AuthenticationService.php b/core/legacy/AuthenticationService.php
index 51ed794eb..4808d0c55 100644
--- a/core/legacy/AuthenticationService.php
+++ b/core/legacy/AuthenticationService.php
@@ -2,15 +2,13 @@
namespace SuiteCRM\Core\Legacy;
-use SuiteCRM\Core\Base\Module\Service\ServiceFactoryInterface;
-
use SuiteCRM\Core\Legacy\Authentication;
/**
* Class AuthenticationService
* @package SuiteCRM\Core\Legacy
*/
-class AuthenticationService implements ServiceFactoryInterface
+class AuthenticationService
{
/**
* @return string
diff --git a/core/legacy/Navbar.php b/core/legacy/Navbar.php
index 789222182..c234c224c 100644
--- a/core/legacy/Navbar.php
+++ b/core/legacy/Navbar.php
@@ -27,7 +27,9 @@ class Navbar extends LegacyHandler
throw new RuntimeException('Running legacy entry point failed');
}
-
+ /**
+ * @return array
+ */
public function getGroupedNavTabs(): array
{
if ($this->runLegacyEntryPoint()) {
diff --git a/core/legacy/NavbarService.php b/core/legacy/NavbarService.php
index fdf4b44cd..4820ea598 100644
--- a/core/legacy/NavbarService.php
+++ b/core/legacy/NavbarService.php
@@ -2,13 +2,11 @@
namespace SuiteCRM\Core\Legacy;
-use SuiteCRM\Core\Base\Module\Service\ServiceFactoryInterface;
-
/**
* Class NavbarService
* @package SuiteCRM\Core\Legacy
*/
-class NavbarService implements ServiceFactoryInterface
+class NavbarService
{
/**
* @return string
diff --git a/core/modules/Administration/Administration.php b/core/modules/Administration/Administration.php
deleted file mode 100644
index cf399c2bc..000000000
--- a/core/modules/Administration/Administration.php
+++ /dev/null
@@ -1,28 +0,0 @@
-config = $config;
- $this->file = new File();
- }
-
- protected function configure(): void
- {
- $this
- ->setName('composer:install')
- ->setDescription('Install core composer dependencies')
- ->setHelp('This command will install all required project dependencies')
- ->addOption(
- 'nodev',
- '',
- InputOption::VALUE_NONE,
- 'Install without dev packages'
- );
- }
-
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- * @return int|void|null
- */
- public function execute(InputInterface $input, OutputInterface $output)
- {
- $currentDir = __DIR__ . '/../../../../../';
-
- $optionValue = $input->getOption('nodev');
- $noDev = ($optionValue !== false);
-
- if ($noDev === true) {
- shell_exec('composer install --no-dev');
- chdir($currentDir . 'legacy');
-
- shell_exec('composer install --no-dev');
- chdir($currentDir);
- }
-
- shell_exec('composer install');
- chdir($currentDir . 'legacy');
-
- shell_exec('composer install');
- chdir($currentDir);
- }
-}
diff --git a/core/modules/Administration/Cli/Composer/ComposerUpdateCommand.php b/core/modules/Administration/Cli/Composer/ComposerUpdateCommand.php
deleted file mode 100644
index 3b808131e..000000000
--- a/core/modules/Administration/Cli/Composer/ComposerUpdateCommand.php
+++ /dev/null
@@ -1,53 +0,0 @@
-config = $config;
- $this->file = new File();
- }
-
- protected function configure(): void
- {
- $this
- ->setName('composer:update')
- ->setDescription('Update core composer dependencies')
- ->setHelp('This command will install all required project dependencies');
- }
-
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- * @return int|void|null
- */
- public function execute(InputInterface $input, OutputInterface $output)
- {
- $currentDir = __DIR__ . '/../../../../../';
-
- shell_exec('composer update');
- chdir($currentDir . 'legacy');
-
- shell_exec('composer update');
- chdir($currentDir);
- }
-}
diff --git a/core/modules/Administration/Cli/Modules/ListModulesCommand.php b/core/modules/Administration/Cli/Modules/ListModulesCommand.php
deleted file mode 100644
index f117996f6..000000000
--- a/core/modules/Administration/Cli/Modules/ListModulesCommand.php
+++ /dev/null
@@ -1,63 +0,0 @@
-setName('core:modules:list-all')
- ->setDescription('List Application Modules')
- ->setHelp('This command will list the possible Application Modules.');
- }
-
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- * @return int|void|null
- * @throws \Exception
- */
- public function execute(InputInterface $input, OutputInterface $output)
- {
- $io = new SymfonyStyle($input, $output);
-
- $io->success('List of all modules.');
-
- $parameterCollection = (new ConfigManager())->loadFiles(
- [
- BASE_PATH . '/core/base/Config/modules.config.yml'
- ]
- );
-
- $fileHelper = new File();
-
- $modules = (new ModuleManager($parameterCollection, $fileHelper))->listEnabled();
-
- $tableHeaders = [
- ['Module Name', 'Module Description']
- ];
-
- for ($i = 0, $iMax = count($modules); $i < $iMax; $i++) {
- $moduleData[$i] = [
- $modules[$i]->getName(),
- $modules[$i]->getDescription()
- ];
- }
-
- $io->table($tableHeaders, $moduleData);
- }
-}
diff --git a/core/modules/Administration/Cli/Repair/QuickRepairRebuildCommand.php b/core/modules/Administration/Cli/Repair/QuickRepairRebuildCommand.php
deleted file mode 100644
index 66332393d..000000000
--- a/core/modules/Administration/Cli/Repair/QuickRepairRebuildCommand.php
+++ /dev/null
@@ -1,33 +0,0 @@
-setName('admin:repair:quick-repair-rebuild')
- ->setDescription('Run Quick Repair and Rebuild')
- ->setHelp('This command allows you to run the repair and rebuild.');
- }
-
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- * @return int|void|null
- */
- public function execute(InputInterface $input, OutputInterface $output)
- {
- }
-}
diff --git a/core/modules/Administration/Cli/Users/AddNewUserCommand.php b/core/modules/Administration/Cli/Users/AddNewUserCommand.php
deleted file mode 100644
index 5bdc646b9..000000000
--- a/core/modules/Administration/Cli/Users/AddNewUserCommand.php
+++ /dev/null
@@ -1,36 +0,0 @@
-setName('admin:add-new-user')
- ->setDescription('Add new user to the system')
- ->setHelp('This command allows you to run the add new user to the system.');
- }
-
- /**
- * @param InputInterface $input
- * @param OutputInterface $output
- * @return int|void
- */
- public function execute(InputInterface $input, OutputInterface $output)
- {
- /**
- * @todo : Create input for user before creating
- */
- }
-}
diff --git a/core/modules/Users/Config/orm/OAuthAccessToken.orm.yml b/core/modules/Users/Config/orm/OAuthAccessToken.orm.yml
deleted file mode 100644
index e807c6d7d..000000000
--- a/core/modules/Users/Config/orm/OAuthAccessToken.orm.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthAccessToken:
- type: entity
- table: oauth_access_tokens
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthAccessTokenStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- token:
- type: string
- max_length: 40
- unique: true
- client_id:
- type: integer
- user_id:
- type: integer
- nullable: true
- expires:
- type: datetime
- #columnDefinition: TIMESTAMP
- scope:
- type: string
- max_length: 50
- nullable: true
- manyToOne:
- client:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- joinColumn:
- name: client_id
- referencedColumnName: id
- user:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- joinColumn:
- name: user_id
- referencedColumnName: id
diff --git a/core/modules/Users/Config/orm/OAuthAuthorizationCode.orm.yml b/core/modules/Users/Config/orm/OAuthAuthorizationCode.orm.yml
deleted file mode 100644
index 4794ab0f5..000000000
--- a/core/modules/Users/Config/orm/OAuthAuthorizationCode.orm.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthAuthorizationCode:
- type: entity
- table: oauth_authorisation_codes
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthAuthorizationCodeStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- code:
- type: string
- max_length: 40
- unique: true
- client_id:
- type: integer
- user_id:
- type: integer
- nullable: true
- expires:
- type: datetime
- redirect_uri:
- type: string
- max_length: 200
- scope:
- type: string
- max_length: 50
- nullable: true
- id_token:
- type: string
- length: 1000
- manyToOne:
- client:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- joinColumn:
- name: client_id
- referencedColumnName: id
- user:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- joinColumn:
- name: user_id
- referencedColumnName: id
diff --git a/core/modules/Users/Config/orm/OAuthClient.orm.yml b/core/modules/Users/Config/orm/OAuthClient.orm.yml
deleted file mode 100644
index acdae338b..000000000
--- a/core/modules/Users/Config/orm/OAuthClient.orm.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthClient:
- type: entity
- table: oauth_client
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthClientStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- client_identifier:
- type: string
- max_length: 50
- unique: true
- client_secret:
- type: string
- max_length: 20
- default: ""
- redirect_uri:
- type: string
- max_length: 255
- default: ""
\ No newline at end of file
diff --git a/core/modules/Users/Config/orm/OAuthPublicKey.orm.yml b/core/modules/Users/Config/orm/OAuthPublicKey.orm.yml
deleted file mode 100644
index 276a8125e..000000000
--- a/core/modules/Users/Config/orm/OAuthPublicKey.orm.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthPublicKey:
- type: entity
- table: oauth_public_key
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthPublicKeyStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- public_key:
- type: string
- length: 2000
- private_key:
- type: string
- length: 2000
- manyToOne:
- client:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- joinColumn:
- name: client_id
- referencedColumnName: id
diff --git a/core/modules/Users/Config/orm/OAuthRefreshToken.orm.yml b/core/modules/Users/Config/orm/OAuthRefreshToken.orm.yml
deleted file mode 100644
index db8331982..000000000
--- a/core/modules/Users/Config/orm/OAuthRefreshToken.orm.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthRefreshToken:
- type: entity
- table: oauth_refresh_tokens
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthRefreshTokenStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- refresh_token:
- refresh_token: string
- max_length: 40
- unique: true
- client_id:
- type: integer
- user_id:
- type: integer
- nullable: true
- expires:
- type: datetime
- column: expires
- scope:
- type: string
- max_length: 50
- nullable: true
- manyToOne:
- client:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- joinColumn:
- name: client_id
- referencedColumnName: id
- user:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- joinColumn:
- name: user_id
- referencedColumnName: id
diff --git a/core/modules/Users/Config/orm/OAuthUser.orm.yml b/core/modules/Users/Config/orm/OAuthUser.orm.yml
deleted file mode 100644
index fe53ea1a3..000000000
--- a/core/modules/Users/Config/orm/OAuthUser.orm.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthUser:
- type: entity
- table: oauth_users
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthUserStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- fields:
- username:
- unique: true
- type: string
- column: user_name
- password:
- type: string
- column: user_hash
- indexes:
- user_name_index:
- columns: [ user_name ]
diff --git a/core/modules/Users/Config/orm/OAuthUserClaims.orm.yml b/core/modules/Users/Config/orm/OAuthUserClaims.orm.yml
deleted file mode 100644
index 114270d2c..000000000
--- a/core/modules/Users/Config/orm/OAuthUserClaims.orm.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-SuiteCRM\Core\Modules\Users\Entity\OAuthUserClaims:
- type: entity
- table: oauth_user_claims
- repositoryClass: SuiteCRM\Core\Modules\Users\Storage\OAuthUserClaimsStorage
- id:
- id:
- type: integer
- generator:
- strategy: AUTO
- manyToOne:
- user:
- targetEntity: SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- joinColumn:
- name: user_id
- referencedColumnName: id
diff --git a/core/modules/Users/Controller/Oauth.php b/core/modules/Users/Controller/Oauth.php
deleted file mode 100644
index 1880f9b5a..000000000
--- a/core/modules/Users/Controller/Oauth.php
+++ /dev/null
@@ -1,213 +0,0 @@
-requestObj);
- $response = new OAuth2Response();
- // Load authentication service
- $authenticationService = $this->getService('users.authentication');
-
- // Load config parameters
- $authenticationService->setConfig($this->config);
-
- // Get params
- $username = $this->requestObj->request->get('username');
- $password = $this->requestObj->request->get('password');
-
- if ($authenticationService->login($username, $password)) {
- // Get storage classes
- $clientStorage = $this->getStorage('users.oAuthClient');
- $userStorage = $this->getStorage('users.oAuthUser');
- $accessTokenStorage = $this->getStorage('users.oAuthAccessToken');
- $authorizationCodeStorage = $this->getStorage('users.oAuthAuthorizationCode');
- $refreshTokenStorage = $this->getStorage('users.oAuthRefreshToken');
-
- $storage = [
- 'client_credentials' => $clientStorage,
- 'user_credentials' => $userStorage,
- 'access_token' => $accessTokenStorage,
- 'authorization_code' => $authorizationCodeStorage,
- 'refresh_token' => $refreshTokenStorage,
- ];
-
- $config = [];
-
- // Set up oauth2 server
- $server = new OAuth2Server(
- $storage,
- $config
- );
-
- // Grant token with client details are in system
- if (!$token = $server->grantAccessToken($request, $response)) {
- $response->send();
- die();
- }
-
- // Output token in json format
- $this->responseObj->headers->set('Content-Type', 'application/json');
-
- return $this->responseObj
- ->setContent(
- json_encode($token)
- )
- ->send();
- }
-
- // Response with unauthorised.
- $this->responseObj->headers->set('Content-Type', 'application/json');
-
- return $this->responseObj
- ->setContent(
- json_encode(
- [
- 'message' => 'Authentication: Unauthorised',
- 'code' => '401',
- ]
- )
- )
- ->setStatusCode(401)
- ->send();
- }
-
- public function actionLogout(): void
- {
- $request = \OAuth2\HttpFoundationBridge\Request::createFromRequest($this->requestObj);
-
- $clientStorage = $this->getStorage('users.oAuthClient');
- $userStorage = $this->getStorage('users.oAuthUser');
- $accessTokenStorage = $this->getStorage('users.oAuthAccessToken');
- $authorizationCodeStorage = $this->getStorage('users.oAuthAuthorizationCode');
- $refreshTokenStorage = $this->getStorage('users.oAuthRefreshToken');
-
- $storage = [
- 'client_credentials' => $clientStorage,
- 'user_credentials' => $userStorage,
- 'access_token' => $accessTokenStorage,
- 'authorization_code' => $authorizationCodeStorage,
- 'refresh_token' => $refreshTokenStorage,
- ];
-
- $config = [];
-
- $server = new OAuth2Server(
- $storage,
- $config
- );
-
- // Handle a request to a resource and authenticate the access token
- if (!$server->verifyResourceRequest($request)) {
- var_dump($server->getResponse());
- die();
- }
-
- $accessToken = $this->requestObj->request->get('access_token');
- $refreshAccessToken = $this->requestObj->request->get('refresh_token');
-
- $accessTokenStorage->expireToken($accessToken);
- $refreshTokenStorage->expireToken($refreshAccessToken);
-
- echo json_encode(['success' => true, 'message' => 'Logout Success']);
- }
-
- public function refreshToken(): void
- {
- }
-
- public function actionAccessToken(): void
- {
-// $config = array();
-//
-// $requestObj = \OAuth2\HttpFoundationBridge\Request::createFromRequest($this->requestObj);
-//
-// $clientStorage = $this->getStorage('users.oAuthClient');
-// $userStorage = $this->getStorage('users.oAuthUser');
-// $accessTokenStorage = $this->getStorage('users.oAuthAccessToken');
-// $authorizationCodeStorage = $this->getStorage('users.oAuthAuthorizationCode');
-// $refreshTokenStorage = $this->getStorage('users.oAuthRefreshToken');
-// $publicKeyStorage = $this->getStorage('users.oAuthPublicKey');
-//
-// $storage = array(
-// 'client_credentials' => $clientStorage,
-// 'user_credentials' => $userStorage,
-// 'access_token' => $accessTokenStorage,
-// 'authorization_code' => $authorizationCodeStorage,
-// 'refresh_token' => $refreshTokenStorage
-// );
-//
-// $grantType = $requestObj->request->get('grant_type');
-//
-// if ($grantType == 'refresh_token') {
-// // Set default refresh token parameters
-// $refreshTokenLifetime = 10;
-// $alwaysIssueNewRefreshToken = false;
-//
-// // Get config refresh token parameters if set
-// if ($this->config->has('app.refresh_token_lifetime')) {
-// $refreshAccessToken = (int) $this->config->get('app.refresh_token_lifetime');
-// }
-//
-// if ($this->config->has('app.always_issue_new_refresh_token')) {
-// $alwaysIssueNewRefreshToken = (boolean) $this->config->get('app.always_issue_new_refresh_token');
-// }
-//
-// $config = array(
-// 'always_issue_new_refresh_token' => $alwaysIssueNewRefreshToken,
-// 'refresh_token_lifetime' => $refreshTokenLifetime,
-// );
-// }
-//
-// $server = new OAuth2Server($storage, $config);
-//
-// if ($grantType == 'password') {
-//// $username = $params['user_name'];
-//// $password = $params['user_hash'];
-//
-// // Add the grant type to your OAuth server
-// $server->addGrantType(new OAuth2GrantTypeUserCredentials($userStorage));
-//
-// $config = array();
-// } elseif ($grantType == "refresh_token") {
-// // Add the grant type to your OAuth server
-//
-// $objectGrantType = new OAuth2GrantTypeRefreshToken($refreshTokenStorage);
-//
-// $server->addGrantType($objectGrantType);
-//
-// // The refresh token
-// $accessToken = new OAuth2ResponseTypeAccessToken($accessTokenStorage, $refreshTokenStorage, array(
-// 'refresh_token_lifetime' => $refreshTokenLifetime,
-// ));
-//
-// $server = new OAuth2Server($storage, $config, [$objectGrantType], array($accessToken));
-// } else {
-// throw new \Exception('Grant type - not supported.');
-// }
-//
-// $tokenResponse = $server->handleTokenRequest($requestObj);
-//
-// $statusCode = $tokenResponse->getStatusCode();
-// $parameters = $tokenResponse->getParameters();
-//
-// return $tokenResponse->send();
- }
-}
diff --git a/core/modules/Users/Entity/EncryptableField.php b/core/modules/Users/Entity/EncryptableField.php
deleted file mode 100644
index aa6403767..000000000
--- a/core/modules/Users/Entity/EncryptableField.php
+++ /dev/null
@@ -1,31 +0,0 @@
- 11];
-
- /**
- * @param $value
- * @return mixed
- */
- protected function encryptField($value)
- {
- return $value;
-
- // return password_hash(
- // $value, PASSWORD_BCRYPT, $this->hashOptions);
- }
-
- /**
- * @param $encryptedValue
- * @param $value
- * @return bool
- */
- protected function verifyEncryptedFieldValue($encryptedValue, $value): bool
- {
- return ($encryptedValue == $value);
- //return password_verify($value, $encryptedValue);
- }
-}
diff --git a/core/modules/Users/Entity/OAuthAccessToken.php b/core/modules/Users/Entity/OAuthAccessToken.php
deleted file mode 100644
index 083096e93..000000000
--- a/core/modules/Users/Entity/OAuthAccessToken.php
+++ /dev/null
@@ -1,248 +0,0 @@
-id;
- }
-
- /**
- * Set token
- *
- * @param string $token
- * @return OAuthAccessToken
- */
- public function setToken($token): OAuthAccessToken
- {
- $this->token = $token;
-
- return $this;
- }
-
- /**
- * Get token
- *
- * @return string
- */
- public function getToken(): string
- {
- return $this->token;
- }
-
- /**
- * Set client_id
- *
- * @param string $clientId
- * @return OAuthAccessToken
- */
- public function setClientId($clientId): OAuthAccessToken
- {
- $this->client_id = $clientId;
-
- return $this;
- }
-
- /**
- * Get client_id
- *
- * @return string
- */
- public function getClientId(): string
- {
- return $this->client_id;
- }
-
- /**
- * Set user_id
- *
- * @param $userId
- * @return OAuthAccessToken
- */
- public function setUserId($userId): OAuthAccessToken
- {
- $this->user_id = $userId;
-
- return $this;
- }
-
- /**
- * Get user_identifier
- *
- * @return string
- */
- public function getUserId(): string
- {
- return $this->user_id;
- }
-
- /**
- * Set expires
- *
- * @param \DateTime $expires
- * @return OAuthAccessToken
- */
- public function setExpires($expires): OAuthAccessToken
- {
- $this->expires = $expires;
-
- return $this;
- }
-
- /**
- * Get expires
- *
- * @return \DateTime
- */
- public function getExpires(): \DateTime
- {
- return $this->expires;
- }
-
- /**
- * Set scope
- *
- * @param string $scope
- * @return OAuthAccessToken
- */
- public function setScope($scope): OAuthAccessToken
- {
- $this->scope = $scope;
-
- return $this;
- }
-
- /**
- * Get scope
- *
- * @return string
- */
- public function getScope(): string
- {
- return $this->scope;
- }
-
- /**
- * Set client
- *
- * @param SuiteCRM\Core\Modules\Users\Entity\OAuthClient $client
- * @return OAuthAccessToken
- */
- public function setClient(SuiteCRM\Core\Modules\Users\Entity\OAuthClient $client = null): OAuthAccessToken
- {
- $this->client = $client;
-
- return $this;
- }
-
- /**
- * Get client
- *
- * @return SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- */
- public function getClient(): SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- {
- return $this->client;
- }
-
- /**
- * @param $params
- * @return OAuthAccessToken
- */
- public static function fromArray($params): OAuthAccessToken
- {
- $token = new self();
- foreach ($params as $property => $value) {
- $token->$property = $value;
- }
-
- return $token;
- }
-
- /**
- * Set user
- *
- * @param SuiteCRM\Core\Modules\Users\Entity\OAuthUser $user
- * @return OAuthRefreshToken
- */
- public function setUser(SuiteCRM\Core\Modules\Users\Entity\OAuthUser $user = null): OAuthRefreshToken
- {
- $this->user = $user;
-
- return $this;
- }
-
- /**
- * Get user
- *
- * @return SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- */
- public function getUser(): SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- {
- return $this->client;
- }
-
- /**
- * @return array
- */
- public function toArray(): array
- {
- return [
- 'token' => $this->token,
- 'client_id' => $this->client_id,
- 'user_id' => $this->user_id,
- 'expires' => $this->expires,
- 'scope' => $this->scope,
- ];
- }
-}
diff --git a/core/modules/Users/Entity/OAuthAuthorizationCode.php b/core/modules/Users/Entity/OAuthAuthorizationCode.php
deleted file mode 100644
index 4bd8b4e47..000000000
--- a/core/modules/Users/Entity/OAuthAuthorizationCode.php
+++ /dev/null
@@ -1,303 +0,0 @@
-id;
- }
-
- /**
- * Set code
- *
- * @param string $code
- * @return OAuthAuthorizationCode
- */
- public function setCode($code): OAuthAuthorizationCode
- {
- $this->code = $code;
-
- return $this;
- }
-
- /**
- * Get code
- *
- * @return string
- */
- public function getCode(): string
- {
- return $this->code;
- }
-
- /**
- * Set client_id
- *
- * @param string $clientId
- * @return OAuthAuthorizationCode
- */
- public function setClientId($clientId): OAuthAuthorizationCode
- {
- $this->client_id = $clientId;
-
- return $this;
- }
-
- /**
- * Get client_id
- *
- * @return string
- */
- public function getClientId(): string
- {
- return $this->client_id;
- }
-
- /**
- * Set user_id
- *
- * @param $userId
- * @return OAuthAuthorizationCode
- */
- public function setUserId($userId): OAuthAuthorizationCode
- {
- $this->user_id = $userId;
-
- return $this;
- }
-
- /**
- * Get user_identifier
- *
- * @return string
- */
- public function getUserId(): string
- {
- return $this->user_id;
- }
-
- /**
- * Set expires
- *
- * @param \DateTime $expires
- * @return OAuthAuthorizationCode
- */
- public function setExpires($expires): OAuthAuthorizationCode
- {
- $this->expires = $expires;
-
- return $this;
- }
-
- /**
- * Get expires
- *
- * @return \DateTime
- */
- public function getExpires(): \DateTime
- {
- return $this->expires;
- }
-
- /**
- * Set redirect_uri
- *
- * @param string $redirectUri
- * @return OAuthAuthorizationCode
- */
- public function setRedirectUri($redirectUri): OAuthAuthorizationCode
- {
- $this->redirect_uri = $redirectUri;
-
- return $this;
- }
-
- /**
- * Get redirect_uri
- *
- * @return string
- */
- public function getRedirectUri(): string
- {
- return $this->redirect_uri;
- }
-
- /**
- * Set scope
- *
- * @param string $scope
- * @return OAuthAuthorizationCode
- */
- public function setScope($scope): OAuthAuthorizationCode
- {
- $this->scope = $scope;
-
- return $this;
- }
-
- /**
- * Get scope
- *
- * @return string
- */
- public function getScope(): string
- {
- return $this->scope;
- }
-
- /**
- * Set client
- *
- * @param OAuthClient $client
- * @return OAuthAuthorizationCode
- */
- public function setClient(OAuthClient $client = null): OAuthAuthorizationCode
- {
- $this->client = $client;
-
- return $this;
- }
-
- /**
- * Get client
- *
- * @return OAuthClient
- */
- public function getClient(): OAuthClient
- {
- return $this->client;
- }
-
- /**
- * Set user
- *
- * @param OAuthUser $user
- * @return OAuthRefreshToken
- */
- public function setUser(OAuthUser $user = null): OAuthRefreshToken
- {
- $this->user = $user;
-
- return $this;
- }
-
- /**
- * Get user
- *
- * @return \YourNamespace\Entity\OAuthUser
- */
- public function getUser(): \YourNamespace\Entity\OAuthUser
- {
- return $this->client;
- }
-
- /**
- * @return array
- */
- public function toArray(): array
- {
- return [
- 'code' => $this->code,
- 'client_id' => $this->client_id,
- 'user_id' => $this->user_id,
- 'expires' => $this->expires,
- 'scope' => $this->scope,
- ];
- }
-
- /**
- * @param $params
- * @return OAuthAuthorizationCode
- */
- public static function fromArray($params): OAuthAuthorizationCode
- {
- $code = new self();
- foreach ($params as $property => $value) {
- $code->$property = $value;
- }
-
- return $code;
- }
-
- /**
- * Get the value of Id Token
- *
- * @return string
- */
- public function getIdToken(): string
- {
- return $this->id_token;
- }
-
- /**
- * Set the value of Id Token
- *
- * @param string id_token
- *
- * @return self
- */
- public function setIdToken($id_token): self
- {
- $this->id_token = $id_token;
-
- return $this;
- }
-
-}
diff --git a/core/modules/Users/Entity/OAuthClient.php b/core/modules/Users/Entity/OAuthClient.php
deleted file mode 100644
index 4a827d8b8..000000000
--- a/core/modules/Users/Entity/OAuthClient.php
+++ /dev/null
@@ -1,195 +0,0 @@
- $val) {
- if (property_exists($this, $key)) {
- $this->{$key} = $val;
- }
- }
-
- if ($this->id == 0) {
- $this->created_date = new \DateTime();
- }
-
- $this->modified_date = new \DateTime();
- }
-
- /**
- * Get id
- *
- * @return int
- */
- public function getId(): int
- {
- return $this->id;
- }
-
- /**
- * Set client_identifier
- *
- * @param string $clientIdentifier
- * @return OAuthClient
- */
- public function setClientIdentifier($clientIdentifier): OAuthClient
- {
- $this->client_identifier = $clientIdentifier;
-
- return $this;
- }
-
- /**
- * Get client_identifier
- *
- * @return string
- */
- public function getClientIdentifier(): string
- {
- return $this->client_identifier;
- }
-
- /**
- * Set client_secret
- *
- * @param string $clientSecret
- * @return OAuthClient
- */
- public function setClientSecret($clientSecret): OAuthClient
- {
- $this->client_secret = $this->encryptField($clientSecret);
-
- return $this;
- }
-
- /**
- * Get client_secret
- *
- * @return string
- */
- public function getClientSecret(): string
- {
- return $this->client_secret;
- }
-
- /**
- * Verify client's secret
- *
- * @param $clientSecret
- * @return Boolean
- */
- public function verifyClientSecret($clientSecret): bool
- {
- return $this->verifyEncryptedFieldValue($this->getClientSecret(), $clientSecret);
- }
-
- /**
- * Set redirect_uri
- *
- * @param string $redirectUri
- * @return OAuthClient
- */
- public function setRedirectUri($redirectUri): OAuthClient
- {
- $this->redirect_uri = $redirectUri;
-
- return $this;
- }
-
- /**
- * Get redirect_uri
- *
- * @return string
- */
- public function getRedirectUri(): string
- {
- return $this->redirect_uri;
- }
-
- /**
- * @return array
- */
- public function toArray(): array
- {
- return [
- 'client_id' => $this->client_identifier,
- 'client_secret' => $this->client_secret,
- 'redirect_uri' => $this->redirect_uri,
- ];
- }
-
- /**
- * Set the value of Id
- *
- * @param int id
- *
- * @return self
- */
- public function setId($id): self
- {
- $this->id = $id;
-
- return $this;
- }
-
- /**
- * Get the value of Status
- *
- * @return mixed
- */
- public function getStatus()
- {
- return $this->status;
- }
-
- /**
- * Set the value of Status
- *
- * @param mixed status
- *
- * @return self
- */
- public function setStatus($status): self
- {
- $this->status = $status;
-
- return $this;
- }
-
-}
diff --git a/core/modules/Users/Entity/OAuthPublicKey.php b/core/modules/Users/Entity/OAuthPublicKey.php
deleted file mode 100644
index dbb328f4e..000000000
--- a/core/modules/Users/Entity/OAuthPublicKey.php
+++ /dev/null
@@ -1,127 +0,0 @@
-id;
- }
-
- /**
- * Set the value of Id
- *
- * @param integar id
- *
- * @return self
- */
- public function setId(integar $id): self
- {
- $this->id = $id;
-
- return $this;
- }
-
- /**
- * Get the value of Public Key
- *
- * @return string
- */
- public function getPublicKey(): string
- {
- return $this->public_key;
- }
-
- /**
- * Set the value of Public Key
- *
- * @param string public_key
- *
- * @return self
- */
- public function setPublicKey($public_key): self
- {
- $this->public_key = $public_key;
-
- return $this;
- }
-
- /**
- * Get the value of Private Key
- *
- * @return string
- */
- public function getPrivateKey(): string
- {
- return $this->private_key;
- }
-
- /**
- * Set the value of Private Key
- *
- * @param string private_key
- *
- * @return self
- */
- public function setPrivateKey($private_key): self
- {
- $this->private_key = $private_key;
-
- return $this;
- }
-
- /**
- * Set client
- *
- * @param OAuthClient $client
- * @return OAuthAuthorizationCode
- */
- public function setClient(OAuthClient $client = null): OAuthAuthorizationCode
- {
- $this->client = $client;
-
- return $this;
- }
-
- /**
- * Get client
- *
- * @return \YourNamespace\Entity\OAuthClient
- */
- public function getClient(): \YourNamespace\Entity\OAuthClient
- {
- return $this->client;
- }
-
-}
diff --git a/core/modules/Users/Entity/OAuthRefreshToken.php b/core/modules/Users/Entity/OAuthRefreshToken.php
deleted file mode 100644
index 43f99ee06..000000000
--- a/core/modules/Users/Entity/OAuthRefreshToken.php
+++ /dev/null
@@ -1,245 +0,0 @@
-id;
- }
-
- /**
- * Set refresh_token
- *
- * @param string $refresh_token
- * @return OAuthRefreshToken
- */
- public function setRefreshToken($refresh_token): OAuthRefreshToken
- {
- $this->refresh_token = $refresh_token;
-
- return $this;
- }
-
- /**
- * Get refresh_token
- *
- * @return string
- */
- public function getRefreshToken(): string
- {
- return $this->refresh_token;
- }
-
- /**
- * Set client_id
- *
- * @param string $clientId
- * @return OAuthRefreshToken
- */
- public function setClientId($clientId): OAuthRefreshToken
- {
- $this->client_id = $clientId;
-
- return $this;
- }
-
- /**
- * Get client_id
- *
- * @return string
- */
- public function getClientId(): string
- {
- return $this->client_id;
- }
-
- /**
- * Set user_id
- *
- * @param $userId
- * @return OAuthRefreshToken
- */
- public function setUserId($userId): OAuthRefreshToken
- {
- $this->user_id = $userId;
-
- return $this;
- }
-
- /**
- * Get user_identifier
- *
- * @return string
- */
- public function getUserId(): string
- {
- return $this->user_id;
- }
-
- /**
- * Set expires
- *
- * @param \DateTime $expires
- * @return OAuthRefreshToken
- */
- public function setExpires($expires): OAuthRefreshToken
- {
- $this->expires = $expires;
-
- return $this;
- }
-
- /**
- * Get expires
- *
- * @return \DateTime
- */
- public function getExpires(): \DateTime
- {
- return $this->expires;
- }
-
- /**
- * Set scope
- *
- * @param string $scope
- * @return OAuthRefreshToken
- */
- public function setScope($scope): OAuthRefreshToken
- {
- $this->scope = $scope;
-
- return $this;
- }
-
- /**
- * Get scope
- *
- * @return string
- */
- public function getScope(): string
- {
- return $this->scope;
- }
-
- /**
- * Set client
- *
- * @param SuiteCRM\Core\Modules\Users\Entity\OAuthClient $client
- * @return OAuthRefreshToken
- */
- public function setClient(SuiteCRM\Core\Modules\Users\Entity\OAuthClient $client = null): OAuthRefreshToken
- {
- $this->client = $client;
-
- return $this;
- }
-
- /**
- * Get client
- *
- * @return SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- */
- public function getClient(): SuiteCRM\Core\Modules\Users\Entity\OAuthClient
- {
- return $this->client;
- }
-
- /**
- * Set user
- *
- * @param SuiteCRM\Core\Modules\Users\Entity\OAuthUser $user
- * @return OAuthRefreshToken
- */
- public function setUser(SuiteCRM\Core\Modules\Users\Entity\OAuthUser $user = null): OAuthRefreshToken
- {
- $this->user = $user;
-
- return $this;
- }
-
- /**
- * Get user
- *
- * @return SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- */
- public function getUser(): SuiteCRM\Core\Modules\Users\Entity\OAuthUser
- {
- return $this->client;
- }
-
- /**
- * @return array
- */
- public function toArray(): array
- {
- return [
- 'refresh_token' => $this->refresh_token,
- 'client_id' => $this->client_id,
- 'user_id' => $this->user_id,
- 'expires' => $this->expires,
- 'scope' => $this->scope,
- ];
- }
-
- /**
- * @param $params
- * @return OAuthRefreshToken
- */
- public static function fromArray($params): OAuthRefreshToken
- {
- $token = new self();
- foreach ($params as $property => $value) {
- $token->$property = $value;
- }
-
- return $token;
- }
-}
diff --git a/core/modules/Users/Entity/OAuthUser.php b/core/modules/Users/Entity/OAuthUser.php
deleted file mode 100644
index b1774e936..000000000
--- a/core/modules/Users/Entity/OAuthUser.php
+++ /dev/null
@@ -1,108 +0,0 @@
-id;
- }
-
- /**
- * Set username
- *
- * @param $username
- * @return User
- */
- public function setUsername($username): User
- {
- $this->username = $username;
-
- return $this;
- }
-
- /**
- * Get username
- *
- * @return string
- */
- public function getUsername(): string
- {
- return $this->username;
- }
-
- /**
- * Set password
- *
- * @param string $password
- * @return User
- */
- public function setPassword($password): User
- {
- $this->password = $this->encryptField($password);
-
- return $this;
- }
-
- /**
- * Get password
- *
- * @return string
- */
- public function getPassword(): string
- {
- return $this->password;
- }
-
- /**
- * Verify user's password
- *
- * @param string $password
- * @return Boolean
- */
- public function verifyPassword($password): bool
- {
- return $this->verifyEncryptedFieldValue($this->getPassword(), $password);
- }
-
- /**
- * Get OAuthUser object in array format
- *
- * @return array
- */
- public function toArray(): array
- {
- return [
- 'user_id' => $this->id,
- 'scope' => null,
- ];
- }
-}
diff --git a/core/modules/Users/Entity/OAuthUserClaims.php b/core/modules/Users/Entity/OAuthUserClaims.php
deleted file mode 100644
index 22b6db699..000000000
--- a/core/modules/Users/Entity/OAuthUserClaims.php
+++ /dev/null
@@ -1,99 +0,0 @@
-id;
- }
-
- /**
- * Set the value of Id
- *
- * @param string id
- *
- * @return self
- */
- public function setId($id): self
- {
- $this->id = $id;
-
- return $this;
- }
-
- /**
- * Get the value of Id Token
- *
- * @return string
- */
- public function getIdToken(): string
- {
- return $this->id_token;
- }
-
- /**
- * Set the value of Id Token
- *
- * @param string id_token
- *
- * @return self
- */
- public function setIdToken($id_token): self
- {
- $this->id_token = $id_token;
-
- return $this;
- }
-
- /**
- * Get the value of User Id
- *
- * @return string
- */
- public function getUserId(): string
- {
- return $this->user_id;
- }
-
- /**
- * Set the value of User Id
- *
- * @param string user_id
- *
- * @return self
- */
- public function setUserId($user_id): self
- {
- $this->user_id = $user_id;
-
- return $this;
- }
-
-}
diff --git a/core/modules/Users/Entity/UserProfile.php b/core/modules/Users/Entity/UserProfile.php
deleted file mode 100644
index a441297f4..000000000
--- a/core/modules/Users/Entity/UserProfile.php
+++ /dev/null
@@ -1,13 +0,0 @@
-findOneBy(['token' => $oauthToken]);
-
- if ($token) {
- $token = $token->toArray();
- $token['expires'] = $token['expires']->getTimestamp();
- }
-
- return $token;
- }
-
- /**
- * @param string $oauthToken
- * @param mixed $clientIdentifier
- * @param mixed $user_id
- * @param int $expires
- * @param null $scope
- * @throws \Doctrine\ORM\ORMException
- * @throws \Doctrine\ORM\OptimisticLockException
- */
- public function setAccessToken($oauthToken, $clientIdentifier, $user_id, $expires, $scope = null)
- {
- $client = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthClient')
- ->findOneBy(['client_identifier' => $clientIdentifier]);
-
- $user = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthUser')
- ->findOneBy(['id' => $user_id]);
-
- $client_id = $client->getId();
-
- $token = OAuthAccessToken::fromArray(
- [
- 'token' => $oauthToken,
- 'client_id' => $client_id,
- 'user_id' => $user_id,
- 'expires' => (new \DateTime())->setTimestamp($expires),
- 'scope' => $scope,
- 'user' => $user,
- 'client' => $client,
- ]
- );
-
- $this->_em->persist($token);
- $this->_em->flush();
- }
-
- /**
- * Delete a row
- *
- * @param string $token
- * @return bool
- * @throws \Doctrine\ORM\ORMException
- * @throws \Doctrine\ORM\OptimisticLockException
- */
- public function expireToken($token): bool
- {
- $token = $this->findOneBy(['token' => $token]);
-
- if (!empty($token)) {
- $ts = time();
-
- $datetime = new \DateTime();
- $datetime->setTimestamp($ts);
-
- $token->setExpires($datetime);
-
- $this->_em->merge($token);
-
- return $this->_em->flush();
- }
-
- throw new \RuntimeException('No Token Found.');
- }
-
-}
diff --git a/core/modules/Users/Storage/OAuthAuthorizationCodeStorage.php b/core/modules/Users/Storage/OAuthAuthorizationCodeStorage.php
deleted file mode 100644
index d196d519c..000000000
--- a/core/modules/Users/Storage/OAuthAuthorizationCodeStorage.php
+++ /dev/null
@@ -1,82 +0,0 @@
-findOneBy(['code' => $code]);
-
- if ($authCode) {
- $authCode = $authCode->toArray();
- $authCode['expires'] = $authCode['expires']->getTimestamp();
- }
-
- return $authCode;
- }
-
- /**
- * @param string $code
- * @param mixed $client_id
- * @param mixed $user_id
- * @param string $redirect_uri
- * @param int $expires
- * @param null $scope
- * @param null $id_token
- * @throws \Doctrine\ORM\ORMException
- * @throws \Doctrine\ORM\OptimisticLockException
- */
- public function setAuthorizationCode(
- $code,
- $client_id,
- $user_id,
- $redirect_uri,
- $expires,
- $scope = null,
- $id_token = null
- ) {
- $client = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthClient')
- ->findOneBy(['client_identifier' => $client_id]);
-
- $user = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthUser')
- ->findOneBy(['user_name' => $user_id]);
-
- $authCode = OAuthAuthorizationCode::fromArray(
- [
- 'code' => $code,
- 'client' => $client,
- 'user' => $user,
- 'redirect_uri' => $redirect_uri,
- 'expires' => (new \DateTime())->setTimestamp($expires),
- 'scope' => $scope,
- 'id_token' => $id_token
- ]
- );
-
- $this->_em->persist($authCode);
- $this->_em->flush();
- }
-
- /**
- * @param $code
- * @throws \Doctrine\ORM\ORMException
- * @throws \Doctrine\ORM\OptimisticLockException
- */
- public function expireAuthorizationCode($code)
- {
- $authCode = $this->findOneBy(['code' => $code]);
- $this->_em->remove($authCode);
- $this->_em->flush();
- }
-}
diff --git a/core/modules/Users/Storage/OAuthClientStorage.php b/core/modules/Users/Storage/OAuthClientStorage.php
deleted file mode 100644
index bbfbc5538..000000000
--- a/core/modules/Users/Storage/OAuthClientStorage.php
+++ /dev/null
@@ -1,102 +0,0 @@
-getEntity($client);
-
- if (empty($clientEntity->getId())) {
- $this->_em->persist($clientEntity);
- } else {
- $this->_em->merge($clientEntity);
- }
-
- $this->_em->flush();
- }
-
- /**
- * @param $clientIdentifier
- * @return array|object|null
- */
- public function getClientDetails($clientIdentifier)
- {
- $client = $this->findOneBy(['client_identifier' => $clientIdentifier]);
- if ($client) {
- $client = $client->toArray();
- }
-
- return $client;
- }
-
- /**
- * @param $clientIdentifier
- * @param null $clientSecret
- * @return bool
- */
- public function checkClientCredentials($clientIdentifier, $clientSecret = null)
- {
- $client = $this->findOneBy(['client_identifier' => $clientIdentifier]);
- if ($client) {
- return $client->verifyClientSecret($clientSecret);
- }
-
- return false;
- }
-
- /**
- * @param $clientId
- * @param $grantType
- * @return bool
- */
- public function checkRestrictedGrantType($clientId, $grantType)
- {
- // we do not support different grant types per client in this example
- return true;
- }
-
- /**
- * @param $clientId
- * @return bool
- */
- public function isPublicClient($clientId)
- {
- return false;
- }
-
- /**
- * @param $clientId
- * @return null |null
- */
- public function getClientScope($clientId)
- {
- return null;
- }
-
- /**
- * Get Contact Entity
- *
- * @param array $entityData
- * @return \Mvc\Entity\Contact
- * @throws \Exception
- */
- public function getEntity($entityData = []): \Mvc\Entity\Contact
- {
- return new OAuthClient($entityData);
- }
-
-}
diff --git a/core/modules/Users/Storage/OAuthPublicKeyStorage.php b/core/modules/Users/Storage/OAuthPublicKeyStorage.php
deleted file mode 100644
index 32ccb898b..000000000
--- a/core/modules/Users/Storage/OAuthPublicKeyStorage.php
+++ /dev/null
@@ -1,33 +0,0 @@
-findOneBy(['refresh_token' => $refreshToken]);
-
- if ($refreshToken) {
- $refreshToken = $refreshToken->toArray();
- $refreshToken['expires'] = $refreshToken['expires']->getTimestamp();
- }
-
- return $refreshToken;
- }
-
- /**
- * @param $refreshToken
- * @param $clientIdentifier
- * @param $user_id
- * @param $expires
- * @param null $scope
- * @throws ORMException
- * @throws OptimisticLockException
- */
- public function setRefreshToken($refreshToken, $clientIdentifier, $user_id, $expires, $scope = null)
- {
- $client = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthClient')
- ->findOneBy(['client_identifier' => $clientIdentifier]);
-
- $client_id = $client->getId();
-
- $user = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\OAuthUser')
- ->findOneBy(['id' => $user_id]);
-
- $refreshToken = OAuthRefreshToken::fromArray(
- [
- 'refresh_token' => $refreshToken,
- 'client' => $client,
- 'user' => $user,
- 'expires' => (new \DateTime())->setTimestamp($expires),
- 'scope' => $scope,
- 'client_id' => $client_id,
- 'user_id' => $user_id,
- ]
- );
-
- $this->_em->persist($refreshToken);
- $this->_em->flush();
- }
-
- /**
- * @param $refreshToken
- * @throws ORMException
- * @throws OptimisticLockException
- */
- public function unsetRefreshToken($refreshToken)
- {
- $refreshToken = $this->findOneBy(['refresh_token' => $refreshToken]);
- $this->_em->remove($refreshToken);
- $this->_em->flush();
- }
-
- /**
- * Delete a row
- *
- * @param string $token
- * @return bool
- * @throws ORMException
- * @throws OptimisticLockException
- */
- public function expireToken($token): bool
- {
- $token = $this->findOneBy(['refresh_token' => $token]);
-
- if (!empty($token)) {
- $ts = time();
-
- $datetime = new \DateTime();
- $datetime->setTimestamp($ts);
-
- $token->setExpires($datetime);
-
- $this->_em->merge($token);
-
- return $this->_em->flush();
- }
-
- throw new \RuntimeException('No Token Found.');
- }
-}
diff --git a/core/modules/Users/Storage/OAuthUserClaimsStorage.php b/core/modules/Users/Storage/OAuthUserClaimsStorage.php
deleted file mode 100644
index 1edf1acdf..000000000
--- a/core/modules/Users/Storage/OAuthUserClaimsStorage.php
+++ /dev/null
@@ -1,80 +0,0 @@
-getUserDetails($user_id)) {
- return false;
- }
-
- $claims = explode(' ', trim($claims));
-
- $userClaims = [];
- // for each requested claim, if the user has the claim, set it in the response
- $validClaims = explode(' ', self::VALID_CLAIMS);
-
- foreach ($validClaims as $validClaim) {
- if (in_array($validClaim, $claims, true)) {
- if ($validClaim == 'address') {
- // address is an object with subfields
- $userClaims['address'] = $this->getUserClaim($validClaim, $userDetails['address'] ?: $userDetails);
- } else {
- $userClaims = array_merge($userClaims, $this->getUserClaim($validClaim, $userDetails));
- }
- }
- }
-
- return $userClaims;
- }
-
- /**
- * @param $claim
- * @param $userDetails
- * @return array
- */
- protected function getUserClaim($claim, $userDetails)
- {
- $userClaims = [];
- $claimValuesString = constant(sprintf('self::%s_CLAIM_VALUES', strtoupper($claim)));
- $claimValues = explode(' ', $claimValuesString);
- foreach ($claimValues as $value) {
- $userClaims[$value] = isset($userDetails[$value]) ? $userDetails[$value] : null;
- }
-
- return $userClaims;
- }
-
- /**
- * @param $username
- * @return array|bool
- */
- public function getUserDetails($username)
- {
- if (!isset($this->userCredentials[$username])) {
- return false;
- }
-
- return array_merge(
- [
- 'user_id' => $username,
- 'password' => null,
- 'first_name' => null,
- 'last_name' => null,
- ],
- $this->userCredentials[$username]
- );
- }
-}
diff --git a/core/modules/Users/Storage/OAuthUserStorage.php b/core/modules/Users/Storage/OAuthUserStorage.php
deleted file mode 100644
index b72b31a6d..000000000
--- a/core/modules/Users/Storage/OAuthUserStorage.php
+++ /dev/null
@@ -1,68 +0,0 @@
-findOneBy(['user_name' => $username]);
-//
-// if ($user) {
-// return $user->verifyPassword($password);
-// }
-//
-// return false;
-
- return true;
- }
-
- /**
- * @param $username
- * @return object|null ARRAY the associated "user_id" and optional "scope" values
- * ARRAY the associated "user_id" and optional "scope" values
- * This function MUST return FALSE if the requested user does not exist or is
- * invalid. "scope" is a space-separated list of restricted scopes.
- * @code
- * return array(
- * "user_id" => USER_ID, // REQUIRED user_id to be stored with the authorization code or access token
- * "scope" => SCOPE // OPTIONAL space-separated list of restricted scopes
- * );
- * @endcode
- */
- public function getUserDetails($username)
- {
- $user = $this->findOneBy(['username' => $username]);
-
- if ($user) {
- $user = $user->toArray();
- }
-
- return $user;
- }
-
-// public function setSessionId($accesstoken, $session_id)
-// {
-// $tokenEntity = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\oAuthAccessToken')
-// ->findOneBy(['token' => $accesstoken]);
-//
-// $userId = $tokenEntity->getUserId();
-//
-// $userEntity = $this->_em->getRepository('SuiteCRM\Core\Modules\Users\Entity\oAuthUser')
-// ->findOneBy(['id' => $userId]);
-//
-// $userEntity->setSessionId($session_id);
-//
-// $this->_em->merge($userEntity);
-//
-// $this->_em->flush();
-// }
-}
diff --git a/core/modules/Users/Users.php b/core/modules/Users/Users.php
deleted file mode 100644
index f5ec6590d..000000000
--- a/core/modules/Users/Users.php
+++ /dev/null
@@ -1,24 +0,0 @@
-template->get('template/default.json');
diff --git a/core/modules/Administration/Cli/App/AppRebuildCommand.php b/core/src/Command/AppRebuildCommand.php
similarity index 73%
rename from core/modules/Administration/Cli/App/AppRebuildCommand.php
rename to core/src/Command/AppRebuildCommand.php
index cd03da973..a319b2eb3 100644
--- a/core/modules/Administration/Cli/App/AppRebuildCommand.php
+++ b/core/src/Command/AppRebuildCommand.php
@@ -1,38 +1,70 @@
config = $config;
- $this->file = new File();
+ $this->file = new Filesystem();
+ $this->projectDir = $projectDir;
+ $this->logger = $logger;
}
protected function configure(): void
{
$this
- ->setName('app:rebuild')
->setDescription('Rebuild the application')
->setHelp('This command will rebuild the Application and Plugins')
->addOption(
@@ -51,35 +83,42 @@ class AppRebuildCommand extends SuiteCommand
*/
public function execute(InputInterface $input, OutputInterface $output)
{
-
$optionValue = $input->getOption('hard');
$hardRebuild = ($optionValue !== false);
$optionValue = $input->getOption('verbose');
$verboseOutput = ($optionValue !== false);
- $rebuildPath = BASE_PATH . 'cache/app';
+ $filesystem = new Filesystem();
- $this->file->makeDir($rebuildPath, 0755);
+ $rebuildPath = $this->projectDir . '/cache/app';
+
+ try {
+ $filesystem->mkdir($rebuildPath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while creating your directory at ' . $exception->getPath();
+ }
$rebuildEnginePath = $rebuildPath . '/engine';
- $this->file->makeDir($rebuildEnginePath, 0755);
+ try {
+ $filesystem->mkdir($rebuildEnginePath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while creating your directory at ' . $exception->getPath();
+ }
- $appPath = BASE_PATH . 'core/app/';
- $enginePath = $appPath . 'engine';
- $themesPath = BASE_PATH . 'core/app/themes';
+ $appPath = $this->projectDir . '/core/app/';
+ $enginePath = $appPath . '/engine';
+
+ $themesPath = $this->projectDir . '/core/app/themes';
$assetsPath = $rebuildPath . '/engine/src/assets/themes/';
$appFilesPath = [
- 'fields' => $appPath . 'fields',
- 'ui' => $appPath . 'ui',
- 'views' => $appPath . 'views'
+ 'fields' => $appPath . '/fields',
+ 'ui' => $appPath . '/ui',
+ 'views' => $appPath . '/views'
];
- // Get modules path
- $modulesPath = APP_PATH;
-
// Field components
$fields = [];
@@ -93,37 +132,57 @@ class AppRebuildCommand extends SuiteCommand
$uiFilesPath = $rebuildEnginePath . '/src/app/app-files';
// Delete ui stored files
- chmod($rebuildPath, 0755);
+ $filesystem->chmod($rebuildPath, 0775, 0000, true);
- if (!$this->file->deleteDirectory($rebuildEnginePath)) {
- throw new \RuntimeException('System can\'t delete cached application engine files');
+ try {
+ $filesystem->remove($rebuildEnginePath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while deleting directory at ' . $exception->getPath();
}
- if ($hardRebuild && !$this->file->deleteDirectory(BASE_PATH . '/node_modules')) {
- throw new \RuntimeException('System can\'t delete node_modules');
+ if ($hardRebuild) {
+ try {
+ $filesystem->remove($rebuildEnginePath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while deleting directory at ' . $exception->getPath();
+ }
}
- // Copy all engine files to rebuild path
- $this->file->recurseCopy($enginePath, $rebuildEnginePath);
+ try {
+ $filesystem->mirror($enginePath, $rebuildEnginePath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while copying directory at ' . $exception->getPath();
+ }
- // Copy all theme files to assets path
- $this->file->recurseCopy($themesPath, $assetsPath);
+ try {
+ $filesystem->mirror($themesPath, $assetsPath);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while copying directory at ' . $exception->getPath();
+ }
- // Copy all core app files to ui app-files
+ // mirror all core app files to ui app-files
foreach ($appFilesPath as $dir => $path) {
- if (!file_exists($uiFilesPath . '/' . $dir) && !mkdir(
- $concurrentDirectory = $uiFilesPath . '/' . $dir,
- 0755,
- true
- ) && !is_dir($concurrentDirectory)) {
- throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
+
+ if (!file_exists($uiFilesPath . '/' . $dir)) {
+ try {
+ $filesystem->mkdir($uiFilesPath . '/' . $dir, 0755);
+ } catch (IOExceptionInterface $exception) {
+ echo 'An error occurred while creating your directory at ' . $exception->getPath();
+ }
}
- $this->file->recurseCopy($path . '/', $uiFilesPath . '/' . $dir);
+ $filesystem->mirror($path . '/', $uiFilesPath . '/' . $dir);
}
// Find all Ng components
- $ngComponents = $this->file->findFiles($uiFilesPath . '/', '/(.*).component.ts/');
+ $finder = new Finder();
+ $finder->name('*.component.ts')->in($uiFilesPath . '/*');
+
+ $ngComponents = [];
+
+ foreach ($finder as $file) {
+ $ngComponents[] = $absoluteFilePath = $file->getRealPath();
+ }
$componentList = '';
$moduleList = '';
@@ -135,6 +194,7 @@ class AppRebuildCommand extends SuiteCommand
$fullComponentName = '';
$pos = strrpos($filepath, '/');
+
$pathLength = (strlen($filepath) - 1);
if ($pathLength > $pos) {
@@ -159,6 +219,7 @@ class AppRebuildCommand extends SuiteCommand
$ufComponentName = implode('', array_map('ucfirst', explode('-', $componentName)));
$fullComponentName = $ufComponentName . $ufViewName . $ufType . 'Component';
+
$fullModuleName = $ufComponentName . $ufViewName . $ufType . 'Module';
$appManagerPath = '../../../../../app-manager/app-manager.module';
@@ -181,7 +242,6 @@ class AppRebuildCommand extends SuiteCommand
$appManagerPath = '../../../../app-manager/app-manager.module';
$componentFileName = str_replace('.ts', '', $componentFileName);
- //$componentImportList .= "import { " . $fullComponentName . " } from '../app-files/ui/components/" . $componentName . "/" . $componentFileName . "'; \n";
$moduleImportList .= 'import { ' . $fullModuleName . " } from '../app-files/ui/components/" . $componentName . '/' . $componentName . ".module'; \n";
} elseif ($type === 'views') {
// Placeholder for view components
@@ -323,7 +383,7 @@ EOT;
$appDir = getcwd();
// If node_modules isn't present of --hard was option - run npm install
- if (!file_exists( BASE_PATH . '/node_modules')) {
+ if (!file_exists($this->projectDir . '/node_modules')) {
echo "Updating npm...\n\n";
$npmCmd = 'npm update';
shell_exec($npmCmd);
@@ -341,10 +401,10 @@ EOT;
shell_exec($npmCmd);
}
- $compileThemeCommand = $this->getApplication()->find('app:theme:rebuild');
+ $compileThemeCommand = $this->getApplication()->find('suitecrm:app:theme:rebuild');
$arguments = [
- 'command' => 'app:theme:rebuild'
+ 'command' => 'suitecrm:app:theme:rebuild'
];
$compileThemeInput = new ArrayInput($arguments);
@@ -353,12 +413,13 @@ EOT;
$cmd = 'ng build --deploy-url public/';
shell_exec($cmd);
+
chdir($appDir);
if (file_exists($rebuildEnginePath . '/dist/')) {
- $this->file->makeDir(BASE_PATH . 'public/', 0755);
- $this->file->deleteDirectory(BASE_PATH . 'public/');
- $this->file->recurseCopy($rebuildEnginePath . '/dist/', BASE_PATH . 'public/');
+ $filesystem->mkdir($this->projectDir . '/public/', 0755);
+ $filesystem->remove($this->projectDir . '/public/');
+ $filesystem->mirror($rebuildEnginePath . '/dist/', $this->projectDir . '/public/');
}
return true;
diff --git a/core/modules/Administration/Cli/App/AppThemeRebuildCommand.php b/core/src/Command/AppThemeRebuildCommand.php
similarity index 57%
rename from core/modules/Administration/Cli/App/AppThemeRebuildCommand.php
rename to core/src/Command/AppThemeRebuildCommand.php
index a9f2112c3..45de8ab6a 100644
--- a/core/modules/Administration/Cli/App/AppThemeRebuildCommand.php
+++ b/core/src/Command/AppThemeRebuildCommand.php
@@ -1,41 +1,59 @@
config = $config;
+ parent::__construct($name);
+ $this->projectDir = $projectDir;
+ $this->logger = $logger;
}
/**
* @param InputInterface $input
* @param OutputInterface $output
* @return void
- * @throws \Exception
+ * @throws Exception
*/
-
public function execute(InputInterface $input, OutputInterface $output)
{
- if (!file_exists(BASE_PATH . '/cache/app/engine/')) {
- throw new \RuntimeException(
+ if (!file_exists($this->projectDir . '/cache/app/engine/')) {
+ throw new RuntimeException(
"Can't find application engine folder, Please run bin/console app:rebuild"
);
}
@@ -48,10 +66,10 @@ class AppThemeRebuildCommand extends SuiteCommand
$watchCompiler = '--watch';
}
- chdir(BASE_PATH . '/cache/app/engine/');
+ chdir($this->projectDir . '/cache/app/engine/');
shell_exec(
- "../../../node_modules/.bin/node-sass $watchCompiler --output-style compressed src/assets/themes/suite8/css/style.scss > src/assets/themes/suite8/css/style.min.css"
+ $this->projectDir . "/node_modules/.bin/node-sass $watchCompiler --output-style compressed src/assets/themes/suite8/css/style.scss > src/assets/themes/suite8/css/style.min.css"
);
$compiledThemeDir = 'src/assets/themes/*/css/';
@@ -60,7 +78,7 @@ class AppThemeRebuildCommand extends SuiteCommand
$compiledFilesCheck = shell_exec("find $compiledThemeDir -name '$compiledThemeFile' -print");
if ($compiledFilesCheck === null) {
- throw new \RuntimeException(
+ throw new RuntimeException(
'Compiled theme files have failed to create. Check that the SuiteCRM 8 source theme files exist.'
);
}
@@ -69,7 +87,6 @@ class AppThemeRebuildCommand extends SuiteCommand
protected function configure(): void
{
$this
- ->setName('app:theme:rebuild')
->setDescription('Rebuild the theme')
->setHelp('This command will rebuild the theme')
->addOption(
diff --git a/config/.gitkeep b/core/src/Controller/.gitignore
similarity index 100%
rename from config/.gitkeep
rename to core/src/Controller/.gitignore
diff --git a/core/src/DataFixtures/AppFixtures.php b/core/src/DataFixtures/AppFixtures.php
new file mode 100644
index 000000000..fece4758e
--- /dev/null
+++ b/core/src/DataFixtures/AppFixtures.php
@@ -0,0 +1,17 @@
+persist($product);
+
+ $manager->flush();
+ }
+}
diff --git a/core/src/DataProvider/NavbarItemDataProvider.php b/core/src/DataProvider/NavbarItemDataProvider.php
new file mode 100644
index 000000000..175bf58a3
--- /dev/null
+++ b/core/src/DataProvider/NavbarItemDataProvider.php
@@ -0,0 +1,30 @@
+userID = 1;
+ $output->NonGroupedTabs = $navbarData->getNonGroupedNavTabs();
+ $output->groupedTabs = $navbarData->getGroupedNavTabs();
+ $output->userActionMenu = $navbarData->getUserActionMenu();
+ return $output;
+ }
+}
diff --git a/core/src/Entity/Navbar.php b/core/src/Entity/Navbar.php
new file mode 100644
index 000000000..8de0ee234
--- /dev/null
+++ b/core/src/Entity/Navbar.php
@@ -0,0 +1,39 @@
+environment;
+ }
+
+ /**
+ * @return string
+ */
+ public function getLogDir(): string
+ {
+ return dirname(__DIR__, 2) . '/logs/' . $this->environment;
+ }
+
+ /**
+ * @return iterable
+ */
+ public function registerBundles(): iterable
+ {
+ $contents = require dirname(__DIR__, 2) . '/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if ($envs[$this->environment] ?? $envs['all'] ?? false) {
+ yield new $class();
+ }
+ }
+ }
+
+ /**
+ * @param ContainerBuilder $container
+ * @param LoaderInterface $loader
+ * @throws Exception
+ */
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
+ {
+ $container->addResource(new FileResource(dirname(__DIR__, 2) . '/config/bundles.php'));
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = dirname(__DIR__, 2) . '/config';
+ $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');
+ }
+
+ /**
+ * @param RouteCollectionBuilder $routes
+ * @throws LoaderLoadException
+ */
+ protected function configureRoutes(RouteCollectionBuilder $routes): void
+ {
+ $confDir = dirname(__DIR__, 2) . '/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');
+ }
+}
diff --git a/core/src/Repository/.gitignore b/core/src/Repository/.gitignore
new file mode 100644
index 000000000..e69de29bb
diff --git a/index.php b/index.php
old mode 100755
new mode 100644
index 5ae6306c0..c3f465309
--- a/index.php
+++ b/index.php
@@ -1,6 +1,27 @@
loadFiles(
- [
- BASE_PATH . '/config/config.yml',
- BASE_PATH . '/core/base/Config/modules.config.yml',
- BASE_PATH . '/core/base/Config/services.config.yml',
- ]
- );
-} catch (Exception $e) {
- trigger_error('Config failed to load files: ' . $e);
-}
-
-$request = new SuiteCRM\Core\Base\Http\Request(
- $_GET,
- $_POST,
- [],
- $_COOKIE,
- $_FILES,
- $_SERVER
-);
-
-$response = new SuiteCRM\Core\Base\Http\Response();
-$fileHelper = new SuiteCRM\Core\Base\Helper\File\File();
-
-$moduleManager = new SuiteCRM\Core\Base\Module\Manager($configParameters, $fileHelper);
-$router = new SuiteCRM\Core\Base\Route\DefaultRouter($request, $configParameters);
-try {
- $route = $router->load();
-} catch (Exception $e) {
- trigger_error('Router failed to load: ' . $e);
-}
-
-// Create an Instance of SuiteCRM
-$instance = new SuiteCRM\Core\Base\Instance($configParameters, $route, $moduleManager);
-
-// Run the Application
-$route = $instance->run()->getRoute();
-
-$view = new SuiteCRM\Core\Base\Module\View\Handler();
-
-$serviceMapper = new SuiteCRM\Core\Base\Module\Service\ServiceMapper($fileHelper, $moduleManager, $configParameters);
-
-$services = $serviceMapper->getAllServices();
-
-$controller = new $route->controller($configParameters, $request, $response, $view, $services);
-
-$customController = 'Custom\\' . $route->controller;
-
-// Check the custom
-if (class_exists($customController)) {
- $controller = new $customController();
-}
-
-$params = [];
-
-call_user_func_array([$controller, $route->action], $params);
+$kernel = new Kernel($_SERVER['APP_ENV'], (bool)$_SERVER['APP_DEBUG']);
+$request = Request::createFromGlobals();
+$response = $kernel->handle($request);
+$response->send();
+$kernel->terminate($request, $response);
diff --git a/package-lock.json b/package-lock.json
index 992094a88..c04c32527 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1088,9 +1088,9 @@
}
},
"@types/chart.js": {
- "version": "2.9.7",
- "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.7.tgz",
- "integrity": "sha512-T+oRIWLPu6cXWYSTwihkeZLKk5V4U4O09Uqx4padQto1XVH7YafX4Z4YV1OIWnKbkqMn/4Cuj9ZwWcG6fnKK3A=="
+ "version": "2.9.8",
+ "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.8.tgz",
+ "integrity": "sha512-7mL20QxLkU3EjWw8IgjWW+guzMfegPKtde6OcyDmNpe9aWvj3lfFC3PKQPkhzhTdbsRAN1g1Guso1MW7x1d7ig=="
},
"@types/jasmine": {
"version": "3.5.0",
@@ -3045,9 +3045,9 @@
}
},
"core-js": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.0.tgz",
- "integrity": "sha512-AHPTNKzyB+YwgDWoSOCaid9PUSEF6781vsfiK8qUz62zRR448/XgK2NtCbpiUGizbep8Lrpt0Du19PpGGZvw3Q=="
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.2.tgz",
+ "integrity": "sha512-hIE5dXkRzRvnZ5vhkRfQxUvDxQZmD9oueA08jDYRBKJHx+VIl/Pne/e0A4x9LObEEthC/TqiZybUoNM4tRgnKg=="
},
"core-util-is": {
"version": "1.0.2",
@@ -9289,9 +9289,9 @@
}
},
"rxjs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
- "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
+ "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
"requires": {
"tslib": "^1.9.0"
}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 000000000..e4aab3c59
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ tests
+
+
+
+
+
+ src
+
+
+
diff --git a/symfony.lock b/symfony.lock
new file mode 100644
index 000000000..adb05f222
--- /dev/null
+++ b/symfony.lock
@@ -0,0 +1,554 @@
+{
+ "api-platform/api-pack": {
+ "version": "v1.2.1"
+ },
+ "api-platform/core": {
+ "version": "2.5",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "2.5",
+ "ref": "a93061567140e386f107be75340ac2aee3f86cbf"
+ },
+ "files": [
+ "config/packages/api_platform.yaml",
+ "config/routes/api_platform.yaml",
+ "src/Entity/.gitignore"
+ ]
+ },
+ "bshaffer/oauth2-server-httpfoundation-bridge": {
+ "version": "v1.4"
+ },
+ "bshaffer/oauth2-server-php": {
+ "version": "v1.11.1"
+ },
+ "dama/doctrine-test-bundle": {
+ "version": "4.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "master",
+ "version": "4.0",
+ "ref": "56eaa387b5e48ebcc7c95a893b47dfa1ad51449c"
+ },
+ "files": [
+ "config/packages/test/dama_doctrine_test_bundle.yaml"
+ ]
+ },
+ "doctrine/annotations": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672"
+ },
+ "files": [
+ "config/routes/annotations.yaml"
+ ]
+ },
+ "doctrine/cache": {
+ "version": "1.10.0"
+ },
+ "doctrine/collections": {
+ "version": "1.6.4"
+ },
+ "doctrine/common": {
+ "version": "v2.11.0"
+ },
+ "doctrine/data-fixtures": {
+ "version": "1.4.0"
+ },
+ "doctrine/dbal": {
+ "version": "v2.10.0"
+ },
+ "doctrine/doctrine-bundle": {
+ "version": "2.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "2.0",
+ "ref": "a9f2463b9f73efe74482f831f03a204a41328555"
+ },
+ "files": [
+ "config/packages/doctrine.yaml",
+ "config/packages/prod/doctrine.yaml",
+ "core/base/src/Entity/.gitignore",
+ "core/base/src/Repository/.gitignore"
+ ]
+ },
+ "doctrine/doctrine-fixtures-bundle": {
+ "version": "3.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.0",
+ "ref": "fc52d86631a6dfd9fdf3381d0b7e3df2069e51b3"
+ },
+ "files": [
+ "core/base/src/DataFixtures/AppFixtures.php"
+ ]
+ },
+ "doctrine/event-manager": {
+ "version": "1.1.0"
+ },
+ "doctrine/inflector": {
+ "version": "1.3.1"
+ },
+ "doctrine/instantiator": {
+ "version": "1.3.0"
+ },
+ "doctrine/lexer": {
+ "version": "1.2.0"
+ },
+ "doctrine/orm": {
+ "version": "v2.6.6"
+ },
+ "doctrine/persistence": {
+ "version": "1.3.3"
+ },
+ "doctrine/reflection": {
+ "version": "v1.0.0"
+ },
+ "ecodev/graphql-upload": {
+ "version": "4.0.0"
+ },
+ "fig/link-util": {
+ "version": "1.1.0"
+ },
+ "jdorn/sql-formatter": {
+ "version": "v1.2.17"
+ },
+ "lcobucci/jwt": {
+ "version": "3.3.1"
+ },
+ "lexik/jwt-authentication-bundle": {
+ "version": "2.5",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "2.5",
+ "ref": "5b2157bcd5778166a5696e42f552ad36529a07a6"
+ },
+ "files": [
+ "config/packages/lexik_jwt_authentication.yaml"
+ ]
+ },
+ "monolog/monolog": {
+ "version": "1.25.3"
+ },
+ "mouf/classname-mapper": {
+ "version": "v1.0.2"
+ },
+ "myclabs/deep-copy": {
+ "version": "1.9.4"
+ },
+ "namshi/jose": {
+ "version": "7.2.3"
+ },
+ "nelmio/cors-bundle": {
+ "version": "1.5",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.5",
+ "ref": "6388de23860284db9acce0a7a5d9d13153bcb571"
+ },
+ "files": [
+ "config/packages/nelmio_cors.yaml"
+ ]
+ },
+ "nikic/php-parser": {
+ "version": "v4.3.0"
+ },
+ "phar-io/manifest": {
+ "version": "1.0.3"
+ },
+ "phar-io/version": {
+ "version": "2.0.1"
+ },
+ "php": {
+ "version": "7.2.0"
+ },
+ "phpdocumentor/reflection-common": {
+ "version": "1.0.1"
+ },
+ "phpdocumentor/reflection-docblock": {
+ "version": "4.3.4"
+ },
+ "phpdocumentor/type-resolver": {
+ "version": "0.4.0"
+ },
+ "phploc/phploc": {
+ "version": "4.0.1"
+ },
+ "phpmetrics/phpmetrics": {
+ "version": "v2.5.0"
+ },
+ "phpspec/prophecy": {
+ "version": "1.10.1"
+ },
+ "phpunit/php-code-coverage": {
+ "version": "6.1.4"
+ },
+ "phpunit/php-file-iterator": {
+ "version": "2.0.2"
+ },
+ "phpunit/php-text-template": {
+ "version": "1.2.1"
+ },
+ "phpunit/php-timer": {
+ "version": "2.1.2"
+ },
+ "phpunit/php-token-stream": {
+ "version": "3.1.1"
+ },
+ "phpunit/phpunit": {
+ "version": "4.7",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.7",
+ "ref": "f1546d78502f904f37f7b47a42b1444cbf1d3423"
+ },
+ "files": [
+ ".env.test",
+ "phpunit.xml.dist",
+ "config/bootstrap.php",
+ "tests/.gitignore"
+ ]
+ },
+ "pimple/pimple": {
+ "version": "v3.2.3"
+ },
+ "psr/cache": {
+ "version": "1.0.1"
+ },
+ "psr/container": {
+ "version": "1.0.0"
+ },
+ "psr/http-message": {
+ "version": "1.0.1"
+ },
+ "psr/http-server-handler": {
+ "version": "1.0.1"
+ },
+ "psr/http-server-middleware": {
+ "version": "1.0.1"
+ },
+ "psr/link": {
+ "version": "1.0.0"
+ },
+ "psr/log": {
+ "version": "1.1.2"
+ },
+ "psr/simple-cache": {
+ "version": "1.0.1"
+ },
+ "roave/security-advisories": {
+ "version": "dev-master"
+ },
+ "sebastian/code-unit-reverse-lookup": {
+ "version": "1.0.1"
+ },
+ "sebastian/comparator": {
+ "version": "3.0.2"
+ },
+ "sebastian/diff": {
+ "version": "3.0.2"
+ },
+ "sebastian/environment": {
+ "version": "4.2.3"
+ },
+ "sebastian/exporter": {
+ "version": "3.1.2"
+ },
+ "sebastian/finder-facade": {
+ "version": "1.2.2"
+ },
+ "sebastian/global-state": {
+ "version": "2.0.0"
+ },
+ "sebastian/object-enumerator": {
+ "version": "3.0.3"
+ },
+ "sebastian/object-reflector": {
+ "version": "1.1.1"
+ },
+ "sebastian/recursion-context": {
+ "version": "3.0.0"
+ },
+ "sebastian/resource-operations": {
+ "version": "2.0.1"
+ },
+ "sebastian/version": {
+ "version": "2.0.1"
+ },
+ "symfony/asset": {
+ "version": "v4.4.2"
+ },
+ "symfony/cache": {
+ "version": "v4.4.2"
+ },
+ "symfony/cache-contracts": {
+ "version": "v1.1.7"
+ },
+ "symfony/config": {
+ "version": "v4.4.2"
+ },
+ "symfony/console": {
+ "version": "4.4",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.4",
+ "ref": "fead3ab2e80622c61d13dac0d21a3430a45efae8"
+ },
+ "files": [
+ "bin/console",
+ "config/bootstrap.php"
+ ]
+ },
+ "symfony/debug": {
+ "version": "v4.4.2"
+ },
+ "symfony/dependency-injection": {
+ "version": "v4.4.2"
+ },
+ "symfony/doctrine-bridge": {
+ "version": "v4.4.2"
+ },
+ "symfony/dotenv": {
+ "version": "v4.4.2"
+ },
+ "symfony/error-handler": {
+ "version": "v4.4.2"
+ },
+ "symfony/event-dispatcher": {
+ "version": "v4.4.2"
+ },
+ "symfony/event-dispatcher-contracts": {
+ "version": "v1.1.7"
+ },
+ "symfony/expression-language": {
+ "version": "v4.4.2"
+ },
+ "symfony/filesystem": {
+ "version": "v4.4.2"
+ },
+ "symfony/finder": {
+ "version": "v4.4.2"
+ },
+ "symfony/flex": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e"
+ },
+ "files": [
+ ".env"
+ ]
+ },
+ "symfony/framework-bundle": {
+ "version": "4.4",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.4",
+ "ref": "23ecaccc551fe2f74baf613811ae529eb07762fa"
+ },
+ "files": [
+ "config/bootstrap.php",
+ "config/packages/cache.yaml",
+ "config/packages/framework.yaml",
+ "config/packages/test/framework.yaml",
+ "config/routes/dev/framework.yaml",
+ "config/services.yaml",
+ "public/index.php",
+ "core/base/src/Controller/.gitignore",
+ "core/base/src/Kernel.php"
+ ]
+ },
+ "symfony/http-foundation": {
+ "version": "v4.4.2"
+ },
+ "symfony/http-kernel": {
+ "version": "v4.4.2"
+ },
+ "symfony/inflector": {
+ "version": "v4.4.2"
+ },
+ "symfony/lock": {
+ "version": "v4.4.2"
+ },
+ "symfony/maker-bundle": {
+ "version": "1.0",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "1.0",
+ "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
+ }
+ },
+ "symfony/mime": {
+ "version": "v4.4.2"
+ },
+ "symfony/monolog-bridge": {
+ "version": "v4.4.2"
+ },
+ "symfony/monolog-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "3.3",
+ "ref": "6240c6d43e8237a32452f057f81816820fd56ab6"
+ },
+ "files": [
+ "config/packages/dev/monolog.yaml",
+ "config/packages/prod/monolog.yaml",
+ "config/packages/test/monolog.yaml"
+ ]
+ },
+ "symfony/polyfill-ctype": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-intl-idn": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-mbstring": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-php56": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-php72": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-php73": {
+ "version": "v1.13.1"
+ },
+ "symfony/polyfill-util": {
+ "version": "v1.13.1"
+ },
+ "symfony/property-access": {
+ "version": "v4.4.2"
+ },
+ "symfony/property-info": {
+ "version": "v4.4.2"
+ },
+ "symfony/routing": {
+ "version": "4.2",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.2",
+ "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7"
+ },
+ "files": [
+ "config/packages/prod/routing.yaml",
+ "config/packages/routing.yaml",
+ "config/routes.yaml"
+ ]
+ },
+ "symfony/security-bundle": {
+ "version": "4.4",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.4",
+ "ref": "30efd98dd3b4ead6e9ad4713b1efc43bbe94bf77"
+ },
+ "files": [
+ "config/packages/security.yaml"
+ ]
+ },
+ "symfony/security-core": {
+ "version": "v4.4.2"
+ },
+ "symfony/security-csrf": {
+ "version": "v4.4.2"
+ },
+ "symfony/security-guard": {
+ "version": "v4.4.2"
+ },
+ "symfony/security-http": {
+ "version": "v4.4.2"
+ },
+ "symfony/serializer": {
+ "version": "v4.4.2"
+ },
+ "symfony/service-contracts": {
+ "version": "v1.1.8"
+ },
+ "symfony/translation-contracts": {
+ "version": "v1.1.7"
+ },
+ "symfony/twig-bridge": {
+ "version": "v4.4.2"
+ },
+ "symfony/twig-bundle": {
+ "version": "4.4",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.4",
+ "ref": "15a41bbd66a1323d09824a189b485c126bbefa51"
+ },
+ "files": [
+ "config/packages/test/twig.yaml",
+ "config/packages/twig.yaml",
+ "templates/base.html.twig"
+ ]
+ },
+ "symfony/validator": {
+ "version": "4.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "master",
+ "version": "4.3",
+ "ref": "d902da3e4952f18d3bf05aab29512eb61cabd869"
+ },
+ "files": [
+ "config/packages/test/validator.yaml",
+ "config/packages/validator.yaml"
+ ]
+ },
+ "symfony/var-dumper": {
+ "version": "v4.4.2"
+ },
+ "symfony/var-exporter": {
+ "version": "v4.4.2"
+ },
+ "symfony/web-link": {
+ "version": "v4.4.2"
+ },
+ "symfony/yaml": {
+ "version": "v4.4.2"
+ },
+ "thecodingmachine/class-explorer": {
+ "version": "v1.0.2"
+ },
+ "thecodingmachine/graphqlite": {
+ "version": "v3.1.1"
+ },
+ "theseer/fdomdocument": {
+ "version": "1.6.6"
+ },
+ "theseer/tokenizer": {
+ "version": "1.1.3"
+ },
+ "twig/twig": {
+ "version": "v2.12.3"
+ },
+ "webmozart/assert": {
+ "version": "1.6.0"
+ },
+ "webonyx/graphql-php": {
+ "version": "v0.13.8"
+ },
+ "willdurand/negotiation": {
+ "version": "v2.3.1"
+ }
+}
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 000000000..e69de29bb