diff --git a/.env.dist b/.env.dist new file mode 100644 index 00000000..0d7c35c0 --- /dev/null +++ b/.env.dist @@ -0,0 +1,29 @@ +# This file is a "template" of which env vars need to be defined for your application +# Copy this file to .env file for development, create environment variables when deploying to production +# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration + +# KIMAI DEFAULT ENV VARS +DATABASE_PREFIX=kimai2_ +DATABASE_ENGINE=sqlite +DATABASE_URL=sqlite:///%kernel.project_dir%/var/data/kimai.sqlite + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=c88c14fa70a424e7a12d459b9dd9df7f +#TRUSTED_PROXIES=127.0.0.1,127.0.0.2 +#TRUSTED_HOSTS=localhost,example.com +###< symfony/framework-bundle ### + +###> doctrine/doctrine-bundle ### +# Format described at http://docs.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/kimai.sqlite" +# Configure your db driver and server_version in config/packages/doctrine.yaml +#DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name +###< doctrine/doctrine-bundle ### + +###> symfony/swiftmailer-bundle ### +# For Gmail as a transport, use: "gmail://username:password@localhost" +# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode=" +# Delivery is disabled by default via "null://localhost" +MAILER_URL=null://localhost +###< symfony/swiftmailer-bundle ### diff --git a/.gitignore b/.gitignore index 2a34a56d..59e75e50 100644 --- a/.gitignore +++ b/.gitignore @@ -1,57 +1,39 @@ -# Cache and logs (Symfony2) -/app/cache/* -/app/logs/* -!app/cache/.gitkeep -!app/logs/.gitkeep +###> symfony/framework-bundle ### +.env +/public/bundles/ +/vendor/ +###< symfony/framework-bundle ### -# Email spool folder -/app/spool/* +###> symfony/web-server-bundle ### +.web-server-pid +###< symfony/web-server-bundle ### -# Cache, session files and logs (Symfony3) -/var/cache/* -/var/logs/* -/var/sessions/* -!var/cache/.gitkeep -!var/logs/.gitkeep -!var/sessions/.gitkeep - -# Parameters -/app/config/parameters.yml -/app/config/parameters.ini - -# Managed by Composer -/app/bootstrap.php.cache -/var/bootstrap.php.cache +# ========== KIMAI ========== /bin/* !bin/console -!bin/symfony_requirements -/vendor/ -# Assets and user uploads -/web/bundles/ -/web/uploads/ +/public/theme/ -# Assets managed by Bower -/web/assets/vendor/ +/var/data/*.sqlite -# PHPUnit -/app/phpunit.xml -/phpunit.xml +/var/cache/* +!var/cache/.gitkeep -# Build data -/build/ +/var/log/* +!var/log/.gitkeep -# Composer PHAR -/composer.phar - -# Backup entities generated with doctrine:generate:entities command -*/Entity/*~ +/var/sessions/* +!var/sessions/.gitkeep +# ========== KIMAI ========== # IDE .idea/ -# SQLite files -/app/data/timesheet.sqlite +###> phpunit/phpunit ### +/phpunit.xml +###< phpunit/phpunit ### -# generated install and setup files -/web/theme/ +###> friendsofphp/php-cs-fixer ### +.php_cs +.php_cs.cache +###< friendsofphp/php-cs-fixer ### diff --git a/.php_cs.dist b/.php_cs.dist new file mode 100644 index 00000000..d80e5d66 --- /dev/null +++ b/.php_cs.dist @@ -0,0 +1,8 @@ +setRules([ + '@Symfony' => true, + 'array_syntax' => ['syntax' => 'short'], + ]) +; diff --git a/README.md b/README.md index 5f40d648..2523171e 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,13 @@ Kimai v2 - the reloaded open source Time-Tracking application. This is (or will be in the future, currently a lot of features are still missing) the reloaded version of the open source time-tracking application [Kimai](http://www.kimai.org). It is based on the following PHP components: -- [Symfony Framework 3.4](https://github.com/symfony/symfony) +- [Symfony Framework 4](https://github.com/symfony/symfony) - [AdminThemeBundle](https://github.com/avanzu/AdminThemeBundle/) (based on [AdminLTE](https://github.com/almasaeed2010/AdminLTE/)) - [Doctrine](https://github.com/doctrine/) -- Bower ## Requirements -- PHP 7 or higher +- PHP 7.1 or higher - One PHP extension of PDO-SQLite and/or PDO-MySQL enabled - and the [usual Symfony application requirements](http://symfony.com/doc/current/reference/requirements.html) @@ -53,13 +52,13 @@ All thats left to do is to create your first user: $ bin/console kimai:create-user admin admin@example.com password en ROLE_SUPER_ADMIN ``` -For available roles, please refer to [the user documentation](app/Resources/docs/users.md). +For available roles, please refer to [the user documentation](var/docs/users.md). ### Installation (development / demo) Lets boostrap your environment by executing this commands (which is only available in dev environment): ```bash -$ bin/console kimai:dev:reset +$ bin/console kimai:reset-dev ``` You just imported demo data, to test the application in its full beauty and with several different user accounts and permission sets. @@ -83,7 +82,7 @@ $ bin/console doctrine:schema:drop --force $ bin/console doctrine:schema:create ``` -The `kimai:dev:reset` command can always be executed later on to reset your dev database and cache. I use it very frequently. +The `kimai:reset-dev` command can always be executed later on to reset your dev database and cache. I use it very frequently. ## Usage diff --git a/app.json b/app.json deleted file mode 100644 index 6660c3f3..00000000 --- a/app.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "Kimai v2", - "description": "The reloaded Kimai Time-tracking application", - "keywords": [ - "php", - "kimai" - ], - "website": "https://www.kimai.org.com/", - "repository": "https://github.com/kevinpapst/kimai2", - "logo": "", - "success_url": "/", - "scripts": { - "postdeploy": "php bin/console doctrine:schema:create && php bin/console doctrine:fixtures:load -n" - }, - "env": { - "SYMFONY_ENV": "prod", - "SYMFONY_SECRET": { - "description": "Extra entropy for %kernel.secret%; used for CSRF tokens, cookies and signed URLs.", - "generator": "secret" - } - }, - "addons": [ - "heroku-postgresql" - ], - "image": "heroku/php" -} diff --git a/app/.htaccess b/app/.htaccess deleted file mode 100644 index fb1de45b..00000000 --- a/app/.htaccess +++ /dev/null @@ -1,7 +0,0 @@ - - Require all denied - - - Order deny,allow - Deny from all - diff --git a/app/AppKernel.php b/app/AppKernel.php deleted file mode 100644 index 5f75165c..00000000 --- a/app/AppKernel.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\HttpKernel\Kernel; -use Symfony\Component\Config\Loader\LoaderInterface; - -/** - * Class AppKernel - * - * @author Kevin Papst - */ -class AppKernel extends Kernel -{ - public function registerBundles() - { - $bundles = [ - new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), - new Symfony\Bundle\SecurityBundle\SecurityBundle(), - new Symfony\Bundle\TwigBundle\TwigBundle(), - new Symfony\Bundle\MonologBundle\MonologBundle(), - new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), - new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), - new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(), - new Avanzu\AdminThemeBundle\AvanzuAdminThemeBundle(), - new AppBundle\AppBundle(), - new TimesheetBundle\TimesheetBundle(), - ]; - - // Bundles only used for development or unit and functional tests - if (in_array($this->getEnvironment(), ['dev', 'test'])) { - //$bundles[] = new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(); - $bundles[] = new Symfony\Bundle\AsseticBundle\AsseticBundle(); - $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(); - $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); - $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); - $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); - $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); - $bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle(); - } - - return $bundles; - } - - public function getRootDir() - { - return __DIR__; - } - - public function getCacheDir() - { - return dirname(__DIR__).'/var/cache/'.$this->getEnvironment(); - } - - public function getLogDir() - { - return dirname(__DIR__).'/var/logs'; - } - - public function registerContainerConfiguration(LoaderInterface $loader) - { - $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); - } -} diff --git a/app/autoload.php b/app/autoload.php deleted file mode 100644 index fa582ecd..00000000 --- a/app/autoload.php +++ /dev/null @@ -1,13 +0,0 @@ -getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev'); -$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(['--no-debug', '']) && $env !== 'prod'; - -if ($debug) { - Debug::enable(); +if (!class_exists(Application::class)) { + throw new \RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.'); } -$kernel = new AppKernel($env, $debug); +if (!isset($_SERVER['APP_ENV'])) { + if (!class_exists(Dotenv::class)) { + throw new \RuntimeException('APP_ENV environment variable is not defined. You need to define environment variables for configuration or add "symfony/dotenv" as a Composer dependency to load variables from a .env file.'); + } + (new Dotenv())->load(__DIR__.'/../.env'); +} + +$input = new ArgvInput(); +$env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev'); +$debug = ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption(['--no-debug', '']); + +if ($debug) { + umask(0000); + + if (class_exists(Debug::class)) { + Debug::enable(); + } +} + +$kernel = new Kernel($env, $debug); $application = new Application($kernel); $application->run($input); diff --git a/bin/symfony_requirements b/bin/symfony_requirements deleted file mode 100755 index a7bf65a1..00000000 --- a/bin/symfony_requirements +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env php -getPhpIniConfigPath(); - -echo_title('Symfony Requirements Checker'); - -echo '> PHP is using the following php.ini file:'.PHP_EOL; -if ($iniPath) { - echo_style('green', ' '.$iniPath); -} else { - echo_style('yellow', ' WARNING: No configuration file (php.ini) used by PHP!'); -} - -echo PHP_EOL.PHP_EOL; - -echo '> Checking Symfony requirements:'.PHP_EOL.' '; - -$messages = array(); -foreach ($symfonyRequirements->getRequirements() as $req) { - if ($helpText = get_error_message($req, $lineSize)) { - echo_style('red', 'E'); - $messages['error'][] = $helpText; - } else { - echo_style('green', '.'); - } -} - -$checkPassed = empty($messages['error']); - -foreach ($symfonyRequirements->getRecommendations() as $req) { - if ($helpText = get_error_message($req, $lineSize)) { - echo_style('yellow', 'W'); - $messages['warning'][] = $helpText; - } else { - echo_style('green', '.'); - } -} - -if ($checkPassed) { - echo_block('success', 'OK', 'Your system is ready to run Symfony projects'); -} else { - echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects'); - - echo_title('Fix the following mandatory requirements', 'red'); - - foreach ($messages['error'] as $helpText) { - echo ' * '.$helpText.PHP_EOL; - } -} - -if (!empty($messages['warning'])) { - echo_title('Optional recommendations to improve your setup', 'yellow'); - - foreach ($messages['warning'] as $helpText) { - echo ' * '.$helpText.PHP_EOL; - } -} - -echo PHP_EOL; -echo_style('title', 'Note'); -echo ' The command console could use a different php.ini file'.PHP_EOL; -echo_style('title', '~~~~'); -echo ' than the one used with your web server. To be on the'.PHP_EOL; -echo ' safe side, please check the requirements from your web'.PHP_EOL; -echo ' server using the '; -echo_style('yellow', 'web/config.php'); -echo ' script.'.PHP_EOL; -echo PHP_EOL; - -exit($checkPassed ? 0 : 1); - -function get_error_message(Requirement $requirement, $lineSize) -{ - if ($requirement->isFulfilled()) { - return; - } - - $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL; - $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL; - - return $errorMessage; -} - -function echo_title($title, $style = null) -{ - $style = $style ?: 'title'; - - echo PHP_EOL; - echo_style($style, $title.PHP_EOL); - echo_style($style, str_repeat('~', strlen($title)).PHP_EOL); - echo PHP_EOL; -} - -function echo_style($style, $message) -{ - // ANSI color codes - $styles = array( - 'reset' => "\033[0m", - 'red' => "\033[31m", - 'green' => "\033[32m", - 'yellow' => "\033[33m", - 'error' => "\033[37;41m", - 'success' => "\033[37;42m", - 'title' => "\033[34m", - ); - $supports = has_color_support(); - - echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : ''); -} - -function echo_block($style, $title, $message) -{ - $message = ' '.trim($message).' '; - $width = strlen($message); - - echo PHP_EOL.PHP_EOL; - - echo_style($style, str_repeat(' ', $width)); - echo PHP_EOL; - echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT)); - echo PHP_EOL; - echo_style($style, $message); - echo PHP_EOL; - echo_style($style, str_repeat(' ', $width)); - echo PHP_EOL; -} - -function has_color_support() -{ - static $support; - - if (null === $support) { - if (DIRECTORY_SEPARATOR == '\\') { - $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'); - } else { - $support = function_exists('posix_isatty') && @posix_isatty(STDOUT); - } - } - - return $support; -} diff --git a/composer.json b/composer.json index 1e59c40f..97090987 100644 --- a/composer.json +++ b/composer.json @@ -1,81 +1,87 @@ { - "name": "keleo/kimai", + "name": "kimai/kimai", "license": "MIT", "type": "project", "description": "Kimai Time Tracking reloaded", - "autoload": { - "psr-4": { - "": "src/", - "KimaiTest\\": "tests/" - }, - "classmap": [ - "app/AppKernel.php", - "app/AppCache.php" - ] - }, "require": { - "php": ">=7.0.8", + "php": "^7.1.3", "ext-pdo_sqlite": "*", - "doctrine/doctrine-bundle": "^1.6", - "doctrine/doctrine-fixtures-bundle": "^2.2", - "doctrine/orm": "^2.5", - "erusev/parsedown": "^1.5", - "ezyang/htmlpurifier": "^4.7", - "incenteev/composer-parameter-handler": "^2.0", - "leafo/scssphp": "^0.5", - "patchwork/jsqueeze": "^2.0", - "sensio/distribution-bundle": "^5.0", - "sensio/framework-extra-bundle": "^3.0", - "symfony/assetic-bundle": "^2.8", - "symfony/monolog-bundle": "^3.1", - "symfony/swiftmailer-bundle": "^2.3", - "symfony/symfony": "~3.4", - "twig/extensions": "^1.3", - "white-october/pagerfanta-bundle": "^1.0", + "avanzu/admin-theme-bundle": "dev-master", "beberlei/DoctrineExtensions": "^1.0", - "symfony/web-server-bundle": "3.4", - "avanzu/admin-theme-bundle": "dev-master" + "dama/doctrine-test-bundle": "^4.0", + "sensio/framework-extra-bundle": "^5.1", + "symfony/asset": "^4.0", + "symfony/console": "^4.0", + "symfony/expression-language": "^4.0", + "symfony/flex": "^1.0", + "symfony/form": "^4.0", + "symfony/framework-bundle": "^4.0", + "symfony/lts": "^4@dev", + "symfony/monolog-bundle": "^3.1", + "symfony/orm-pack": "^1.0", + "symfony/profiler-pack": "^1.0", + "symfony/security-bundle": "^4.0", + "symfony/security-csrf": "^4.0", + "symfony/swiftmailer-bundle": "^3.1", + "symfony/translation": "^4.0", + "symfony/twig-bundle": "^4.0", + "symfony/validator": "^4.0", + "symfony/yaml": "^4.0", + "twig/extensions": "^1.5", + "white-october/pagerfanta-bundle": "^1.1" }, "require-dev": { - "sensio/generator-bundle": "~3.0", - "symfony/phpunit-bridge": "^3.0", - "squizlabs/php_codesniffer": "3.*", - "phpunit/phpunit": "^6" - }, - "scripts": { - "post-install-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" - ], - "post-update-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" - ] + "doctrine/doctrine-fixtures-bundle": "^3.0", + "friendsofphp/php-cs-fixer": "^2.10", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/debug-pack": "^1.0", + "symfony/dotenv": "^4.0", + "symfony/maker-bundle": "^1.0", + "symfony/phpunit-bridge": "^4.0", + "symfony/web-server-bundle": "^4.0" }, "config": { - "bin-dir": "bin" + "preferred-install": { + "*": "dist" + }, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php71": "*", + "symfony/polyfill-php70": "*", + "symfony/polyfill-php56": "*" + }, + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" }, "extra": { - "symfony-app-dir": "app", - "symfony-bin-dir": "bin", - "symfony-var-dir": "var", - "symfony-web-dir": "web", - "symfony-tests-dir": "tests", - "symfony-assets-install": "relative", - "incenteev-parameters": { - "file": "app/config/parameters.yml", - "env-map": { - "database_url": "DATABASE_URL", - "secret": "SYMFONY_SECRET" - } + "symfony": { + "id": "01C3FWRDJJEX9K6Y3A4XDFXPBR", + "allow-contrib": false } } } diff --git a/composer.lock b/composer.lock index 02cab941..9ab231ab 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "1108364ff698c0ff8298c5c660985cb6", + "content-hash": "2399d7e65f36c5579d419f3b66f2d08a", "packages": [ { "name": "almasaeed2010/adminlte", @@ -166,38 +166,38 @@ "time": "2017-12-01T10:02:05+00:00" }, { - "name": "composer/ca-bundle", - "version": "1.1.0", + "name": "dama/doctrine-test-bundle", + "version": "v4.0.1", "source": { "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288" + "url": "https://github.com/dmaicher/doctrine-test-bundle.git", + "reference": "8567a6ebfc73822f1d105ce852edec1b06748d8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288", - "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288", + "url": "https://api.github.com/repos/dmaicher/doctrine-test-bundle/zipball/8567a6ebfc73822f1d105ce852edec1b06748d8f", + "reference": "8567a6ebfc73822f1d105ce852edec1b06748d8f", "shasum": "" }, "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "doctrine/dbal": "~2.5", + "doctrine/doctrine-bundle": "~1.4", + "php": ">=5.5.0", + "symfony/framework-bundle": "~2.7|~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" + "phpunit/phpunit": "^5.4.4|~6.0", + "symfony/yaml": "~2.7|~3.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "4.1.x-dev" } }, "autoload": { "psr-4": { - "Composer\\CaBundle\\": "src" + "DAMA\\DoctrineTestBundle\\": "src/DAMA/DoctrineTestBundle" } }, "notification-url": "https://packagist.org/downloads/", @@ -206,20 +206,21 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "David Maicher", + "email": "mail@dmaicher.de" } ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "description": "Symfony 2/3 bundle to isolate doctrine database tests and improve test performance", "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" + "Symfony 3", + "doctrine", + "isolation", + "performance", + "symfony", + "symfony 2", + "tests" ], - "time": "2017-11-29T09:37:33+00:00" + "time": "2017-10-19T11:52:38+00:00" }, { "name": "doctrine/annotations", @@ -503,63 +504,6 @@ ], "time": "2017-08-31T08:43:38+00:00" }, - { - "name": "doctrine/data-fixtures", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7b76ccc8e648c4502aad7f61347326c8a072bd3b", - "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b", - "shasum": "" - }, - "require": { - "doctrine/common": "~2.2", - "php": "^7.1" - }, - "require-dev": { - "doctrine/dbal": "^2.5.4", - "doctrine/orm": "^2.5.4", - "phpunit/phpunit": "^6.3" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", - "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", - "doctrine/orm": "For loading ORM fixtures", - "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Data Fixtures for all Doctrine Object Managers", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database" - ], - "time": "2017-11-27T18:48:06+00:00" - }, { "name": "doctrine/dbal", "version": "v2.6.3", @@ -807,34 +751,37 @@ "time": "2017-10-12T17:23:29+00:00" }, { - "name": "doctrine/doctrine-fixtures-bundle", - "version": "v2.4.1", + "name": "doctrine/doctrine-migrations-bundle", + "version": "v1.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273" + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273", - "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/a9e506369f931351a2a6dd2aef588a822802b1b7", + "reference": "a9e506369f931351a2a6dd2aef588a822802b1b7", "shasum": "" }, "require": { - "doctrine/data-fixtures": "~1.0", "doctrine/doctrine-bundle": "~1.0", - "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.7|~3.0|~4.0" + "doctrine/migrations": "^1.1", + "php": ">=5.4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.4.x-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Bundle\\FixturesBundle\\": "" + "Doctrine\\Bundle\\MigrationsBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -855,30 +802,31 @@ "email": "fabien@symfony.com" } ], - "description": "Symfony DoctrineFixturesBundle", + "description": "Symfony DoctrineMigrationsBundle", "homepage": "http://www.doctrine-project.org", "keywords": [ - "Fixture", - "persistence" + "dbal", + "migrations", + "schema" ], - "time": "2017-10-30T19:26:42+00:00" + "time": "2017-11-01T09:13:26+00:00" }, { "name": "doctrine/inflector", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", - "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { "phpunit/phpunit": "^6.2" @@ -886,7 +834,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -928,7 +876,7 @@ "singularize", "string" ], - "time": "2017-07-22T12:18:28+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { "name": "doctrine/instantiator", @@ -1038,6 +986,78 @@ ], "time": "2014-09-09T13:34:57+00:00" }, + { + "name": "doctrine/migrations", + "version": "v1.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "e3faf7c96b8a6084045dedcaf51f74c7834644d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/e3faf7c96b8a6084045dedcaf51f74c7834644d4", + "reference": "e3faf7c96b8a6084045dedcaf51f74c7834644d4", + "shasum": "" + }, + "require": { + "doctrine/dbal": "~2.6", + "ocramius/proxy-manager": "^1.0|^2.0", + "php": "^7.1", + "symfony/console": "~3.3|^4.0", + "symfony/yaml": "~3.3|^4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "doctrine/orm": "~2.5", + "jdorn/sql-formatter": "~1.1", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "~6.2", + "squizlabs/php_codesniffer": "^3.0" + }, + "suggest": { + "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "Database Schema migrations using Doctrine DBAL", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "migrations" + ], + "time": "2017-11-24T14:13:17+00:00" + }, { "name": "doctrine/orm", "version": "v2.6.0", @@ -1121,128 +1141,40 @@ "time": "2017-12-20T00:38:15+00:00" }, { - "name": "erusev/parsedown", - "version": "1.6.4", + "name": "egulias/email-validator", + "version": "2.1.3", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/fbe3fe878f4fe69048bb8a52783a09802004f548", - "reference": "fbe3fe878f4fe69048bb8a52783a09802004f548", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/1bec00a10039b823cc94eef4eddd47dcd3b2ca04", + "reference": "1bec00a10039b823cc94eef4eddd47dcd3b2ca04", "shasum": "" }, "require": { - "php": ">=5.3.0" + "doctrine/lexer": "^1.0.1", + "php": ">= 5.5" }, "require-dev": { - "phpunit/phpunit": "^4.8.35" + "dominicsayers/isemail": "dev-master", + "phpunit/phpunit": "^4.8.35", + "satooshi/php-coveralls": "^1.0.1" }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2017-11-14T20:44:03+00:00" - }, - { - "name": "ezyang/htmlpurifier", - "version": "v4.9.3", - "source": { - "type": "git", - "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "95e1bae3182efc0f3422896a3236e991049dac69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69", - "reference": "95e1bae3182efc0f3422896a3236e991049dac69", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "require-dev": { - "simpletest/simpletest": "^1.1" - }, - "type": "library", - "autoload": { - "psr-0": { - "HTMLPurifier": "library/" - }, - "files": [ - "library/HTMLPurifier.composer.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" - } - ], - "description": "Standards compliant HTML filter written in PHP", - "homepage": "http://htmlpurifier.org/", - "keywords": [ - "html" - ], - "time": "2017-06-03T02:28:16+00:00" - }, - { - "name": "fig/link-util", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/link-util.git", - "reference": "1a07821801a148be4add11ab0603e4af55a72fac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac", - "reference": "1a07821801a148be4add11ab0603e4af55a72fac", - "shasum": "" - }, - "require": { - "php": ">=5.5.0", - "psr/link": "~1.0@dev" - }, - "require-dev": { - "phpunit/phpunit": "^5.1", - "squizlabs/php_codesniffer": "^2.3.1" + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Fig\\Link\\": "src/" + "Egulias\\EmailValidator\\": "EmailValidator" } }, "notification-url": "https://packagist.org/downloads/", @@ -1251,71 +1183,19 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Eduardo Gulias Davis" } ], - "description": "Common utility implementations for HTTP links", + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" ], - "time": "2016-10-17T18:31:11+00:00" - }, - { - "name": "incenteev/composer-parameter-handler", - "version": "v2.1.2", - "source": { - "type": "git", - "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", - "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/yaml": "~2.3|~3.0" - }, - "require-dev": { - "composer/composer": "1.0.*@dev", - "phpspec/prophecy-phpunit": "~1.0", - "symfony/filesystem": "~2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Incenteev\\ParameterHandler\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Composer script handling your ignored parameter file", - "homepage": "https://github.com/Incenteev/ParameterHandler", - "keywords": [ - "parameters management" - ], - "time": "2015-11-10T17:04:01+00:00" + "time": "2017-11-15T23:40:40+00:00" }, { "name": "jdorn/sql-formatter", @@ -1367,136 +1247,6 @@ ], "time": "2014-01-12T16:20:24+00:00" }, - { - "name": "kriswallsmith/assetic", - "version": "v1.4.0", - "source": { - "type": "git", - "url": "https://github.com/kriswallsmith/assetic.git", - "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1", - "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/process": "~2.1|~3.0" - }, - "conflict": { - "twig/twig": "<1.27" - }, - "require-dev": { - "leafo/lessphp": "^0.3.7", - "leafo/scssphp": "~0.1", - "meenie/javascript-packer": "^1.1", - "mrclay/minify": "<2.3", - "natxet/cssmin": "3.0.4", - "patchwork/jsqueeze": "~1.0|~2.0", - "phpunit/phpunit": "~4.8 || ^5.6", - "psr/log": "~1.0", - "ptachoire/cssembed": "~1.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "twig/twig": "~1.23|~2.0", - "yfix/packager": "dev-master" - }, - "suggest": { - "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", - "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", - "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", - "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor", - "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", - "twig/twig": "Assetic provides the integration with the Twig templating engine" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-0": { - "Assetic": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kris Wallsmith", - "email": "kris.wallsmith@gmail.com", - "homepage": "http://kriswallsmith.net/" - } - ], - "description": "Asset Management for PHP", - "homepage": "https://github.com/kriswallsmith/assetic", - "keywords": [ - "assets", - "compression", - "minification" - ], - "time": "2016-11-11T18:43:20+00:00" - }, - { - "name": "leafo/scssphp", - "version": "v0.5.1", - "source": { - "type": "git", - "url": "https://github.com/leafo/scssphp.git", - "reference": "251cd10c1c86d9df20d54d3856ba30acdbdaab5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/leafo/scssphp/zipball/251cd10c1c86d9df20d54d3856ba30acdbdaab5b", - "reference": "251cd10c1c86d9df20d54d3856ba30acdbdaab5b", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "kherge/box": "~2.5", - "phpunit/phpunit": "~3.7", - "squizlabs/php_codesniffer": "~2.3" - }, - "bin": [ - "bin/pscss" - ], - "type": "library", - "autoload": { - "psr-4": { - "Leafo\\ScssPhp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Leaf Corcoran", - "email": "leafot@gmail.com", - "homepage": "http://leafo.net" - } - ], - "description": "scssphp is a compiler for SCSS written in PHP.", - "homepage": "http://leafo.github.io/scssphp/", - "keywords": [ - "css", - "less", - "sass", - "scss", - "stylesheet" - ], - "time": "2015-11-11T22:15:07+00:00" - }, { "name": "monolog/monolog", "version": "1.23.0", @@ -1575,6 +1325,124 @@ ], "time": "2017-06-19T01:22:40+00:00" }, + { + "name": "ocramius/package-versions", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "ad8a245decad4897cc6b432743913dad0d69753c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", + "reference": "ad8a245decad4897cc6b432743913dad0d69753c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": "~7.0" + }, + "require-dev": { + "composer/composer": "^1.3", + "ext-zip": "*", + "humbug/humbug": "dev-master", + "phpunit/phpunit": "^6.4" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2017-11-24T11:07:03+00:00" + }, + { + "name": "ocramius/proxy-manager", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/ProxyManager.git", + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.1.1", + "php": "^7.1.0", + "zendframework/zend-code": "^3.1.0" + }, + "require-dev": { + "couscous/couscous": "^1.5.2", + "ext-phar": "*", + "humbug/humbug": "dev-master@DEV", + "nikic/php-parser": "^3.0.4", + "phpbench/phpbench": "^0.12.2", + "phpstan/phpstan": "^0.6.4", + "phpunit/phpunit": "^5.6.4", + "phpunit/phpunit-mock-objects": "^3.4.1", + "squizlabs/php_codesniffer": "^2.7.0" + }, + "suggest": { + "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", + "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", + "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", + "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ProxyManager\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + } + ], + "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", + "homepage": "https://github.com/Ocramius/ProxyManager", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "time": "2017-05-04T11:12:50+00:00" + }, { "name": "pagerfanta/pagerfanta", "version": "v1.0.5", @@ -1644,101 +1512,6 @@ ], "time": "2017-03-20T13:46:15+00:00" }, - { - "name": "paragonie/random_compat", - "version": "v2.0.11", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/5da4d3c796c275c55f057af5a643ae297d96b4d8", - "reference": "5da4d3c796c275c55f057af5a643ae297d96b4d8", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2017-09-27T21:40:39+00:00" - }, - { - "name": "patchwork/jsqueeze", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/tchwork/jsqueeze.git", - "reference": "693d64850eab2ce6a7c8f7cf547e1ab46e69d542" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tchwork/jsqueeze/zipball/693d64850eab2ce6a7c8f7cf547e1ab46e69d542", - "reference": "693d64850eab2ce6a7c8f7cf547e1ab46e69d542", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Patchwork\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "(Apache-2.0 or GPL-2.0)" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Efficient JavaScript minification in PHP", - "homepage": "https://github.com/tchwork/jsqueeze", - "keywords": [ - "compression", - "javascript", - "minification" - ], - "time": "2016-04-19T09:28:22+00:00" - }, { "name": "psr/cache", "version": "1.0.1", @@ -1834,55 +1607,6 @@ ], "time": "2017-02-14T16:28:37+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.0.2", @@ -1978,92 +1702,39 @@ ], "time": "2017-01-02T13:31:39+00:00" }, - { - "name": "sensio/distribution-bundle", - "version": "v5.0.21", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "sensiolabs/security-checker": "~3.0|~4.0", - "symfony/class-loader": "~2.3|~3.0", - "symfony/config": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/filesystem": "~2.3|~3.0", - "symfony/http-kernel": "~2.3|~3.0", - "symfony/process": "~2.3|~3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\DistributionBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Base bundle for Symfony Distributions", - "keywords": [ - "configuration", - "distribution" - ], - "time": "2017-08-25T16:55:44+00:00" - }, { "name": "sensio/framework-extra-bundle", - "version": "v3.0.29", + "version": "v5.1.3", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "bb907234df776b68922eb4b25bfa061683597b6a" + "reference": "0696496cb3e2d23add645d424699e5c723238aad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a", - "reference": "bb907234df776b68922eb4b25bfa061683597b6a", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/0696496cb3e2d23add645d424699e5c723238aad", + "reference": "0696496cb3e2d23add645d424699e5c723238aad", "shasum": "" }, "require": { - "doctrine/common": "~2.2", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0|~4.0" + "doctrine/common": "^2.2", + "symfony/config": "^3.3|^4.0", + "symfony/dependency-injection": "^3.3|^4.0", + "symfony/framework-bundle": "^3.3|^4.0", + "symfony/http-kernel": "^3.3|^4.0" }, "require-dev": { - "doctrine/doctrine-bundle": "~1.5", - "doctrine/orm": "~2.4,>=2.4.5", - "symfony/asset": "~2.7|~3.0|~4.0", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0", - "symfony/expression-language": "~2.4|~3.0|~4.0", - "symfony/finder": "~2.3|~3.0|~4.0", - "symfony/phpunit-bridge": "~3.2|~4.0", - "symfony/psr-http-message-bridge": "^0.3|^1.0", - "symfony/security-bundle": "~2.4|~3.0|~4.0", - "symfony/templating": "~2.3|~3.0|~4.0", - "symfony/translation": "~2.3|~3.0|~4.0", - "symfony/twig-bundle": "~2.3|~3.0|~4.0", - "symfony/yaml": "~2.3|~3.0|~4.0", + "doctrine/doctrine-bundle": "^1.6", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^3.3|^4.0", + "symfony/dom-crawler": "^3.3|^4.0", + "symfony/expression-language": "^3.3|^4.0", + "symfony/finder": "^3.3|^4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/psr-http-message-bridge": "^0.3", + "symfony/security-bundle": "^3.3|^4.0", + "symfony/twig-bundle": "^3.3|^4.0", + "symfony/yaml": "^3.3|^4.0", "twig/twig": "~1.12|~2.0", "zendframework/zend-diactoros": "^1.3" }, @@ -2075,7 +1746,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "5.1.x-dev" } }, "autoload": { @@ -2098,78 +1769,34 @@ "annotations", "controllers" ], - "time": "2017-12-14T19:03:23+00:00" - }, - { - "name": "sensiolabs/security-checker", - "version": "v4.1.6", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "387b6a3b723ba35588b33d5f8d14e28ed608bd30" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/387b6a3b723ba35588b33d5f8d14e28ed608bd30", - "reference": "387b6a3b723ba35588b33d5f8d14e28ed608bd30", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "symfony/console": "~2.7|~3.0|~4.0" - }, - "bin": [ - "security-checker" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-0": { - "SensioLabs\\Security": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } - ], - "description": "A security checker for your composer.lock", - "time": "2017-10-29T18:48:08+00:00" + "time": "2017-12-04T18:33:55+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.8", + "version": "v6.0.2", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "9a06dc570a0367850280eefd3f1dc2da45aef517" + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/9a06dc570a0367850280eefd3f1dc2da45aef517", - "reference": "9a06dc570a0367850280eefd3f1dc2da45aef517", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc", + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc", "shasum": "" }, "require": { - "php": ">=5.3.3" + "egulias/email-validator": "~2.0", + "php": ">=7.0.0" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" + "symfony/phpunit-bridge": "~3.3@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "6.0-dev" } }, "autoload": { @@ -2191,62 +1818,716 @@ } ], "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "homepage": "http://swiftmailer.symfony.com", "keywords": [ "email", "mail", "mailer" ], - "time": "2017-05-01T15:54:03+00:00" + "time": "2017-09-30T22:39:41+00:00" }, { - "name": "symfony/assetic-bundle", - "version": "v2.8.2", + "name": "symfony/asset", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/assetic-bundle.git", - "reference": "2e0a23a4874838e26de6f025e02fc63328921a4c" + "url": "https://github.com/symfony/asset.git", + "reference": "db6063ab6e71c0d4910328a4d10eba197e1d6b40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/2e0a23a4874838e26de6f025e02fc63328921a4c", - "reference": "2e0a23a4874838e26de6f025e02fc63328921a4c", + "url": "https://api.github.com/repos/symfony/asset/zipball/db6063ab6e71c0d4910328a4d10eba197e1d6b40", + "reference": "db6063ab6e71c0d4910328a4d10eba197e1d6b40", "shasum": "" }, "require": { - "kriswallsmith/assetic": "~1.4", - "php": ">=5.3.0", - "symfony/console": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" - }, - "conflict": { - "kriswallsmith/spork": "<=0.2", - "twig/twig": "<1.27" + "php": "^7.1.3" }, "require-dev": { - "kriswallsmith/spork": "~0.3", - "patchwork/jsqueeze": "~1.0", - "symfony/class-loader": "~2.3|~3.0", - "symfony/css-selector": "~2.3|~3.0", - "symfony/dom-crawler": "~2.3|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/twig-bundle": "~2.3|~3.0" + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0" }, "suggest": { - "kriswallsmith/spork": "to be able to dump assets in parallel", - "symfony/twig-bundle": "to use the Twig integration" + "symfony/http-foundation": "" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\AsseticBundle\\": "" + "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": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/cache", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "1ebe207de664355b1699d35b12b0563c38a47b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/1ebe207de664355b1699d35b12b0563c38a47b4e", + "reference": "1ebe207de664355b1699d35b12b0563c38a47b4e", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0" + }, + "conflict": { + "symfony/var-dumper": "<3.4" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/dbal": "~2.4", + "predis/predis": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/config", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "0e86d267db0851cf55f339c97df00d693fe8592f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/0e86d267db0851cf55f339c97df00d693fe8592f", + "reference": "0e86d267db0851cf55f339c97df00d693fe8592f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/finder": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "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 Config Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/console", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "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 Console Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/debug", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "9ae4223a661b56a9abdce144de4886cca37f198f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/9ae4223a661b56a9abdce144de4886cca37f198f", + "reference": "9ae4223a661b56a9abdce144de4886cca37f198f", + "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" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/67bf5e4f4da85624f30a5e43b7f43225c8b71959", + "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0" + }, + "require-dev": { + "symfony/config": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.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.0-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": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "85d54596a1fe1089536ce03979a1992bf71b7e04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/85d54596a1fe1089536ce03979a1992bf71b7e04", + "reference": "85d54596a1fe1089536ce03979a1992bf71b7e04", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/orm": "^2.4.5", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/property-access": "~3.4|~4.0", + "symfony/property-info": "~3.4|~4.0", + "symfony/proxy-manager-bridge": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.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.0-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": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "b826c255f22333eccd3365734d2c4e150c284843" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/b826c255f22333eccd3365734d2c4e150c284843", + "reference": "b826c255f22333eccd3365734d2c4e150c284843", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/cache": "~3.4|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/760e47a4ee64b4c48f4b30017011e09d4c0f05ed", + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "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 Filesystem Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601", + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "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 Finder Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/flex", + "version": "v1.0.60", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "066fe955b1a134841cdcc068a9f843594fdb1adc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/066fe955b1a134841cdcc068a9f843594fdb1adc", + "reference": "066fe955b1a134841cdcc068a9f843594fdb1adc", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1", + "php": "^7.0" + }, + "require-dev": { + "composer/composer": "^1.4", + "symfony/phpunit-bridge": "^3.2.8" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2255,19 +2536,634 @@ ], "authors": [ { - "name": "Kris Wallsmith", - "email": "kris.wallsmith@gmail.com", - "homepage": "http://kriswallsmith.net/" + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" } ], - "description": "Integrates Assetic into Symfony2", - "homepage": "https://github.com/symfony/AsseticBundle", - "keywords": [ - "assets", - "compression", - "minification" + "time": "2018-01-10T07:00:13+00:00" + }, + { + "name": "symfony/form", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "3ece1a890feba59740bb4a7b990628efb7408b0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/3ece1a890feba59740bb4a7b990628efb7408b0f", + "reference": "3ece1a890feba59740bb4a7b990628efb7408b0f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/options-resolver": "~3.4|~4.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "~3.4|~4.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4", + "symfony/doctrine-bridge": "<3.4", + "symfony/framework-bundle": "<3.4", + "symfony/http-kernel": "<3.4", + "symfony/twig-bridge": "<3.4" + }, + "require-dev": { + "doctrine/collections": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/security-csrf": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "suggest": { + "symfony/framework-bundle": "For templating with PHP.", + "symfony/security-csrf": "For protecting forms against CSRF attacks.", + "symfony/twig-bridge": "For templating with Twig.", + "symfony/validator": "For form validation." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], - "time": "2017-07-14T07:26:46+00:00" + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Form Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "7d80f8dcebce598b03dfe75a8669d8a1942687cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/7d80f8dcebce598b03dfe75a8669d8a1942687cd", + "reference": "7d80f8dcebce598b03dfe75a8669d8a1942687cd", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": "^7.1.3", + "symfony/cache": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "^3.4.3|^4.0.3", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/filesystem": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "~3.4|~4.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/console": "<3.4", + "symfony/form": "<3.4", + "symfony/property-info": "<3.4", + "symfony/serializer": "<3.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<3.4", + "symfony/validator": "<3.4", + "symfony/workflow": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "fig/link-util": "^1.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/asset": "~3.4|~4.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "~3.4|~4.0", + "symfony/property-info": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0", + "symfony/security-core": "~3.4|~4.0", + "symfony/security-csrf": "~3.4|~4.0", + "symfony/serializer": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/web-link": "~3.4|~4.0", + "symfony/workflow": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/03fe5171e35966f43453e2e5c15d7fe65f7fb23b", + "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "symfony/expression-language": "~3.4|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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 HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "f707ed09d3b5799a26c985de480d48b48540d41a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f707ed09d3b5799a26c985de480d48b48540d41a", + "reference": "f707ed09d3b5799a26c985de480d48b48540d41a", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/var-dumper": "<3.4", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/var-dumper": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-05T08:54:25+00:00" + }, + { + "name": "symfony/inflector", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/inflector.git", + "reference": "da634a9968162f7c5c94f8d6949a4ede86085304" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/inflector/zipball/da634a9968162f7c5c94f8d6949a4ede86085304", + "reference": "da634a9968162f7c5c94f8d6949a4ede86085304", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/intl", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "e67537d88dd27c7ae9ca1ff05c51ebb8eb59c391" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/e67537d88dd27c7ae9ca1ff05c51ebb8eb59c391", + "reference": "e67537d88dd27c7ae9ca1ff05c51ebb8eb59c391", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-intl-icu": "~1.0" + }, + "require-dev": { + "symfony/filesystem": "~3.4|~4.0" + }, + "suggest": { + "ext-intl": "to use the component with locales other than \"en\"" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/lts", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/lts.git", + "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/lts/zipball/396c5fca8d73d01186df37d7031321a3c0c2bf92", + "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92", + "shasum": "" + }, + "conflict": { + "symfony/asset": ">=5", + "symfony/browser-kit": ">=5", + "symfony/cache": ">=5", + "symfony/class-loader": ">=5", + "symfony/config": ">=5", + "symfony/console": ">=5", + "symfony/css-selector": ">=5", + "symfony/debug": ">=5", + "symfony/debug-bundle": ">=5", + "symfony/dependency-injection": ">=5", + "symfony/doctrine-bridge": ">=5", + "symfony/dom-crawler": ">=5", + "symfony/dotenv": ">=5", + "symfony/event-dispatcher": ">=5", + "symfony/expression-language": ">=5", + "symfony/filesystem": ">=5", + "symfony/finder": ">=5", + "symfony/form": ">=5", + "symfony/framework-bundle": ">=5", + "symfony/http-foundation": ">=5", + "symfony/http-kernel": ">=5", + "symfony/inflector": ">=5", + "symfony/intl": ">=5", + "symfony/ldap": ">=5", + "symfony/lock": ">=5", + "symfony/monolog-bridge": ">=5", + "symfony/options-resolver": ">=5", + "symfony/process": ">=5", + "symfony/property-access": ">=5", + "symfony/property-info": ">=5", + "symfony/proxy-manager-bridge": ">=5", + "symfony/routing": ">=5", + "symfony/security": ">=5", + "symfony/security-bundle": ">=5", + "symfony/security-core": ">=5", + "symfony/security-csrf": ">=5", + "symfony/security-guard": ">=5", + "symfony/security-http": ">=5", + "symfony/serializer": ">=5", + "symfony/stopwatch": ">=5", + "symfony/symfony": ">=5", + "symfony/templating": ">=5", + "symfony/translation": ">=5", + "symfony/twig-bridge": ">=5", + "symfony/twig-bundle": ">=5", + "symfony/validator": ">=5", + "symfony/var-dumper": ">=5", + "symfony/web-link": ">=5", + "symfony/web-profiler-bundle": ">=5", + "symfony/web-server-bundle": ">=5", + "symfony/workflow": ">=5", + "symfony/yaml": ">=5" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-master": "4-dev" + } + }, + "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": "Enforces Long Term Supported versions of Symfony components", + "homepage": "https://symfony.com", + "time": "2017-10-19T02:16:32+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "1b4fb2313312ec6cfae8ce45fccb2a88ec99d892" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/1b4fb2313312ec6cfae8ce45fccb2a88ec99d892", + "reference": "1b4fb2313312ec6cfae8ce45fccb2a88ec99d892", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.19", + "php": "^7.1.3", + "symfony/http-kernel": "~3.4|~4.0" + }, + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/security-core": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings. You need version ~2.3 of the console for it.", + "symfony/event-dispatcher": "Needed when using log messages in console commands.", + "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.0-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": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/monolog-bundle", @@ -2333,34 +3229,34 @@ "time": "2017-11-06T16:02:17+00:00" }, { - "name": "symfony/polyfill-apcu", - "version": "v1.6.0", + "name": "symfony/options-resolver", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "04f62674339602def515bff4bc6901fc1d4951e8" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "30d9240b30696a69e893534c9fc4a5c72ab6689b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/04f62674339602def515bff4bc6901fc1d4951e8", - "reference": "04f62674339602def515bff4bc6901fc1d4951e8", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/30d9240b30696a69e893534c9fc4a5c72ab6689b", + "reference": "30d9240b30696a69e893534c9fc4a5c72ab6689b", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Apcu\\": "" + "Symfony\\Component\\OptionsResolver\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2369,24 +3265,50 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "description": "Symfony OptionsResolver Component", "homepage": "https://symfony.com", "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" + "config", + "configuration", + "options" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/orm-pack", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/orm-pack.git", + "reference": "1b58f752cd917a08c9c8df020781d9c46a2275b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/orm-pack/zipball/1b58f752cd917a08c9c8df020781d9c46a2275b1", + "reference": "1b58f752cd917a08c9c8df020781d9c46a2275b1", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "^1.6.10", + "doctrine/doctrine-migrations-bundle": "^1.3", + "doctrine/orm": "^2.5.11", + "php": "^7.0" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Doctrine ORM", + "time": "2017-12-12T01:47:50+00:00" }, { "name": "symfony/polyfill-intl-icu", @@ -2506,22 +3428,21 @@ "time": "2017-10-11T12:05:26+00:00" }, { - "name": "symfony/polyfill-php56", + "name": "symfony/polyfill-php72", "version": "v1.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "265fc96795492430762c29be291a371494ba3a5b" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "6de4f4884b97abbbed9f0a84a95ff2ff77254254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/265fc96795492430762c29be291a371494ba3a5b", - "reference": "265fc96795492430762c29be291a371494ba3a5b", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/6de4f4884b97abbbed9f0a84a95ff2ff77254254", + "reference": "6de4f4884b97abbbed9f0a84a95ff2ff77254254", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=5.3.3" }, "type": "library", "extra": { @@ -2531,7 +3452,7 @@ }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" @@ -2551,7 +3472,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -2562,361 +3483,31 @@ "time": "2017-10-11T12:05:26+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.6.0", + "name": "symfony/process", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff" + "url": "https://github.com/symfony/process.git", + "reference": "2145b3e8137e463b1051b79440a59b38220944f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff", - "reference": "0442b9c0596610bd24ae7b5f0a6cdbbc16d9fcff", + "url": "https://api.github.com/repos/symfony/process/zipball/2145b3e8137e463b1051b79440a59b38220944f0", + "reference": "2145b3e8137e463b1051b79440a59b38220944f0", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2017-10-11T12:05:26+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "6e719200c8e540e0c0effeb31f96bdb344b94176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/6e719200c8e540e0c0effeb31f96bdb344b94176", - "reference": "6e719200c8e540e0c0effeb31f96bdb344b94176", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-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": "2017-10-11T12:05:26+00:00" - }, - { - "name": "symfony/swiftmailer-bundle", - "version": "v2.6.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/swiftmailer-bundle.git", - "reference": "c4808f5169efc05567be983909d00f00521c53ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec", - "reference": "c4808f5169efc05567be983909d00f00521c53ec", - "shasum": "" - }, - "require": { - "php": ">=5.3.2", - "swiftmailer/swiftmailer": "~4.2|~5.0", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0" - }, - "require-dev": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/phpunit-bridge": "~3.3@dev", - "symfony/yaml": "~2.7|~3.0" - }, - "suggest": { - "psr/log": "Allows logging" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\SwiftmailerBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony SwiftmailerBundle", - "homepage": "http://symfony.com", - "time": "2017-10-19T01:06:41+00:00" - }, - { - "name": "symfony/symfony", - "version": "v3.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/symfony.git", - "reference": "21abeae69baf64d689b04ca33663b4354be1a226" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/21abeae69baf64d689b04ca33663b4354be1a226", - "reference": "21abeae69baf64d689b04ca33663b4354be1a226", - "shasum": "" - }, - "require": { - "doctrine/common": "~2.4", - "ext-xml": "*", - "fig/link-util": "^1.0", - "php": "^5.5.9|>=7.0.8", - "psr/cache": "~1.0", - "psr/container": "^1.0", - "psr/link": "^1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/polyfill-apcu": "~1.1", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.6", - "symfony/polyfill-util": "~1.0", - "twig/twig": "^1.35|^2.4.4" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/container-implementation": "1.0", - "psr/log-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "replace": { - "symfony/asset": "self.version", - "symfony/browser-kit": "self.version", - "symfony/cache": "self.version", - "symfony/class-loader": "self.version", - "symfony/config": "self.version", - "symfony/console": "self.version", - "symfony/css-selector": "self.version", - "symfony/debug": "self.version", - "symfony/debug-bundle": "self.version", - "symfony/dependency-injection": "self.version", - "symfony/doctrine-bridge": "self.version", - "symfony/dom-crawler": "self.version", - "symfony/dotenv": "self.version", - "symfony/event-dispatcher": "self.version", - "symfony/expression-language": "self.version", - "symfony/filesystem": "self.version", - "symfony/finder": "self.version", - "symfony/form": "self.version", - "symfony/framework-bundle": "self.version", - "symfony/http-foundation": "self.version", - "symfony/http-kernel": "self.version", - "symfony/inflector": "self.version", - "symfony/intl": "self.version", - "symfony/ldap": "self.version", - "symfony/lock": "self.version", - "symfony/monolog-bridge": "self.version", - "symfony/options-resolver": "self.version", - "symfony/process": "self.version", - "symfony/property-access": "self.version", - "symfony/property-info": "self.version", - "symfony/proxy-manager-bridge": "self.version", - "symfony/routing": "self.version", - "symfony/security": "self.version", - "symfony/security-bundle": "self.version", - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version", - "symfony/serializer": "self.version", - "symfony/stopwatch": "self.version", - "symfony/templating": "self.version", - "symfony/translation": "self.version", - "symfony/twig-bridge": "self.version", - "symfony/twig-bundle": "self.version", - "symfony/validator": "self.version", - "symfony/var-dumper": "self.version", - "symfony/web-link": "self.version", - "symfony/web-profiler-bundle": "self.version", - "symfony/web-server-bundle": "self.version", - "symfony/workflow": "self.version", - "symfony/yaml": "self.version" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.6", - "doctrine/data-fixtures": "1.0.*", - "doctrine/dbal": "~2.4", - "doctrine/doctrine-bundle": "~1.4", - "doctrine/orm": "~2.4,>=2.4.5", - "egulias/email-validator": "~1.2,>=1.2.8|~2.0", - "monolog/monolog": "~1.11", - "ocramius/proxy-manager": "~0.4|~1.0|~2.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "predis/predis": "~1.0", - "symfony/phpunit-bridge": "~3.4|~4.0", - "symfony/security-acl": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", - "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", - "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", - "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", - "Symfony\\Bundle\\": "src/Symfony/Bundle/", - "Symfony\\Component\\": "src/Symfony/Component/" - }, - "classmap": [ - "src/Symfony/Component/Intl/Resources/stubs" - ], - "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": "The Symfony PHP framework", - "homepage": "https://symfony.com", - "keywords": [ - "framework" - ], - "time": "2018-01-05T08:33:31+00:00" - }, - { - "name": "symfony/web-server-bundle", - "version": "v3.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/web-server-bundle.git", - "reference": "19730be4dd97b060541ff2d8b0df55fae0a1e72a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/19730be4dd97b060541ff2d8b0df55fae0a1e72a", - "reference": "19730be4dd97b060541ff2d8b0df55fae0a1e72a", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/http-kernel": "~3.3|~4.0", - "symfony/process": "~3.3|~4.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\WebServerBundle\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2936,9 +3527,1001 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony WebServerBundle", + "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-11-19T21:22:53+00:00" + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/profiler-pack", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/profiler-pack.git", + "reference": "fa2e2dad522a3bef322196abad28ffce6d0fdbc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/fa2e2dad522a3bef322196abad28ffce6d0fdbc5", + "reference": "fa2e2dad522a3bef322196abad28ffce6d0fdbc5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "symfony/stopwatch": "^3.3|^4.0", + "symfony/twig-bundle": "^3.3|^4.0", + "symfony/web-profiler-bundle": "^3.3|^4.0" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Symfony web profiler", + "time": "2017-12-12T01:48:24+00:00" + }, + { + "name": "symfony/property-access", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "e0fef10eb7e11cae9421d8d89024dfeae0acffb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/e0fef10eb7e11cae9421d8d89024dfeae0acffb7", + "reference": "e0fef10eb7e11cae9421d8d89024dfeae0acffb7", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/inflector": "~3.4|~4.0" + }, + "require-dev": { + "symfony/cache": "~3.4|~4.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "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 PropertyAccess Component", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/routing", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "a34b58ed26cc090f99b2ef833d609a6884581b3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/a34b58ed26cc090f99b2ef833d609a6884581b3c", + "reference": "a34b58ed26cc090f99b2ef833d609a6884581b3c", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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 Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/security", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security.git", + "reference": "dfc0ef20a75b723ab2f20449a7b5dd768800c9e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security/zipball/dfc0ef20a75b723ab2f20449a7b5dd768800c9e2", + "reference": "dfc0ef20a75b723ab2f20449a7b5dd768800c9e2", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/property-access": "~3.4|~4.0" + }, + "replace": { + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version" + }, + "require-dev": { + "psr/container": "^1.0", + "psr/log": "~1.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/ldap": "~3.4|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0" + }, + "suggest": { + "psr/container": "To instantiate the Security class", + "symfony/expression-language": "For using the expression voter", + "symfony/form": "", + "symfony/ldap": "For using the LDAP user and authentication providers", + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/validator": "For using the user password constraint" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\": "" + }, + "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", + "homepage": "https://symfony.com", + "time": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "0440854c202dd49a64310cdd40a1c7008449b578" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/0440854c202dd49a64310cdd40a1c7008449b578", + "reference": "0440854c202dd49a64310cdd40a1c7008449b578", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": "^7.1.3", + "symfony/dependency-injection": "^3.4.3|^4.0.3", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/event-dispatcher": "<3.4", + "symfony/framework-bundle": "<3.4", + "symfony/var-dumper": "<3.4" + }, + "require-dev": { + "doctrine/doctrine-bundle": "~1.5", + "symfony/asset": "~3.4|~4.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/framework-bundle": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/twig-bridge": "~3.4|~4.0", + "symfony/twig-bundle": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d52321f0e2b596bd03b5d1dd6eebe71caa925704", + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/swiftmailer-bundle", + "version": "v3.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "9728097df87e76e2db71fc41fd7d211c06daea3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/9728097df87e76e2db71fc41fd7d211c06daea3e", + "reference": "9728097df87e76e2db71fc41fd7d211c06daea3e", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "swiftmailer/swiftmailer": "^6.0.1", + "symfony/config": "~2.8|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.3|~4.0", + "symfony/http-kernel": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" + }, + "suggest": { + "psr/log": "Allows logging" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony SwiftmailerBundle", + "homepage": "http://symfony.com", + "time": "2017-10-23T15:15:11+00:00" + }, + { + "name": "symfony/thanks", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/thanks.git", + "reference": "b637913a92664571afd1067fc645ecb30c9cf5b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/thanks/zipball/b637913a92664571afd1067fc645ecb30c9cf5b2", + "reference": "b637913a92664571afd1067fc645ecb30c9cf5b2", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1", + "php": "^5.5.9|^7.0.8" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "class": "Symfony\\Thanks\\Thanks" + }, + "autoload": { + "psr-4": { + "Symfony\\Thanks\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + } + ], + "description": "Give thanks (in the form of a GitHub ⭐) to your fellow PHP package maintainers (not limited to Symfony components)!", + "time": "2018-01-03T09:30:52+00:00" + }, + { + "name": "symfony/translation", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "2bb1b9dac38d32c5afb00edc9371b5db4cf6d000" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/2bb1b9dac38d32c5afb00edc9371b5db4cf6d000", + "reference": "2bb1b9dac38d32c5afb00edc9371b5db4cf6d000", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "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 Translation Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "92b7c3f30fc8d23ac4be8da4e575a3bb7ea903c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/92b7c3f30fc8d23ac4be8da4e575a3bb7ea903c1", + "reference": "92b7c3f30fc8d23ac4be8da4e575a3bb7ea903c1", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "twig/twig": "^1.35|^2.4.4" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/form": "<3.4" + }, + "require-dev": { + "symfony/asset": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/web-link": "~3.4|~4.0", + "symfony/workflow": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "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": "For using the SecurityExtension", + "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.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "7c1ee541f7d8836d901d989c449746c953be930b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/7c1ee541f7d8836d901d989c449746c953be930b", + "reference": "7c1ee541f7d8836d901d989c449746c953be930b", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/config": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/twig-bridge": "^3.4.3|^4.0.3", + "twig/twig": "~1.34|~2.4" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "symfony/asset": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/framework-bundle": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/web-link": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/validator", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "dac55edb2d1a59026d2e51a04def7f9a1f19f365" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/dac55edb2d1a59026d2e51a04def7f9a1f19f365", + "reference": "dac55edb2d1a59026d2e51a04def7f9a1f19f365", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation": "~3.4|~4.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "^1.2.8|~2.0", + "symfony/cache": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/property-access": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.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.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the metadata 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/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "883f6109a2069773e088c08626b87a3d3d61c566" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/883f6109a2069773e088c08626b87a3d3d61c566", + "reference": "883f6109a2069773e088c08626b87a3d3d61c566", + "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" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "20a04d0672d7f538d1c06ded7bf5990f23c089aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/20a04d0672d7f538d1c06ded7bf5990f23c089aa", + "reference": "20a04d0672d7f538d1c06ded7bf5990f23c089aa", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/twig-bridge": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<3.4", + "symfony/var-dumper": "<3.4" + }, + "require-dev": { + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "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 WebProfilerBundle", + "homepage": "https://symfony.com", + "time": "2018-01-04T15:52:56+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b84f646b9490d2101e2c25ddeec77ceefbda2eee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b84f646b9490d2101e2c25ddeec77ceefbda2eee", + "reference": "b84f646b9490d2101e2c25ddeec77ceefbda2eee", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "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 Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" }, { "name": "twig/extensions", @@ -3113,9 +4696,484 @@ "paging" ], "time": "2018-01-03T08:27:40+00:00" + }, + { + "name": "zendframework/zend-code", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-code.git", + "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/6b1059db5b368db769e4392c6cb6cc139e56640d", + "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d", + "shasum": "" + }, + "require": { + "php": "^7.1", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "zendframework/zend-coding-standard": "^1.0.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides facilities to generate arbitrary code using an object oriented interface", + "homepage": "https://github.com/zendframework/zend-code", + "keywords": [ + "code", + "zf2" + ], + "time": "2017-10-20T15:21:32+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "time": "2017-07-11T19:17:22+00:00" } ], "packages-dev": [ + { + "name": "composer/semver", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "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": "2016-08-30T16:08:34+00:00" + }, + { + "name": "doctrine/data-fixtures", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7b76ccc8e648c4502aad7f61347326c8a072bd3b", + "reference": "7b76ccc8e648c4502aad7f61347326c8a072bd3b", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "php": "^7.1" + }, + "require-dev": { + "doctrine/dbal": "^2.5.4", + "doctrine/orm": "^2.5.4", + "phpunit/phpunit": "^6.3" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database" + ], + "time": "2017-11-27T18:48:06+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "7fc29d2b18c61ed99826b21fbfd1ff9969cc2e7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/7fc29d2b18c61ed99826b21fbfd1ff9969cc2e7f", + "reference": "7fc29d2b18c61ed99826b21fbfd1ff9969cc2e7f", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "~1.0", + "doctrine/doctrine-bundle": "~1.0", + "php": ">=5.5.9|^7.0", + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "^3.3|^4.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "time": "2017-12-04T20:26:38+00:00" + }, + { + "name": "easycorp/easy-log-handler", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/EasyCorp/easy-log-handler.git", + "reference": "1a617a37ab9389eac4e2e1d14cb70ee0087d724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/EasyCorp/easy-log-handler/zipball/1a617a37ab9389eac4e2e1d14cb70ee0087d724d", + "reference": "1a617a37ab9389eac4e2e1d14cb70ee0087d724d", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.6", + "php": ">=5.3.0", + "symfony/yaml": "~2.3|~3.0|~4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "EasyCorp\\EasyLog\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Javier Eguiluz", + "email": "javiereguiluz@gmail.com" + }, + { + "name": "Project Contributors", + "homepage": "https://github.com/EasyCorp/easy-log-handler" + } + ], + "description": "A handler for Monolog that optimizes log messages to be processed by humans instead of software. Improve your productivity with logs that are easy to understand.", + "homepage": "https://github.com/EasyCorp/easy-log-handler", + "keywords": [ + "easy", + "log", + "logging", + "monolog", + "productivity" + ], + "time": "2018-01-10T08:34:20+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "513a3765b56dd029175f9f32995566657ee89dda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/513a3765b56dd029175f9f32995566657ee89dda", + "reference": "513a3765b56dd029175f9f32995566657ee89dda", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "gecko-packages/gecko-php-unit": "^2.0 || ^3.0", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.2", + "symfony/console": "^3.2 || ^4.0", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0@dev", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.0", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.0", + "php-cs-fixer/accessible-object": "^1.0", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "phpunitgoodpractices/traits": "^1.0", + "symfony/phpunit-bridge": "^3.2.2 || ^4.0" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "extra": { + "branch-alias": { + "dev-master": "2.10-dev" + } + }, + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/TestCase.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "time": "2018-01-10T17:16:15+00:00" + }, + { + "name": "gecko-packages/gecko-php-unit", + "version": "v3.0", + "source": { + "type": "git", + "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", + "reference": "6a866551dffc2154c1b091bae3a7877d39c25ca3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/6a866551dffc2154c1b091bae3a7877d39c25ca3", + "reference": "6a866551dffc2154c1b091bae3a7877d39c25ca3", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-dom": "When testing with xml.", + "ext-libxml": "When testing with xml.", + "phpunit/phpunit": "This is an extension for it so make sure you have it some way." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "GeckoPackages\\PHPUnit\\": "src/PHPUnit" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Additional PHPUnit asserts and constraints.", + "homepage": "https://github.com/GeckoPackages", + "keywords": [ + "extension", + "filesystem", + "phpunit" + ], + "time": "2017-08-23T07:46:41+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.7.0", @@ -3263,6 +5321,54 @@ "description": "Library for handling version information and constraints", "time": "2017-03-05T17:38:23+00:00" }, + { + "name": "php-cs-fixer/diff", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "f0ef6133d674137e902fdf8a6f2e8e97e14a087b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/f0ef6133d674137e902fdf8a6f2e8e97e14a087b", + "reference": "f0ef6133d674137e902fdf8a6f2e8e97e14a087b", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "SpacePossum" + } + ], + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "time": "2017-10-19T09:58:18+00:00" + }, { "name": "phpdocumentor/reflection-common", "version": "1.0.1", @@ -4429,60 +6535,6 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, - { - "name": "sensio/generator-bundle", - "version": "v3.1.7", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", - "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", - "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", - "shasum": "" - }, - "require": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/process": "~2.7|~3.0", - "symfony/yaml": "~2.7|~3.0", - "twig/twig": "^1.28.2|^2.0" - }, - "require-dev": { - "doctrine/orm": "~2.4", - "symfony/doctrine-bridge": "~2.7|~3.0", - "symfony/filesystem": "~2.7|~3.0", - "symfony/phpunit-bridge": "^3.3" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\GeneratorBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "This bundle generates code for you", - "time": "2017-12-07T15:36:41+00:00" - }, { "name": "squizlabs/php_codesniffer", "version": "3.2.2", @@ -4535,17 +6587,227 @@ "time": "2017-12-19T21:44:46+00:00" }, { - "name": "symfony/phpunit-bridge", - "version": "v3.4.3", + "name": "symfony/debug-bundle", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "24ffb71a115c25f5ee56cbfd38e56ed2cdbeb0a9" + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "3188f67995b0b54ca0600c68dac86ae822229a97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/24ffb71a115c25f5ee56cbfd38e56ed2cdbeb0a9", - "reference": "24ffb71a115c25f5ee56cbfd38e56ed2cdbeb0a9", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/3188f67995b0b54ca0600c68dac86ae822229a97", + "reference": "3188f67995b0b54ca0600c68dac86ae822229a97", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "php": "^7.1.3", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/twig-bridge": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/web-profiler-bundle": "~3.4|~4.0" + }, + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "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 DebugBundle", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:38:00+00:00" + }, + { + "name": "symfony/debug-pack", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-pack.git", + "reference": "2da9b0ea7a733fc29ec3e72139751fd8d2582887" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-pack/zipball/2da9b0ea7a733fc29ec3e72139751fd8d2582887", + "reference": "2da9b0ea7a733fc29ec3e72139751fd8d2582887", + "shasum": "" + }, + "require": { + "easycorp/easy-log-handler": "^1.0.2", + "php": "^7.0", + "symfony/debug-bundle": "^3.3|^4.0", + "symfony/monolog-bundle": "^3.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/profiler-pack": "^1.0", + "symfony/var-dumper": "^3.3|^4.0" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A debug pack for Symfony projects", + "time": "2017-12-12T01:47:04+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "afb6923923e22874dac20bd042167ccb8df1d158" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/afb6923923e22874dac20bd042167ccb8df1d158", + "reference": "afb6923923e22874dac20bd042167ccb8df1d158", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "require-dev": { + "symfony/process": "~3.4|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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": "2018-01-03T17:15:19+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "bf97703ddb68c6b37bd6bab5f5ebd5c7542ca1ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/bf97703ddb68c6b37bd6bab5f5ebd5c7542ca1ef", + "reference": "bf97703ddb68c6b37bd6bab5f5ebd5c7542ca1ef", + "shasum": "" + }, + "require": { + "php": "^7.0.8", + "symfony/config": "^3.4|^4.0", + "symfony/console": "^3.4|^4.0", + "symfony/dependency-injection": "^3.4|^4.0", + "symfony/filesystem": "^3.4|^4.0", + "symfony/framework-bundle": "^3.4|^4.0", + "symfony/http-kernel": "^3.4|^4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.8", + "symfony/phpunit-bridge": "^3.4|^4.0", + "symfony/process": "^3.4|^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "keywords": [ + "code generator", + "generator", + "scaffold", + "scaffolding" + ], + "time": "2017-12-04T17:50:28+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "b989c646eb422f3ad583f0be3b482a774668e86f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/b989c646eb422f3ad583f0be3b482a774668e86f", + "reference": "b989c646eb422f3ad583f0be3b482a774668e86f", "shasum": "" }, "require": { @@ -4564,7 +6826,7 @@ "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.0-dev" }, "thanks": { "name": "phpunit/phpunit", @@ -4598,7 +6860,65 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com", - "time": "2018-01-04T17:19:23+00:00" + "time": "2018-01-04T17:20:09+00:00" + }, + { + "name": "symfony/web-server-bundle", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-server-bundle.git", + "reference": "20ad52df8164d2eae029e6bb24356956c52380be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-server-bundle/zipball/20ad52df8164d2eae029e6bb24356956c52380be", + "reference": "20ad52df8164d2eae029e6bb24356956c52380be", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/process": "^3.4.2|^4.0.2" + }, + "suggest": { + "symfony/expression-language": "For using the filter option of the log server.", + "symfony/monolog-bridge": "For using the log server." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebServerBundle\\": "" + }, + "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 WebServerBundle", + "homepage": "https://symfony.com", + "time": "2018-01-03T17:15:19+00:00" }, { "name": "theseer/tokenizer", @@ -4694,12 +7014,13 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "avanzu/admin-theme-bundle": 20 + "avanzu/admin-theme-bundle": 20, + "symfony/lts": 20 }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0.8", + "php": "^7.1.3", "ext-pdo_sqlite": "*" }, "platform-dev": [] diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 00000000..ab0f7c0c --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,20 @@ + ['all' => true], + Symfony\Bundle\WebServerBundle\WebServerBundle::class => ['dev' => true], + Doctrine\Bundle\DoctrineCacheBundle\DoctrineCacheBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true], + Avanzu\AdminThemeBundle\AvanzuAdminThemeBundle::class => ['all' => true], + WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle::class => ['all' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true], +]; diff --git a/config/packages/avanzu_admin_theme.yml b/config/packages/avanzu_admin_theme.yml new file mode 100644 index 00000000..829ebdff --- /dev/null +++ b/config/packages/avanzu_admin_theme.yml @@ -0,0 +1,14 @@ +avanzu_admin_theme: + use_twig: true + use_assetic: true + bower_bin: "/usr/local/bin/bower" + options: + default_avatar: images/default_avatar.png + skin: skin-green-light + fixed_layout: false + boxed_layout: false + collapsed_sidebar: true + mini_sidebar: true + control_sidebar: false + knp_menu: + enable: false diff --git a/config/packages/dev/easy_log_handler.yaml b/config/packages/dev/easy_log_handler.yaml new file mode 100644 index 00000000..27bfc608 --- /dev/null +++ b/config/packages/dev/easy_log_handler.yaml @@ -0,0 +1,16 @@ +services: + EasyCorp\EasyLog\EasyLogHandler: + public: false + arguments: ['%kernel.logs_dir%/%kernel.environment%.log'] + +#// FIXME: How to add this configuration automatically without messing up with the monolog configuration? +#monolog: +# handlers: +# buffered: +# type: buffer +# handler: easylog +# channels: ['!event'] +# level: debug +# easylog: +# type: service +# id: EasyCorp\EasyLog\EasyLogHandler diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml new file mode 100644 index 00000000..36625928 --- /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/dev/routing.yaml b/config/packages/dev/routing.yaml new file mode 100644 index 00000000..4116679a --- /dev/null +++ b/config/packages/dev/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: true diff --git a/config/packages/dev/swiftmailer.yaml b/config/packages/dev/swiftmailer.yaml new file mode 100644 index 00000000..5c36456a --- /dev/null +++ b/config/packages/dev/swiftmailer.yaml @@ -0,0 +1,4 @@ +# See https://symfony.com/doc/current/email/dev_environment.html +swiftmailer: + # send all emails to a specific address + #delivery_addresses: ['me@example.com'] diff --git a/config/packages/dev/web_profiler.yaml b/config/packages/dev/web_profiler.yaml new file mode 100644 index 00000000..e92166a7 --- /dev/null +++ b/config/packages/dev/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: true + intercept_redirects: false + +framework: + profiler: { only_exceptions: false } diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 00000000..37b9c450 --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,27 @@ +parameters: + # Adds a fallback DATABASE_URL if the env var is not set. + # This allows you to run cache:warmup even if your + # environment variables are not available yet. + # You should not need to change this value. + env(DATABASE_URL): '' + +doctrine: + dbal: + # configure these for your database server + driver: 'pdo_mysql' + server_version: '5.7' + charset: utf8mb4 + + # With Symfony 3.3, remove the `resolve:` prefix + url: '%env(resolve:DATABASE_URL)%' + orm: + auto_generate_proxy_classes: '%kernel.debug%' + naming_strategy: doctrine.orm.naming_strategy.underscore + auto_mapping: true + mappings: + App: + is_bundle: false + type: annotation + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: Kimai diff --git a/app/config/mysql.yml b/config/packages/doctrine_extensions_mysql.yaml similarity index 100% rename from app/config/mysql.yml rename to config/packages/doctrine_extensions_mysql.yaml diff --git a/app/config/sqlite.yml b/config/packages/doctrine_extensions_sqlite.yaml similarity index 100% rename from app/config/sqlite.yml rename to config/packages/doctrine_extensions_sqlite.yaml diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 00000000..3bf0fbca --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,5 @@ +doctrine_migrations: + dir_name: '%kernel.project_dir%/src/Migrations' + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + namespace: DoctrineMigrations diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 00000000..9654c6bb --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,26 @@ +framework: + secret: '%env(APP_SECRET)%' + default_locale: en + csrf_protection: ~ + #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: session.handler.native_file + save_path: "%kernel.project_dir%/var/sessions/%kernel.environment%" + + #esi: ~ + #fragments: ~ + php_errors: + log: true + + cache: + # The app cache caches to the filesystem by default. 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 diff --git a/config/packages/kimai.yml b/config/packages/kimai.yml new file mode 100644 index 00000000..69a5043a --- /dev/null +++ b/config/packages/kimai.yml @@ -0,0 +1,9 @@ +twig: +# form_themes: +# - "bootstrap_3_layout.html.twig" +# - "form/fields.html.twig" + globals: + kimai_context: + date_1: "d.m.Y" # used for display in timesheets + box_color: "green" # a color for ??? + active_warning: 3 # display a warning color if the user has at least X active recordings diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml new file mode 100644 index 00000000..2f16f0fd --- /dev/null +++ b/config/packages/prod/doctrine.yaml @@ -0,0 +1,31 @@ +doctrine: + orm: + metadata_cache_driver: + type: service + id: doctrine.system_cache_provider + query_cache_driver: + type: service + id: doctrine.system_cache_provider + result_cache_driver: + type: service + id: doctrine.result_cache_provider + +services: + doctrine.result_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.result_cache_pool' + doctrine.system_cache_provider: + class: Symfony\Component\Cache\DoctrineProvider + public: false + arguments: + - '@doctrine.system_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 00000000..90e1a4c1 --- /dev/null +++ b/config/packages/prod/monolog.yaml @@ -0,0 +1,17 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_404s: + # regex: exclude all 404 errors from the logs + - ^/ + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 00000000..368bc7f4 --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: ~ diff --git a/app/config/security.yml b/config/packages/security.yaml similarity index 79% rename from app/config/security.yml rename to config/packages/security.yaml index 2858441b..dcf6ecaf 100644 --- a/app/config/security.yml +++ b/config/packages/security.yaml @@ -1,17 +1,17 @@ security: encoders: - # Our user class and the algorithm we'll use to encode passwords - # http://symfony.com/doc/current/book/security.html#encoding-the-user-s-password - AppBundle\Entity\User: bcrypt + App\Entity\User: bcrypt + # https://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers providers: - # in this example, users are stored via Doctrine in the database - # demo users can be found at src/AppBundle/DataFixtures/ORM/LoadFixtures.php database_users: - entity: { class: AppBundle:User, property: username } + entity: { class: App\Entity\User, property: username } - # http://symfony.com/doc/current/book/security.html#firewalls-authentication firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + secured_area: # does what it says logout_on_user_change: true @@ -53,3 +53,4 @@ security: - { path: '^/(%app_locales%)$', role: IS_AUTHENTICATED_FULLY } - { path: '^/(%app_locales%)/login', role: IS_AUTHENTICATED_ANONYMOUSLY } - { path: '^/(%app_locales%)/admin', roles: ROLE_ADMIN } + diff --git a/config/packages/swiftmailer.yaml b/config/packages/swiftmailer.yaml new file mode 100644 index 00000000..cae65084 --- /dev/null +++ b/config/packages/swiftmailer.yaml @@ -0,0 +1,3 @@ +swiftmailer: + url: '%env(MAILER_URL)%' + spool: { type: 'memory' } diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml new file mode 100644 index 00000000..76d7e5e1 --- /dev/null +++ b/config/packages/test/framework.yaml @@ -0,0 +1,4 @@ +framework: + test: ~ + 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 00000000..2762653c --- /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/swiftmailer.yaml b/config/packages/test/swiftmailer.yaml new file mode 100644 index 00000000..f4380780 --- /dev/null +++ b/config/packages/test/swiftmailer.yaml @@ -0,0 +1,2 @@ +swiftmailer: + disable_delivery: true diff --git a/config/packages/test/web_profiler.yaml b/config/packages/test/web_profiler.yaml new file mode 100644 index 00000000..03752de2 --- /dev/null +++ b/config/packages/test/web_profiler.yaml @@ -0,0 +1,6 @@ +web_profiler: + toolbar: false + intercept_redirects: false + +framework: + profiler: { collect: false } diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml new file mode 100644 index 00000000..1edfbe23 --- /dev/null +++ b/config/packages/translation.yaml @@ -0,0 +1,7 @@ +framework: + default_locale: '%locale%' + translator: + paths: + - '%kernel.project_dir%/translations' + fallbacks: + - '%locale%' diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 00000000..c83bdca1 --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,11 @@ +twig: + #paths: ['%kernel.project_dir%/templates'] + debug: '%kernel.debug%' + strict_variables: '%kernel.debug%' + # TODO move me to kimai config + globals: + kimai_context: + date_1: "d.m.Y" # used for display in timesheets + box_color: "green" # a color for ??? + active_warning: 3 # display a warning color if the user has at least X active recordings + diff --git a/config/packages/twig_extensions.yaml b/config/packages/twig_extensions.yaml new file mode 100644 index 00000000..82ff3f21 --- /dev/null +++ b/config/packages/twig_extensions.yaml @@ -0,0 +1,12 @@ +services: + _defaults: + public: false + autowire: true + autoconfigure: true + + #Twig\Extensions\ArrayExtension: ~ + #Twig\Extensions\DateExtension: ~ + Twig\Extensions\IntlExtension: ~ + #Twig\Extensions\TextExtension: ~ + Twig\Extensions\StringLoader: + class: Twig_Extension_StringLoader \ No newline at end of file diff --git a/config/routes.yaml b/config/routes.yaml new file mode 100644 index 00000000..9dc322d1 --- /dev/null +++ b/config/routes.yaml @@ -0,0 +1,11 @@ +homepage: + path: /{_locale} + defaults: + _controller: FrameworkBundle:Redirect:redirect + route: timesheet + permanent: true + +avanzu_admin_profile: + path: /{_locale}/profile/{username} + options: + avanzu_admin_route: profile diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml new file mode 100644 index 00000000..9028c556 --- /dev/null +++ b/config/routes/annotations.yaml @@ -0,0 +1,8 @@ +controllers: + resource: '../src/Controller/' + type: annotation + prefix: /{_locale} + requirements: + _locale: '%app_locales%' + defaults: + _locale: '%locale%' \ No newline at end of file diff --git a/config/routes/dev/avanzu_admin_theme.yml b/config/routes/dev/avanzu_admin_theme.yml new file mode 100644 index 00000000..30f9c7de --- /dev/null +++ b/config/routes/dev/avanzu_admin_theme.yml @@ -0,0 +1,8 @@ + +# ======================================================================== +# Demo routes, only work with "avanzu_admin_theme/enable_demo: true" +# ======================================================================== + +#avanzu_admin: +# prefix: /admin +# resource: "@AvanzuAdminThemeBundle/Resources/config/routes.yml" diff --git a/config/routes/dev/twig.yaml b/config/routes/dev/twig.yaml new file mode 100644 index 00000000..56fecc76 --- /dev/null +++ b/config/routes/dev/twig.yaml @@ -0,0 +1,7 @@ +_errors: + resource: '@TwigBundle/Resources/config/routing/errors.xml' + prefix: /_error + requirements: + _locale: '%app_locales%' + defaults: + _locale: '%locale%' diff --git a/config/routes/dev/web_profiler.yaml b/config/routes/dev/web_profiler.yaml new file mode 100644 index 00000000..c82beff2 --- /dev/null +++ b/config/routes/dev/web_profiler.yaml @@ -0,0 +1,7 @@ +web_profiler_wdt: + resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml' + prefix: /_wdt + +web_profiler_profiler: + resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml' + prefix: /_profiler diff --git a/app/config/services.yml b/config/services.yaml similarity index 61% rename from app/config/services.yml rename to config/services.yaml index f53cd9cc..a679e3d0 100644 --- a/app/config/services.yml +++ b/config/services.yaml @@ -1,87 +1,50 @@ +# Put parameters here that don't need to change on each machine where the app is deployed +# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration +parameters: + locale: 'en' + app_locales: en|de + 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. + public: false # Allows optimizing the container by removing unused services; this also means + # fetching services directly from the container via $container->get() won't work. + # The best practice is to be explicit about your dependencies anyway. + + # 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: '../src/*' + exclude: '../src/{Entity,Migrations,Tests}' + + # controllers are imported separately to make sure services can be injected + # as action arguments even if you don't extend any base controller class + App\Controller\: + resource: '../src/Controller' + tags: ['controller.service_arguments'] + + # add more service definitions when explicit configuration is needed + # please note that last definitions always *replace* previous ones # ================================================================================ - # TWIG + # APPLICATION CORE # ================================================================================ - markdown: - class: AppBundle\Utils\Markdown - - app.twig.app_extension: - public: false - class: AppBundle\Twig\Extensions - arguments: ['@markdown', '%app_locales%'] + # a route listener, that injects the locale through a URL directory + app.redirect_to_preferred_locale_listener: + class: App\EventListener\RedirectToPreferredLocaleListener + arguments: ['@router', '%app_locales%', '%locale%'] tags: - - { name: twig.extension } + - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } - # twig function: template_from_string() - app.twig.loader_extension: - class: Twig_Extension_StringLoader + # additional menu entries for the timesheet bundle + timesheet.configure_menu_listener: + class: App\EventListener\Menu tags: - - { name: 'twig.extension' } - - app.twig.intl_extension: - public: false - class: Twig_Extensions_Extension_Intl - tags: - - { name: twig.extension } - - # ================================================================================ - # SECURITY - # ================================================================================ - - # security voter to check user-profile access - app.voter.user: - class: AppBundle\Voter\UserVoter - arguments: ["@security.access.decision_manager"] - tags: - - { name: security.voter } - - # security voter to check customer access - timesheet.voter.customer: - class: TimesheetBundle\Voter\CustomerVoter - arguments: ["@security.access.decision_manager"] - tags: - - { name: security.voter } - - # security voter to check project access - timesheet.voter.project: - class: TimesheetBundle\Voter\ProjectVoter - arguments: ["@security.access.decision_manager"] - tags: - - { name: security.voter } - - # security voter to check activity access - timesheet.voter.activity: - class: TimesheetBundle\Voter\ActivityVoter - arguments: ["@security.access.decision_manager"] - tags: - - { name: security.voter } - - # security voter to check activity access - timesheet.voter.timesheet: - class: TimesheetBundle\Voter\TimesheetVoter - arguments: ["@security.access.decision_manager"] - tags: - - { name: security.voter } - - # ================================================================================ - # FORMS - # ================================================================================ - - # form to edit user roles - app.admin.user_role: - class: AppBundle\Form\Type\UserRoleType - arguments: ["%security.role_hierarchy.roles%"] - tags: - - { name: form.type } - - # event-listener to populate the navigation - app.menu_builder: - class: AppBundle\EventListener\MenuBuilder - arguments: ["@event_dispatcher", "@security.authorization_checker"] - tags: - - { name: kernel.event_listener, event: theme.sidebar_setup_menu, method: onSetupNavbar } + - { name: kernel.event_listener, event: app.main_menu_configure, method: onMainMenuConfigure } + - { name: kernel.event_listener, event: app.admin_menu_configure, method: onAdminMenuConfigure } # ================================================================================ # DATABASE @@ -89,39 +52,83 @@ services: # service that prefixes every database table app.tableprefix_subscriber: - class: AppBundle\Doctrine\TablePrefixSubscriber - arguments: ["%database_prefix%"] + class: App\Doctrine\TablePrefixSubscriber + arguments: ["%env(resolve:DATABASE_PREFIX)%"] tags: - { name: doctrine.event_subscriber } + # updates timesheet records, to make sure they are calculated and can't be manipulated by the users app.database_listener.timesheet: - class: TimesheetBundle\EventListener\TimesheetListener + class: App\EventListener\TimesheetListener tags: - { name: doctrine.event_listener, event: prePersist, lazy: true } - { name: doctrine.event_listener, event: preUpdate, lazy: true } - # Uncomment the following lines to define a service for the Post Doctrine repository. + # Uncomment the following lines to define a service for the Timesheet Doctrine repository. # It's not mandatory to create these services, but if you use repositories a lot, - # these services simplify your code: + # these services can simplify your code: # # app.post_repository: # class: Doctrine\ORM\EntityRepository # factory: ['@doctrine.orm.entity_manager', getRepository] - # arguments: [AppBundle\Entity\User] + # arguments: [App\Entity\Timesheet] # # // traditional code inside a controller # $entityManager = $this->getDoctrine()->getManager(); - # $posts = $entityManager->getRepository('AppBundle:User')->findAll(); + # $posts = $entityManager->getRepository('KimaiBundle:User')->findAll(); # # // same code using repository services # $posts = $this->get('app.user_repository')->findAll(); + # ================================================================================ + # EVENTS and LISTENER / SUBSCRIBER + # ================================================================================ + + # event-listener to populate the navigation + app.menu_builder: + class: App\EventListener\MenuBuilder + arguments: ["@event_dispatcher", "@security.authorization_checker"] + tags: + - { name: kernel.event_listener, event: theme.sidebar_setup_menu, method: onSetupNavbar } + + # ================================================================================ + # FORMS + # ================================================================================ + + # form to edit user roles + app.admin.user_role: + class: App\Form\Type\UserRoleType + arguments: ["%security.role_hierarchy.roles%"] + tags: + - { name: form.type } + + # ================================================================================ + # CONSOLE COMMANDS + # ================================================================================ + + App\Command\RunCodeSnifferCommand: + arguments: + $projectDirectory: "%kernel.project_dir%" + + App\Command\RunUnitTestsCommand: + class: App\Command\RunUnitTestsCommand + arguments: + $projectDirectory: "%kernel.project_dir%" + + App\Command\RunIntegrationTestsCommand: + class: App\Command\RunIntegrationTestsCommand + arguments: + $projectDirectory: "%kernel.project_dir%" + # ================================================================================ # THEME # ================================================================================ + App\Twig\Extensions: + arguments: ['%app_locales%'] + avanzu_admin_theme.navbar_user_listener: - class: AppBundle\EventListener\NavbarShowUserListener + class: App\EventListener\NavbarShowUserListener arguments: ["@security.token_storage"] tags: - { name: kernel.event_listener, event: theme.navbar_user, method: onShowUser } @@ -147,31 +154,3 @@ services: # tags: # - { name: kernel.event_listener, event: theme.sidebar_setup_menu, method: onSetupMenu } # - { name: kernel.event_listener, event: theme.breadcrumb, method: onSetupMenu } - - # ================================================================================ - # APPLICATION CORE - # ================================================================================ - - # a route listener, that injects the locale through a URL directory - app.redirect_to_preferred_locale_listener: - class: AppBundle\EventListener\RedirectToPreferredLocaleListener - arguments: ['@router', '%app_locales%', '%locale%'] - tags: - - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } - - # additional menu entries for the timesheet bundle - timesheet.configure_menu_listener: - class: TimesheetBundle\EventListener\Menu - tags: - - { name: kernel.event_listener, event: app.main_menu_configure, method: onMainMenuConfigure } - - { name: kernel.event_listener, event: app.admin_menu_configure, method: onAdminMenuConfigure } - - # ================================================================================ - # CONSOLE COMMANDS - # ================================================================================ - - app.command.create_user: - class: AppBundle\Command\CreateUserCommand - arguments: ["@security.password_encoder", "@doctrine", "@validator"] - tags: - - { name: console.command, command: kimai:create-user } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index e0afaf7b..29ec2914 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -2,30 +2,37 @@ - + + + + + + + + + + + + + - src/*Bundle/Tests + tests/ - - - src - - src/*Bundle/Resources - src/*/*Bundle/Resources - src/*/Bundle/*Bundle/Resources - - - - + + + + + \ No newline at end of file diff --git a/web/.htaccess b/public/.htaccess similarity index 100% rename from web/.htaccess rename to public/.htaccess diff --git a/web/apple-touch-icon.png b/public/apple-touch-icon.png similarity index 100% rename from web/apple-touch-icon.png rename to public/apple-touch-icon.png diff --git a/web/css/app.css b/public/css/app.css similarity index 100% rename from web/css/app.css rename to public/css/app.css diff --git a/web/css/kimai.css b/public/css/kimai.css similarity index 100% rename from web/css/kimai.css rename to public/css/kimai.css diff --git a/web/favicon.ico b/public/favicon.ico similarity index 100% rename from web/favicon.ico rename to public/favicon.ico diff --git a/web/avatars/default.png b/public/images/default_avatar.png similarity index 100% rename from web/avatars/default.png rename to public/images/default_avatar.png diff --git a/public/index.php b/public/index.php new file mode 100644 index 00000000..ab41c26e --- /dev/null +++ b/public/index.php @@ -0,0 +1,39 @@ +load(__DIR__.'/../.env'); +} + +$env = $_SERVER['APP_ENV'] ?? 'dev'; +$debug = $_SERVER['APP_DEBUG'] ?? ('prod' !== $env); + +if ($debug) { + umask(0000); + + Debug::enable(); +} + +if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { + Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); +} + +if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { + Request::setTrustedHosts(explode(',', $trustedHosts)); +} + +$kernel = new Kernel($env, $debug); +$request = Request::createFromGlobals(); +$response = $kernel->handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/web/js/app.js b/public/js/app.js similarity index 100% rename from web/js/app.js rename to public/js/app.js diff --git a/web/js/kimai.js b/public/js/kimai.js similarity index 100% rename from web/js/kimai.js rename to public/js/kimai.js diff --git a/web/js/toolbar.js b/public/js/toolbar.js similarity index 100% rename from web/js/toolbar.js rename to public/js/toolbar.js diff --git a/web/robots.txt b/public/robots.txt similarity index 89% rename from web/robots.txt rename to public/robots.txt index 214e4119..bc8af6bb 100644 --- a/web/robots.txt +++ b/public/robots.txt @@ -2,3 +2,4 @@ # www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 User-agent: * +Disallow: / diff --git a/src/.htaccess b/src/.htaccess deleted file mode 100644 index fb1de45b..00000000 --- a/src/.htaccess +++ /dev/null @@ -1,7 +0,0 @@ - - Require all denied - - - Order deny,allow - Deny from all - diff --git a/src/AppBundle/AppBundle.php b/src/AppBundle/AppBundle.php deleted file mode 100644 index e96b5589..00000000 --- a/src/AppBundle/AppBundle.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace AppBundle; - -use AppBundle\DependencyInjection\CompilerPass; -use Symfony\Component\DependencyInjection\Compiler\PassConfig; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\HttpKernel\Bundle\Bundle; - -/** - * Kimai main application bundle. - * - * @see http://symfony.com/doc/current/cookbook/bundles/best_practices.html - * @see http://symfony.com/doc/current/best_practices/business-logic.html - * - * @author Kevin Papst - */ -class AppBundle extends Bundle -{ - public function build(ContainerBuilder $container) - { - parent::build($container); - - $container->addCompilerPass(new CompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -1000); - } -} diff --git a/src/AppBundle/Repository/Query/VisibilityInterface.php b/src/AppBundle/Repository/Query/VisibilityInterface.php deleted file mode 100644 index a51a4bab..00000000 --- a/src/AppBundle/Repository/Query/VisibilityInterface.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace AppBundle\Repository\Query; - -/** - * Can be used for advanced queries with the: UserRepository - * - * @author Kevin Papst - */ -interface VisibilityInterface -{ - const SHOW_VISIBLE = 1; - const SHOW_HIDDEN = 0; - const SHOW_BOTH = 2; - - /** - * @return $this - */ - public function getVisibility(); - - /** - * @param int $visibility - * @return $this - */ - public function setVisibility($visibility); - - /** - * @return bool - */ - public function isExclusiveVisibility(); - - /** - * @param bool $exclusiveVisibility - * @return $this - */ - public function setExclusiveVisibility($exclusiveVisibility); -} diff --git a/src/AppBundle/Utils/Markdown.php b/src/AppBundle/Utils/Markdown.php deleted file mode 100644 index 3f68b66b..00000000 --- a/src/AppBundle/Utils/Markdown.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace AppBundle\Utils; - -/** - * This class is a light interface between an external Markdown parser library - * and the application. It's generally recommended to create these light interfaces - * to decouple your application from the implementation details of the third-party library. - * - * @author Ryan Weaver - * @author Javier Eguiluz - */ -class Markdown -{ - /** - * @var \Parsedown - */ - private $parser; - - /** - * @var \HTMLPurifier - */ - private $purifier; - - public function __construct() - { - $this->parser = new \Parsedown(); - - $purifierConfig = \HTMLPurifier_Config::create([ - 'Cache.DefinitionImpl' => null, // Disable caching - ]); - $this->purifier = new \HTMLPurifier($purifierConfig); - } - - /** - * @param string $text - * - * @return string - */ - public function toHtml($text) - { - $html = $this->parser->text($text); - $safeHtml = $this->purifier->purify($html); - - return $safeHtml; - } -} diff --git a/src/AppBundle/Utils/MomentFormatConverter.php b/src/AppBundle/Utils/MomentFormatConverter.php deleted file mode 100644 index cf2ff863..00000000 --- a/src/AppBundle/Utils/MomentFormatConverter.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace AppBundle\Utils; - -/** - * This class is used to convert PHP date format to moment.js format - * - * @author Yonel Ceruto - */ -class MomentFormatConverter -{ - /** - * This defines the mapping between PHP ICU date format (key) and moment.js date format (value) - * For ICU formats see http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax - * For Moment formats see http://momentjs.com/docs/#/displaying/format/ - * - * @var array - */ - private static $formatConvertRules = [ - // year - 'yyyy' => 'YYYY', 'yy' => 'YY', 'y' => 'YYYY', - // day - 'dd' => 'DD', 'd' => 'D', - // day of week - 'EE' => 'ddd', 'EEEEEE' => 'dd', - // timezone - 'ZZZZZ' => 'Z', 'ZZZ' => 'ZZ', - // letter 'T' - '\'T\'' => 'T', - ]; - - /** - * Returns associated moment.js format. - * - * @param string $format PHP Date format - * - * @return string - */ - public function convert($format) - { - return strtr($format, self::$formatConvertRules); - } -} diff --git a/src/AppBundle/Command/CreateUserCommand.php b/src/Command/CreateUserCommand.php similarity index 98% rename from src/AppBundle/Command/CreateUserCommand.php rename to src/Command/CreateUserCommand.php index 07700767..f4ecefd7 100644 --- a/src/AppBundle/Command/CreateUserCommand.php +++ b/src/Command/CreateUserCommand.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; -use AppBundle\Entity\User; +use App\Entity\User; use Doctrine\Bundle\DoctrineBundle\Registry; use Symfony\Bridge\Doctrine\RegistryInterface; use Symfony\Component\Console\Command\Command; diff --git a/src/AppBundle/Command/InstallCommand.php b/src/Command/InstallCommand.php similarity index 86% rename from src/AppBundle/Command/InstallCommand.php rename to src/Command/InstallCommand.php index 122b45e9..93f19e34 100644 --- a/src/AppBundle/Command/InstallCommand.php +++ b/src/Command/InstallCommand.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\ArrayInput; @@ -71,29 +71,29 @@ class InstallCommand extends Command $command = $this->getApplication()->find('doctrine:schema:create'); $command->run(new ArrayInput([]), $output); } catch (\Exception $ex) { - $io->error('Failed to create database schema: ' . $ex->getMessage()); + $io->error('Failed to create database schema ('.$ex->getCode().'): ' . $ex->getMessage()); return 2; } try { - $command = $this->getApplication()->find('avanzu:admin:initialize'); - $command->run(new ArrayInput($arguments), $output); + $command = $this->getApplication()->find('avanzu:admin:fetch-vendor'); + $command->run([], $output); } catch (\Exception $ex) { - $io->error('Failed to initialize avanzu theme: ' . $ex->getMessage()); + $io->error('Failed to fetch vendors for avanzu-admin-theme: ' . $ex->getMessage()); return 3; } + try { + $command = $this->getApplication()->find('avanzu:admin:initialize'); + $command->run(new ArrayInput(array_merge(['--web-dir' => 'public'], $arguments)), $output); + } catch (\Exception $ex) { + $io->error('Failed to initialize avanzu-admin-theme: ' . $ex->getMessage()); + return 4; + } try { $command = $this->getApplication()->find('assets:install'); $command->run(new ArrayInput($arguments), $output); } catch (\Exception $ex) { $io->error('Failed to install assets: ' . $ex->getMessage()); - return 4; - } - try { - $command = $this->getApplication()->find('avanzu:admin:fetch-vendor'); - $command->run(new ArrayInput([]), $output); - } catch (\Exception $ex) { - $io->error('Failed to fetch vendors for avanzu theme: ' . $ex->getMessage()); return 5; } } diff --git a/src/AppBundle/Command/DevResetCommand.php b/src/Command/ResetCommand.php similarity index 56% rename from src/AppBundle/Command/DevResetCommand.php rename to src/Command/ResetCommand.php index 6c1cb910..6735e5fe 100644 --- a/src/AppBundle/Command/DevResetCommand.php +++ b/src/Command/ResetCommand.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\ArrayInput; @@ -24,7 +24,7 @@ use Symfony\Component\Console\Style\SymfonyStyle; * * @author Kevin Papst */ -class DevResetCommand extends Command +class ResetCommand extends Command { /** @@ -33,7 +33,7 @@ class DevResetCommand extends Command protected function configure() { $this - ->setName('kimai:dev:reset') + ->setName('kimai:reset-dev') ->setDescription('Resets the dev environment') ->setHelp(<<isInteractive()) { - if (!$this->askConfirmation( - $input, - $output, - 'Careful, database will be purged. Do you want to continue y/N ?', - false - )) { - return; + if ($this->askConfirmation($input, $output, 'Do you want to create the database y/N ?')) { + try { + $command = $this->getApplication()->find('doctrine:database:create'); + $command->run(new ArrayInput([]), $output); + } catch (\Exception $ex) { + $io->error('Failed to create database: ' . $ex->getMessage()); + return 1; } } - try { - $command = $this->getApplication()->find('doctrine:database:create'); - $command->run(new ArrayInput([]), $output); - } catch (\Exception $ex) { - $io->error('Failed to create database: ' . $ex->getMessage()); - return 1; - } + if ($this->askConfirmation($input, $output, 'Do you want to drop and re-create the schema y/N ?')) { + try { + $command = $this->getApplication()->find('doctrine:schema:drop'); + $command->run(new ArrayInput(['--force' => true]), $output); + } catch (\Exception $ex) { + $io->error('Failed to drop database schema: ' . $ex->getMessage()); + return 2; + } - try { - $command = $this->getApplication()->find('doctrine:schema:drop'); - $command->run(new ArrayInput(['--force' => true]), $output); - } catch (\Exception $ex) { - $io->error('Failed to drop database schema: ' . $ex->getMessage()); - return 2; - } - - try { - $command = $this->getApplication()->find('doctrine:schema:create'); - $command->run(new ArrayInput([]), $output); - } catch (\Exception $ex) { - $io->error('Failed to create database schema: ' . $ex->getMessage()); - return 3; + try { + $command = $this->getApplication()->find('doctrine:schema:create'); + $command->run(new ArrayInput([]), $output); + } catch (\Exception $ex) { + $io->error('Failed to create database schema: ' . $ex->getMessage()); + return 3; + } } try { @@ -98,16 +91,14 @@ EOT return 4; } - if ($input->getOption('no-cache')) { - return 0; - } - - $command = $this->getApplication()->find('cache:clear'); - try { - $command->run(new ArrayInput([]), $output); - } catch (\Exception $ex) { - $io->error('Failed to clear cache: ' . $ex->getMessage()); - return 5; + if (!$input->getOption('no-cache')) { + $command = $this->getApplication()->find('cache:clear'); + try { + $command->run(new ArrayInput([]), $output); + } catch (\Exception $ex) { + $io->error('Failed to clear cache: ' . $ex->getMessage()); + return 5; + } } return 0; @@ -121,10 +112,14 @@ EOT * @param bool $default * @return bool */ - private function askConfirmation(InputInterface $input, OutputInterface $output, $question, $default) + private function askConfirmation(InputInterface $input, OutputInterface $output, $question, $default = false) { + if (!$input->isInteractive()) { + return true; + } + $questionHelper = $this->getHelperSet()->get('question'); - $question = new ConfirmationQuestion($question, $default); + $question = new ConfirmationQuestion('' . $question . '', $default); return $questionHelper->ask($input, $output, $question); } diff --git a/src/AppBundle/Command/RunCodeSnifferCommand.php b/src/Command/RunCodeSnifferCommand.php similarity index 87% rename from src/AppBundle/Command/RunCodeSnifferCommand.php rename to src/Command/RunCodeSnifferCommand.php index 59fefb13..6f9478a5 100644 --- a/src/AppBundle/Command/RunCodeSnifferCommand.php +++ b/src/Command/RunCodeSnifferCommand.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -30,11 +30,11 @@ class RunCodeSnifferCommand extends Command /** * RunCodeSnifferCommand constructor. - * @param $rootDir + * @param $projectDirectory */ - public function __construct($rootDir) + public function __construct($projectDirectory) { - $this->rootDir = realpath($rootDir . '/../'); + $this->rootDir = realpath($projectDirectory); parent::__construct(); } @@ -44,7 +44,7 @@ class RunCodeSnifferCommand extends Command protected function configure() { $this - ->setName('kimai:dev:phpcs') + ->setName('kimai:phpcs') ->setDescription('Run PHP_CodeSniffer to check for the projects coding style') ; } @@ -58,7 +58,7 @@ class RunCodeSnifferCommand extends Command $this->executeCodeSniffer($io, '/src'); $this->executeCodeSniffer($io, '/tests'); - $this->executeCodeSniffer($io, '/app/Resources/views'); + $this->executeCodeSniffer($io, '/templates'); } /** diff --git a/src/AppBundle/Command/RunIntegrationTestsCommand.php b/src/Command/RunIntegrationTestsCommand.php similarity index 93% rename from src/AppBundle/Command/RunIntegrationTestsCommand.php rename to src/Command/RunIntegrationTestsCommand.php index 37fe83dc..d1d529ed 100644 --- a/src/AppBundle/Command/RunIntegrationTestsCommand.php +++ b/src/Command/RunIntegrationTestsCommand.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -29,7 +29,7 @@ class RunIntegrationTestsCommand extends RunUnitTestsCommand protected function configure() { $this - ->setName('kimai:dev:test-integration') + ->setName('kimai:test-integration') ->setDescription('Run all integration tests') ->setHelp('This command will execute all integration tests with the annotation "@group integration".') ; diff --git a/src/AppBundle/Command/RunUnitTestsCommand.php b/src/Command/RunUnitTestsCommand.php similarity index 86% rename from src/AppBundle/Command/RunUnitTestsCommand.php rename to src/Command/RunUnitTestsCommand.php index 383d0031..f1a8b895 100644 --- a/src/AppBundle/Command/RunUnitTestsCommand.php +++ b/src/Command/RunUnitTestsCommand.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Command; +namespace App\Command; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; @@ -31,11 +31,11 @@ class RunUnitTestsCommand extends Command /** * RunCodeSnifferCommand constructor. - * @param $rootDir + * @param string $projectDirectory */ - public function __construct($rootDir) + public function __construct($projectDirectory) { - $this->rootDir = realpath($rootDir . '/../'); + $this->rootDir = realpath($projectDirectory); parent::__construct(); } @@ -45,7 +45,7 @@ class RunUnitTestsCommand extends Command protected function configure() { $this - ->setName('kimai:dev:test-unit') + ->setName('kimai:test-unit') ->setDescription('Run all unit tests') ->setHelp('This command will execute all unit tests. Skips all tests with "@group integration" annotation.') ; @@ -58,8 +58,7 @@ class RunUnitTestsCommand extends Command { $io = new SymfonyStyle($input, $output); - $this->executeTests($io, '/tests/AppBundle'); - $this->executeTests($io, '/tests/TimesheetBundle'); + $this->executeTests($io, '/tests'); } /** diff --git a/src/AppBundle/Controller/AbstractController.php b/src/Controller/AbstractController.php similarity index 98% rename from src/AppBundle/Controller/AbstractController.php rename to src/Controller/AbstractController.php index 2c90fbfb..41af0915 100644 --- a/src/AppBundle/Controller/AbstractController.php +++ b/src/Controller/AbstractController.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Controller; +namespace App\Controller; use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Bundle\FrameworkBundle\Controller\Controller; diff --git a/src/TimesheetBundle/Controller/ActivityController.php b/src/Controller/ActivityController.php similarity index 87% rename from src/TimesheetBundle/Controller/ActivityController.php rename to src/Controller/ActivityController.php index 43ac383d..c812a294 100644 --- a/src/TimesheetBundle/Controller/ActivityController.php +++ b/src/Controller/ActivityController.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller; +namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Repository\ActivityRepository; +use App\Entity\Activity; +use App\Repository\ActivityRepository; /** * Controller used to manage activity contents in the public part of the site. @@ -48,7 +48,7 @@ class ActivityController extends Controller $activeEntries = $this->getRepository()->getRecentActivities($user, new \DateTime('-30 days')); return $this->render( - 'TimesheetBundle:Navbar:recent-activities.html.twig', + 'navbar/recent-activities.html.twig', ['activities' => $activeEntries] ); } diff --git a/src/TimesheetBundle/Controller/Admin/ActivityController.php b/src/Controller/Admin/ActivityController.php similarity index 91% rename from src/TimesheetBundle/Controller/Admin/ActivityController.php rename to src/Controller/Admin/ActivityController.php index ae708523..36996095 100644 --- a/src/TimesheetBundle/Controller/Admin/ActivityController.php +++ b/src/Controller/Admin/ActivityController.php @@ -9,21 +9,21 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller\Admin; +namespace App\Controller\Admin; -use AppBundle\Controller\AbstractController; +use App\Controller\AbstractController; use Pagerfanta\Pagerfanta; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Entity\Activity; +use App\Entity\Activity; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Form\ActivityEditForm; -use TimesheetBundle\Form\Toolbar\ActivityToolbarForm; -use TimesheetBundle\Repository\Query\ActivityQuery; +use App\Entity\Customer; +use App\Entity\Project; +use App\Form\ActivityEditForm; +use App\Form\Toolbar\ActivityToolbarForm; +use App\Repository\Query\ActivityQuery; /** * Controller used to manage activities in the admin part of the site. @@ -37,7 +37,7 @@ class ActivityController extends AbstractController { /** - * @return \TimesheetBundle\Repository\ActivityRepository + * @return \App\Repository\ActivityRepository */ protected function getRepository() { @@ -99,7 +99,7 @@ class ActivityController extends AbstractController /* @var $entries Pagerfanta */ $entries = $this->getRepository()->findByQuery($query); - return $this->render('TimesheetBundle:admin:activity.html.twig', [ + return $this->render('admin/activity.html.twig', [ 'entries' => $entries, 'query' => $query, 'toolbarForm' => $this->getToolbarForm($query)->createView(), @@ -158,7 +158,7 @@ class ActivityController extends AbstractController } return $this->render( - 'TimesheetBundle:admin:activity_delete.html.twig', + 'admin/activity_delete.html.twig', [ 'activity' => $activity, 'stats' => $stats, @@ -189,7 +189,7 @@ class ActivityController extends AbstractController } return $this->render( - 'TimesheetBundle:admin:activity_edit.html.twig', + 'admin/activity_edit.html.twig', [ 'activity' => $activity, 'form' => $editForm->createView() diff --git a/src/TimesheetBundle/Controller/Admin/CustomerController.php b/src/Controller/Admin/CustomerController.php similarity index 91% rename from src/TimesheetBundle/Controller/Admin/CustomerController.php rename to src/Controller/Admin/CustomerController.php index d447748d..e8715f3d 100644 --- a/src/TimesheetBundle/Controller/Admin/CustomerController.php +++ b/src/Controller/Admin/CustomerController.php @@ -9,19 +9,19 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller\Admin; +namespace App\Controller\Admin; -use AppBundle\Controller\AbstractController; +use App\Controller\AbstractController; use Pagerfanta\Pagerfanta; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Entity\Customer; +use App\Entity\Customer; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; -use TimesheetBundle\Form\CustomerEditForm; -use TimesheetBundle\Form\Toolbar\CustomerToolbarForm; -use TimesheetBundle\Repository\Query\CustomerQuery; +use App\Form\CustomerEditForm; +use App\Form\Toolbar\CustomerToolbarForm; +use App\Repository\Query\CustomerQuery; /** * Controller used to manage activities in the admin part of the site. @@ -35,7 +35,7 @@ class CustomerController extends AbstractController { /** - * @return \TimesheetBundle\Repository\CustomerRepository + * @return \App\Repository\CustomerRepository */ protected function getRepository() { @@ -76,7 +76,7 @@ class CustomerController extends AbstractController /* @var $entries Pagerfanta */ $entries = $this->getRepository()->findByQuery($query); - return $this->render('TimesheetBundle:admin:customer.html.twig', [ + return $this->render('admin/customer.html.twig', [ 'entries' => $entries, 'query' => $query, 'toolbarForm' => $this->getToolbarForm($query)->createView(), @@ -123,7 +123,7 @@ class CustomerController extends AbstractController return $this->redirectToRoute('admin_customer', ['id' => $customer->getId()]); } - return $this->render('TimesheetBundle:admin:customer_edit.html.twig', [ + return $this->render('admin/customer_edit.html.twig', [ 'customer' => $customer, 'form' => $editForm->createView() ]); @@ -161,7 +161,7 @@ class CustomerController extends AbstractController return $this->redirectToRoute('admin_customer', ['id' => $customer->getId()]); } - return $this->render('TimesheetBundle:admin:customer_delete.html.twig', [ + return $this->render('admin/customer_delete.html.twig', [ 'customer' => $customer, 'stats' => $stats, 'form' => $deleteForm->createView(), diff --git a/src/TimesheetBundle/Controller/Admin/ProjectController.php b/src/Controller/Admin/ProjectController.php similarity index 91% rename from src/TimesheetBundle/Controller/Admin/ProjectController.php rename to src/Controller/Admin/ProjectController.php index 3fdcd643..1d718b65 100644 --- a/src/TimesheetBundle/Controller/Admin/ProjectController.php +++ b/src/Controller/Admin/ProjectController.php @@ -9,20 +9,20 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller\Admin; +namespace App\Controller\Admin; -use AppBundle\Controller\AbstractController; +use App\Controller\AbstractController; use Pagerfanta\Pagerfanta; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; +use App\Entity\Customer; +use App\Entity\Project; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; -use TimesheetBundle\Form\ProjectEditForm; -use TimesheetBundle\Form\Toolbar\ProjectToolbarForm; -use TimesheetBundle\Repository\Query\ProjectQuery; +use App\Form\ProjectEditForm; +use App\Form\Toolbar\ProjectToolbarForm; +use App\Repository\Query\ProjectQuery; /** * Controller used to manage projects in the admin part of the site. @@ -36,7 +36,7 @@ class ProjectController extends AbstractController { /** - * @return \TimesheetBundle\Repository\ProjectRepository + * @return \App\Repository\ProjectRepository */ protected function getRepository() { @@ -87,7 +87,7 @@ class ProjectController extends AbstractController /* @var $entries Pagerfanta */ $entries = $this->getDoctrine()->getRepository(Project::class)->findByQuery($query); - return $this->render('TimesheetBundle:admin:project.html.twig', [ + return $this->render('admin/project.html.twig', [ 'entries' => $entries, 'query' => $query, 'toolbarForm' => $this->getToolbarForm($query)->createView(), @@ -145,7 +145,7 @@ class ProjectController extends AbstractController return $this->redirectToRoute('admin_project', ['id' => $project->getId()]); } - return $this->render('TimesheetBundle:admin:project_delete.html.twig', [ + return $this->render('admin/project_delete.html.twig', [ 'project' => $project, 'stats' => $stats, 'form' => $deleteForm->createView(), @@ -173,7 +173,7 @@ class ProjectController extends AbstractController return $this->redirectToRoute('admin_project', ['id' => $project->getId()]); } - return $this->render('TimesheetBundle:admin:project_edit.html.twig', [ + return $this->render('admin/project_edit.html.twig', [ 'project' => $project, 'form' => $editForm->createView() ]); diff --git a/src/TimesheetBundle/Controller/Admin/TimesheetController.php b/src/Controller/Admin/TimesheetController.php similarity index 90% rename from src/TimesheetBundle/Controller/Admin/TimesheetController.php rename to src/Controller/Admin/TimesheetController.php index 4d959e9e..c519999c 100644 --- a/src/TimesheetBundle/Controller/Admin/TimesheetController.php +++ b/src/Controller/Admin/TimesheetController.php @@ -9,19 +9,19 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller\Admin; +namespace App\Controller\Admin; -use AppBundle\Controller\AbstractController; +use App\Controller\AbstractController; use Pagerfanta\Pagerfanta; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Controller\TimesheetControllerTrait; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Timesheet; +use App\Controller\TimesheetControllerTrait; +use App\Entity\Customer; +use App\Entity\Timesheet; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; -use TimesheetBundle\Form\TimesheetAdminForm; +use App\Form\TimesheetAdminForm; /** * Controller used for manage timesheet entries in the admin part of the site. @@ -55,7 +55,7 @@ class TimesheetController extends AbstractController /* @var $entries Pagerfanta */ $entries = $this->getRepository()->findByQuery($query); - return $this->render('TimesheetBundle:admin:timesheet.html.twig', [ + return $this->render('admin/timesheet.html.twig', [ 'entries' => $entries, 'page' => $page, 'query' => $query, @@ -91,7 +91,7 @@ class TimesheetController extends AbstractController */ public function editAction(Timesheet $entry, Request $request) { - return $this->edit($entry, $request, 'admin_timesheet_paginated', 'TimesheetBundle:admin:timesheet_edit.html.twig'); + return $this->edit($entry, $request, 'admin_timesheet_paginated', 'admin/timesheet_edit.html.twig'); } /** @@ -105,7 +105,7 @@ class TimesheetController extends AbstractController */ public function createAction(Request $request) { - return $this->create($request, 'admin_timesheet', 'TimesheetBundle:admin:timesheet_edit.html.twig'); + return $this->create($request, 'admin_timesheet', 'admin/timesheet_edit.html.twig'); } /** diff --git a/src/AppBundle/Controller/Admin/UserController.php b/src/Controller/Admin/UserController.php similarity index 94% rename from src/AppBundle/Controller/Admin/UserController.php rename to src/Controller/Admin/UserController.php index 6f8dc0f5..2256bd27 100644 --- a/src/AppBundle/Controller/Admin/UserController.php +++ b/src/Controller/Admin/UserController.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace AppBundle\Controller\Admin; +namespace App\Controller\Admin; -use AppBundle\Controller\AbstractController; -use AppBundle\Entity\User; -use AppBundle\Form\Toolbar\UserToolbarForm; -use AppBundle\Form\UserCreateType; -use AppBundle\Repository\Query\UserQuery; +use App\Controller\AbstractController; +use App\Entity\User; +use App\Form\Toolbar\UserToolbarForm; +use App\Form\UserCreateType; +use App\Repository\Query\UserQuery; use Pagerfanta\Pagerfanta; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; @@ -54,7 +54,7 @@ class UserController extends AbstractController ->setRole($userRole) ; - return $query ; + return $query; } /** diff --git a/src/AppBundle/Controller/DashboardController.php b/src/Controller/DashboardController.php similarity index 94% rename from src/AppBundle/Controller/DashboardController.php rename to src/Controller/DashboardController.php index b995eaf6..98962c62 100644 --- a/src/AppBundle/Controller/DashboardController.php +++ b/src/Controller/DashboardController.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace AppBundle\Controller; +namespace App\Controller; -use AppBundle\Entity\User; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\User; +use App\Entity\Activity; +use App\Entity\Customer; +use App\Entity\Project; +use App\Entity\Timesheet; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; @@ -41,7 +41,7 @@ class DashboardController extends Controller $userStats = $this->getDoctrine()->getRepository(User::class)->getGlobalStatistics(); - // FIXME move the other widgets to the TimesheetBundle, the inheritence is wrong as AppBundle + // FIXME move the other widgets to the Kimai, the inheritence is wrong as Kimai // shouldn't know about Timesheets $timesheetRepo = $this->getDoctrine()->getRepository(Timesheet::class); diff --git a/src/AppBundle/Controller/ProfileController.php b/src/Controller/ProfileController.php similarity index 96% rename from src/AppBundle/Controller/ProfileController.php rename to src/Controller/ProfileController.php index f36c2099..c91e2165 100644 --- a/src/AppBundle/Controller/ProfileController.php +++ b/src/Controller/ProfileController.php @@ -9,18 +9,18 @@ * file that was distributed with this source code. */ -namespace AppBundle\Controller; +namespace App\Controller; -use AppBundle\Entity\User; -use AppBundle\Form\UserEditType; -use AppBundle\Form\UserPasswordType; -use AppBundle\Form\UserRolesType; +use App\Entity\User; +use App\Form\UserEditType; +use App\Form\UserPasswordType; +use App\Form\UserRolesType; use Symfony\Component\Form\Form; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\Timesheet; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; -use TimesheetBundle\Repository\TimesheetRepository; +use App\Repository\TimesheetRepository; use Symfony\Component\HttpFoundation\Request; /** diff --git a/src/AppBundle/Controller/SecurityController.php b/src/Controller/SecurityController.php similarity index 57% rename from src/AppBundle/Controller/SecurityController.php rename to src/Controller/SecurityController.php index 4acfdf6e..f21be347 100644 --- a/src/AppBundle/Controller/SecurityController.php +++ b/src/Controller/SecurityController.php @@ -9,42 +9,38 @@ * file that was distributed with this source code. */ -namespace AppBundle\Controller; +namespace App\Controller; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; /** * Controller used to manage the application security. * See http://symfony.com/doc/current/cookbook/security/form_login_setup.html. */ -class SecurityController extends Controller +class SecurityController extends AbstractController { /** * @Route("/login", name="security_login") */ - public function loginAction() + public function login(AuthenticationUtils $helper): Response { - $helper = $this->get('security.authentication_utils'); - return $this->render('security/login.html.twig', [ 'last_username' => $helper->getLastUsername(), 'error' => $helper->getLastAuthenticationError(), ]); } - /** * This is the route the user can use to logout. * - * The route needs to exist! - * It could be configured in the routes.yml as well, but having it here in one place seemed to be the better was. - * - * The code will never be executed. Symfony will intercept this request and handle the logout automatically. - * See logout in app/config/security.yml + * But, this will never be executed. Symfony will intercept this first + * and handle the logout automatically. See logout in config/packages/security.yaml * * @Route("/logout", name="security_logout") */ - public function logoutAction() + public function logout(): void { throw new \Exception('This should never be reached!'); } diff --git a/src/TimesheetBundle/Controller/TimesheetController.php b/src/Controller/TimesheetController.php similarity index 91% rename from src/TimesheetBundle/Controller/TimesheetController.php rename to src/Controller/TimesheetController.php index 18e890bd..4f19a45c 100644 --- a/src/TimesheetBundle/Controller/TimesheetController.php +++ b/src/Controller/TimesheetController.php @@ -9,19 +9,19 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller; +namespace App\Controller; -use AppBundle\Controller\AbstractController; +use App\Controller\AbstractController; use Pagerfanta\Pagerfanta; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\Activity; +use App\Entity\Customer; +use App\Entity\Timesheet; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Form\TimesheetEditForm; +use App\Form\TimesheetEditForm; /** * Controller used to manage timesheet contents in the public part of the site. @@ -50,7 +50,7 @@ class TimesheetController extends AbstractController /* @var $entries Pagerfanta */ $entries = $this->getRepository()->findByQuery($query); - return $this->render('TimesheetBundle:timesheet:index.html.twig', [ + return $this->render('timesheet/index.html.twig', [ 'entries' => $entries, 'page' => $page, 'query' => $query, @@ -69,7 +69,7 @@ class TimesheetController extends AbstractController $activeEntries = $this->getRepository()->getActiveEntries($user); return $this->render( - 'TimesheetBundle:Navbar:active-entries.html.twig', + 'navbar/active-entries.html.twig', ['entries' => $activeEntries] ); } @@ -127,7 +127,7 @@ class TimesheetController extends AbstractController */ public function editAction(Timesheet $entry, Request $request) { - return $this->edit($entry, $request, 'timesheet_paginated', 'TimesheetBundle:timesheet:edit.html.twig'); + return $this->edit($entry, $request, 'timesheet_paginated', 'timesheet/edit.html.twig'); } /** @@ -141,7 +141,7 @@ class TimesheetController extends AbstractController */ public function createAction(Request $request) { - return $this->create($request, 'timesheet', 'TimesheetBundle:timesheet:edit.html.twig'); + return $this->create($request, 'timesheet', 'timesheet/edit.html.twig'); } /** diff --git a/src/TimesheetBundle/Controller/TimesheetControllerTrait.php b/src/Controller/TimesheetControllerTrait.php similarity index 94% rename from src/TimesheetBundle/Controller/TimesheetControllerTrait.php rename to src/Controller/TimesheetControllerTrait.php index 0368d79a..c3e925c7 100644 --- a/src/TimesheetBundle/Controller/TimesheetControllerTrait.php +++ b/src/Controller/TimesheetControllerTrait.php @@ -9,16 +9,16 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Controller; +namespace App\Controller; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\Activity; +use App\Entity\Customer; +use App\Entity\Project; +use App\Entity\Timesheet; use Symfony\Component\HttpFoundation\Request; -use TimesheetBundle\Form\Toolbar\TimesheetToolbarForm; -use TimesheetBundle\Repository\Query\TimesheetQuery; -use TimesheetBundle\Repository\TimesheetRepository; +use App\Form\Toolbar\TimesheetToolbarForm; +use App\Repository\Query\TimesheetQuery; +use App\Repository\TimesheetRepository; /** * Helper functions for Timesheet controller diff --git a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php b/src/DataFixtures/AppFixtures.php similarity index 89% rename from src/AppBundle/DataFixtures/ORM/LoadFixtures.php rename to src/DataFixtures/AppFixtures.php index 7c9ce4df..691a90c4 100644 --- a/src/AppBundle/DataFixtures/ORM/LoadFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -9,26 +9,32 @@ * file that was distributed with this source code. */ -namespace AppBundle\DataFixtures\ORM; +namespace App\DataFixtures; -use AppBundle\Entity\User; -use Doctrine\Common\DataFixtures\FixtureInterface; +use App\Entity\User; +use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Common\Persistence\ObjectManager; -use Symfony\Component\DependencyInjection\ContainerAwareInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; /** * Sample data to load in the database when running tests or for development * * @author Kevin Papst */ -class LoadFixtures implements FixtureInterface, ContainerAwareInterface +class AppFixtures extends Fixture { const DEFAULT_PASSWORD = 'kitten'; - /** @var ContainerInterface */ - private $container; + /** + * @var UserPasswordEncoderInterface + */ + private $encoder; + + public function __construct(UserPasswordEncoderInterface $encoder) + { + $this->encoder = $encoder; + } /** * {@inheritdoc} @@ -40,7 +46,7 @@ class LoadFixtures implements FixtureInterface, ContainerAwareInterface private function loadUsers(ObjectManager $manager) { - $passwordEncoder = $this->container->get('security.password_encoder'); + $passwordEncoder = $this->encoder; $claraCustomer = new User(); $claraCustomer @@ -53,6 +59,7 @@ class LoadFixtures implements FixtureInterface, ContainerAwareInterface ->setPassword($passwordEncoder->encodePassword($claraCustomer, self::DEFAULT_PASSWORD)) ; $manager->persist($claraCustomer); + var_dump($passwordEncoder->encodePassword($claraCustomer, self::DEFAULT_PASSWORD)); $johnUser = new User(); $johnUser @@ -119,14 +126,6 @@ class LoadFixtures implements FixtureInterface, ContainerAwareInterface $manager->flush(); } - /** - * {@inheritdoc} - */ - public function setContainer(ContainerInterface $container = null) - { - $this->container = $container; - } - protected function getPhrases() { return [ diff --git a/src/TimesheetBundle/DataFixtures/ORM/LoadFixtures.php b/src/DataFixtures/TimesheetFixtures.php similarity index 96% rename from src/TimesheetBundle/DataFixtures/ORM/LoadFixtures.php rename to src/DataFixtures/TimesheetFixtures.php index 0cd427cb..0628d913 100644 --- a/src/TimesheetBundle/DataFixtures/ORM/LoadFixtures.php +++ b/src/DataFixtures/TimesheetFixtures.php @@ -9,15 +9,14 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\DataFixtures\ORM; +namespace App\DataFixtures; -use AppBundle\Entity\User; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\User; +use App\Entity\Activity; +use App\Entity\Customer; +use App\Entity\Project; +use App\Entity\Timesheet; use Doctrine\Common\Persistence\ObjectManager; -use AppBundle\DataFixtures\ORM\LoadFixtures as AppBundleLoadFixtures; /** * Defines the sample data to load in the database when running the unit and @@ -27,7 +26,7 @@ use AppBundle\DataFixtures\ORM\LoadFixtures as AppBundleLoadFixtures; * * @author Kevin Papst */ -class LoadFixtures extends AppBundleLoadFixtures +class TimesheetFixtures extends AppFixtures { const AMOUNT_TIMESHEET = 5000; // timesheet entries total const RATE_MIN = 10; // minimum rate for one hour @@ -191,7 +190,7 @@ class LoadFixtures extends AppBundleLoadFixtures ->setAddress($this->getRandomLocation()) ->setComment($this->getRandomPhrase()) ->setVisible($visible) - ->setCountry('Germany') // TODO randomize country ? + ->setCountry('DE') // TODO randomize country ? ->setTimezone($allTimezones[rand(1, $amountTimezone)]); $manager->persist($entry); diff --git a/src/AppBundle/DependencyInjection/CompilerPass.php b/src/DependencyInjection/Compiler/DoctrineCompilerPass.php similarity index 90% rename from src/AppBundle/DependencyInjection/CompilerPass.php rename to src/DependencyInjection/Compiler/DoctrineCompilerPass.php index 1ad74861..9aa15708 100644 --- a/src/AppBundle/DependencyInjection/CompilerPass.php +++ b/src/DependencyInjection/Compiler/DoctrineCompilerPass.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\DependencyInjection; +namespace App\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; @@ -17,11 +17,11 @@ use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; use Symfony\Component\Yaml\Yaml; /** - * Class CompilerPass, dynamically loads additional doctrine functions for the configured database engine. + * Dynamically loads additional doctrine functions for the configured database engine. * * @author Kevin Papst */ -class CompilerPass implements CompilerPassInterface +class DoctrineCompilerPass implements CompilerPassInterface { /** diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php new file mode 100644 index 00000000..f34c28c4 --- /dev/null +++ b/src/DependencyInjection/Configuration.php @@ -0,0 +1,36 @@ +root('kimai'); + + // FIXME add kimai config + $rootNode + ->children() + ->arrayNode('timesheet') + ->children() + ->integerNode('round_record')->end() + ->end() + ->end() + ->end() + ; + + return $treeBuilder; + } +} diff --git a/src/AppBundle/DependencyInjection/AppExtension.php b/src/DependencyInjection/KimaiExtension.php similarity index 82% rename from src/AppBundle/DependencyInjection/AppExtension.php rename to src/DependencyInjection/KimaiExtension.php index bb47bcaf..c5876b56 100644 --- a/src/AppBundle/DependencyInjection/AppExtension.php +++ b/src/DependencyInjection/KimaiExtension.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\DependencyInjection; +namespace App\DependencyInjection; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; @@ -20,7 +20,7 @@ use \Doctrine\Common\ClassLoader; * * @author Kevin Papst */ -class AppExtension extends Extension +class KimaiExtension extends Extension { public function load(array $configs, ContainerBuilder $container) @@ -30,5 +30,8 @@ class AppExtension extends Extension $classLoader = new ClassLoader('DoctrineExtensions', $extensionsDir); $classLoader->register(); + + $kimaiConfig = new Configuration(); + $this->processConfiguration($kimaiConfig, $configs); } } diff --git a/src/AppBundle/Doctrine/TablePrefixSubscriber.php b/src/Doctrine/TablePrefixSubscriber.php similarity index 98% rename from src/AppBundle/Doctrine/TablePrefixSubscriber.php rename to src/Doctrine/TablePrefixSubscriber.php index d3fb30c1..ff3461dd 100644 --- a/src/AppBundle/Doctrine/TablePrefixSubscriber.php +++ b/src/Doctrine/TablePrefixSubscriber.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Doctrine; +namespace App\Doctrine; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; diff --git a/src/TimesheetBundle/Entity/Activity.php b/src/Entity/Activity.php similarity index 91% rename from src/TimesheetBundle/Entity/Activity.php rename to src/Entity/Activity.php index 7cfa6819..fe3876f4 100644 --- a/src/TimesheetBundle/Entity/Activity.php +++ b/src/Entity/Activity.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Entity; +namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; @@ -18,7 +18,7 @@ use Symfony\Component\Validator\Constraints as Assert; * Activity * * @ORM\Table(name="activities") - * @ORM\Entity(repositoryClass="TimesheetBundle\Repository\ActivityRepository") + * @ORM\Entity(repositoryClass="App\Repository\ActivityRepository") * * @author Kevin Papst */ @@ -37,7 +37,7 @@ class Activity /** * @var Project * - * @ORM\ManyToOne(targetEntity="TimesheetBundle\Entity\Project", inversedBy="activities") + * @ORM\ManyToOne(targetEntity="App\Entity\Project", inversedBy="activities") * @ORM\JoinColumn(onDelete="CASCADE") * @Assert\NotNull() */ @@ -69,7 +69,7 @@ class Activity /** * @var Timesheet[] * - * @ORM\OneToMany(targetEntity="TimesheetBundle\Entity\Timesheet", mappedBy="activity") + * @ORM\OneToMany(targetEntity="App\Entity\Timesheet", mappedBy="activity") */ private $timesheets; diff --git a/src/AppBundle/Entity/Configuration.php b/src/Entity/Configuration.php similarity index 97% rename from src/AppBundle/Entity/Configuration.php rename to src/Entity/Configuration.php index c6404b01..ef7e41db 100644 --- a/src/AppBundle/Entity/Configuration.php +++ b/src/Entity/Configuration.php @@ -1,6 +1,6 @@ */ @@ -54,7 +54,7 @@ class Customer /** * @var Project[] * - * @ORM\OneToMany(targetEntity="TimesheetBundle\Entity\Project", mappedBy="customer") + * @ORM\OneToMany(targetEntity="App\Entity\Project", mappedBy="customer") */ private $projects; diff --git a/src/TimesheetBundle/Entity/Project.php b/src/Entity/Project.php similarity index 92% rename from src/TimesheetBundle/Entity/Project.php rename to src/Entity/Project.php index 980d1b68..a87bc509 100644 --- a/src/TimesheetBundle/Entity/Project.php +++ b/src/Entity/Project.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Entity; +namespace App\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; @@ -18,7 +18,7 @@ use Symfony\Component\Validator\Constraints as Assert; * Project * * @ORM\Table(name="projects") - * @ORM\Entity(repositoryClass="TimesheetBundle\Repository\ProjectRepository") + * @ORM\Entity(repositoryClass="App\Repository\ProjectRepository") * * @author Kevin Papst */ @@ -37,7 +37,7 @@ class Project /** * @var Customer * - * @ORM\ManyToOne(targetEntity="TimesheetBundle\Entity\Customer", inversedBy="projects") + * @ORM\ManyToOne(targetEntity="App\Entity\Customer", inversedBy="projects") * @ORM\JoinColumn(onDelete="CASCADE") * @Assert\NotNull() */ @@ -77,7 +77,7 @@ class Project /** * @var Activity[] * - * @ORM\OneToMany(targetEntity="TimesheetBundle\Entity\Activity", mappedBy="project") + * @ORM\OneToMany(targetEntity="App\Entity\Activity", mappedBy="project") */ private $activities; diff --git a/src/TimesheetBundle/Entity/Timesheet.php b/src/Entity/Timesheet.php similarity index 93% rename from src/TimesheetBundle/Entity/Timesheet.php rename to src/Entity/Timesheet.php index cbe90729..f247bc17 100644 --- a/src/TimesheetBundle/Entity/Timesheet.php +++ b/src/Entity/Timesheet.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Entity; +namespace App\Entity; -use AppBundle\Entity\User; +use App\Entity\User; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Validator\Constraints as Assert; @@ -25,7 +25,7 @@ use Symfony\Component\Validator\Constraints as Assert; * @ORM\Index(columns={"activity_id"}) * } * ) - * @ORM\Entity(repositoryClass="TimesheetBundle\Repository\TimesheetRepository") + * @ORM\Entity(repositoryClass="App\Repository\TimesheetRepository") * @ORM\HasLifecycleCallbacks() * * @author Kevin Papst @@ -67,7 +67,7 @@ class Timesheet /** * @var User * - * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User") + * @ORM\ManyToOne(targetEntity="App\Entity\User") * @ORM\JoinColumn(name="user", referencedColumnName="id") * @Assert\NotNull() */ @@ -76,7 +76,7 @@ class Timesheet /** * @var Activity * - * @ORM\ManyToOne(targetEntity="TimesheetBundle\Entity\Activity", inversedBy="timesheets") + * @ORM\ManyToOne(targetEntity="App\Entity\Activity", inversedBy="timesheets") * @ORM\JoinColumn(onDelete="CASCADE") * @Assert\NotNull() */ diff --git a/src/AppBundle/Entity/User.php b/src/Entity/User.php similarity index 96% rename from src/AppBundle/Entity/User.php rename to src/Entity/User.php index c3730a54..cd8f9c87 100644 --- a/src/AppBundle/Entity/User.php +++ b/src/Entity/User.php @@ -1,8 +1,8 @@ add('projects', EntityType::class, [ 'label' => 'label.project', - 'class' => 'TimesheetBundle:Project', + 'class' => 'Kimai:Project', 'multiple' => true, 'expanded' => true ]) diff --git a/src/TimesheetBundle/Form/ProjectEditForm.php b/src/Form/ProjectEditForm.php similarity index 90% rename from src/TimesheetBundle/Form/ProjectEditForm.php rename to src/Form/ProjectEditForm.php index 6185d9dd..5fab9de6 100644 --- a/src/TimesheetBundle/Form/ProjectEditForm.php +++ b/src/Form/ProjectEditForm.php @@ -9,19 +9,19 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form; +namespace App\Form; -use AppBundle\Form\Type\VisibilityType; +use App\Form\Type\VisibilityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\MoneyType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Form\Type\CustomerType; -use TimesheetBundle\Repository\CustomerRepository; +use App\Entity\Customer; +use App\Entity\Project; +use App\Form\Type\CustomerType; +use App\Repository\CustomerRepository; /** * Defines the form used to edit Projects. diff --git a/src/TimesheetBundle/Form/TimesheetAdminForm.php b/src/Form/TimesheetAdminForm.php similarity index 92% rename from src/TimesheetBundle/Form/TimesheetAdminForm.php rename to src/Form/TimesheetAdminForm.php index 93471b8e..a49274e6 100644 --- a/src/TimesheetBundle/Form/TimesheetAdminForm.php +++ b/src/Form/TimesheetAdminForm.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form; +namespace App\Form; -use AppBundle\Form\Type\UserType; +use App\Form\Type\UserType; use Symfony\Component\Form\FormBuilderInterface; /** diff --git a/src/TimesheetBundle/Form/TimesheetEditForm.php b/src/Form/TimesheetEditForm.php similarity index 91% rename from src/TimesheetBundle/Form/TimesheetEditForm.php rename to src/Form/TimesheetEditForm.php index 0dad7cda..0be4e79b 100644 --- a/src/TimesheetBundle/Form/TimesheetEditForm.php +++ b/src/Form/TimesheetEditForm.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form; +namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\DateTimeType; @@ -17,10 +17,10 @@ use Symfony\Component\Form\Extension\Core\Type\MoneyType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Timesheet; -use TimesheetBundle\Form\Type\ActivityGroupedWithCustomerNameType; -use TimesheetBundle\Repository\ActivityRepository; +use App\Entity\Customer; +use App\Entity\Timesheet; +use App\Form\Type\ActivityGroupedWithCustomerNameType; +use App\Repository\ActivityRepository; /** * Defines the form used to manipulate Timesheet entries. diff --git a/src/AppBundle/Form/Toolbar/AbstractToolbarForm.php b/src/Form/Toolbar/AbstractToolbarForm.php similarity index 95% rename from src/AppBundle/Form/Toolbar/AbstractToolbarForm.php rename to src/Form/Toolbar/AbstractToolbarForm.php index 4c43c46e..c86b3971 100644 --- a/src/AppBundle/Form/Toolbar/AbstractToolbarForm.php +++ b/src/Form/Toolbar/AbstractToolbarForm.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Toolbar; +namespace App\Form\Toolbar; use Symfony\Component\Form\AbstractType; diff --git a/src/TimesheetBundle/Form/Toolbar/ActivityToolbarForm.php b/src/Form/Toolbar/ActivityToolbarForm.php similarity index 91% rename from src/TimesheetBundle/Form/Toolbar/ActivityToolbarForm.php rename to src/Form/Toolbar/ActivityToolbarForm.php index 218632fd..6ef123ba 100644 --- a/src/TimesheetBundle/Form/Toolbar/ActivityToolbarForm.php +++ b/src/Form/Toolbar/ActivityToolbarForm.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Toolbar; +namespace App\Form\Toolbar; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Form\Type\ProjectType; -use TimesheetBundle\Repository\Query\ActivityQuery; +use App\Form\Type\ProjectType; +use App\Repository\Query\ActivityQuery; /** * Defines the form used for filtering the activities. diff --git a/src/TimesheetBundle/Form/Toolbar/CustomerToolbarForm.php b/src/Form/Toolbar/CustomerToolbarForm.php similarity index 83% rename from src/TimesheetBundle/Form/Toolbar/CustomerToolbarForm.php rename to src/Form/Toolbar/CustomerToolbarForm.php index 5857ee54..6adafe90 100644 --- a/src/TimesheetBundle/Form/Toolbar/CustomerToolbarForm.php +++ b/src/Form/Toolbar/CustomerToolbarForm.php @@ -9,11 +9,11 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Toolbar; +namespace App\Form\Toolbar; -use AppBundle\Form\Toolbar\VisibilityToolbarForm; +use App\Form\Toolbar\VisibilityToolbarForm; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Repository\Query\CustomerQuery; +use App\Repository\Query\CustomerQuery; /** * Defines the form used for filtering the customer. diff --git a/src/AppBundle/Form/Toolbar/PagedToolbarForm.php b/src/Form/Toolbar/PagedToolbarForm.php similarity index 86% rename from src/AppBundle/Form/Toolbar/PagedToolbarForm.php rename to src/Form/Toolbar/PagedToolbarForm.php index 11ba8ca5..02213a19 100644 --- a/src/AppBundle/Form/Toolbar/PagedToolbarForm.php +++ b/src/Form/Toolbar/PagedToolbarForm.php @@ -9,11 +9,11 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Toolbar; +namespace App\Form\Toolbar; -use AppBundle\Form\Type\PageSizeType; +use App\Form\Type\PageSizeType; use Symfony\Component\Form\FormBuilderInterface; -use TimesheetBundle\Repository\Query\CustomerQuery; +use App\Repository\Query\CustomerQuery; /** * Defines the base form used for all toolbars with pageSizes. diff --git a/src/TimesheetBundle/Form/Toolbar/ProjectToolbarForm.php b/src/Form/Toolbar/ProjectToolbarForm.php similarity index 83% rename from src/TimesheetBundle/Form/Toolbar/ProjectToolbarForm.php rename to src/Form/Toolbar/ProjectToolbarForm.php index e0755608..a5d99f7e 100644 --- a/src/TimesheetBundle/Form/Toolbar/ProjectToolbarForm.php +++ b/src/Form/Toolbar/ProjectToolbarForm.php @@ -9,15 +9,15 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Toolbar; +namespace App\Form\Toolbar; -use AppBundle\Form\Toolbar\VisibilityToolbarForm; +use App\Form\Toolbar\VisibilityToolbarForm; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Form\Type\CustomerType; -use TimesheetBundle\Repository\CustomerRepository; -use TimesheetBundle\Repository\Query\CustomerQuery; -use TimesheetBundle\Repository\Query\ProjectQuery; +use App\Form\Type\CustomerType; +use App\Repository\CustomerRepository; +use App\Repository\Query\CustomerQuery; +use App\Repository\Query\ProjectQuery; /** * Defines the form used for filtering the projects. diff --git a/src/TimesheetBundle/Form/Toolbar/TimesheetToolbarForm.php b/src/Form/Toolbar/TimesheetToolbarForm.php similarity index 93% rename from src/TimesheetBundle/Form/Toolbar/TimesheetToolbarForm.php rename to src/Form/Toolbar/TimesheetToolbarForm.php index bf061fba..63a8b8b5 100644 --- a/src/TimesheetBundle/Form/Toolbar/TimesheetToolbarForm.php +++ b/src/Form/Toolbar/TimesheetToolbarForm.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Toolbar; +namespace App\Form\Toolbar; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Form\Type\ActivityType; -use TimesheetBundle\Repository\Query\TimesheetQuery; +use App\Form\Type\ActivityType; +use App\Repository\Query\TimesheetQuery; /** * Defines the form used for filtering the timesheet. diff --git a/src/AppBundle/Form/Toolbar/UserToolbarForm.php b/src/Form/Toolbar/UserToolbarForm.php similarity index 90% rename from src/AppBundle/Form/Toolbar/UserToolbarForm.php rename to src/Form/Toolbar/UserToolbarForm.php index 72fea3c6..28399a75 100644 --- a/src/AppBundle/Form/Toolbar/UserToolbarForm.php +++ b/src/Form/Toolbar/UserToolbarForm.php @@ -9,10 +9,10 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Toolbar; +namespace App\Form\Toolbar; -use AppBundle\Form\Type\UserRoleType; -use AppBundle\Repository\Query\UserQuery; +use App\Form\Type\UserRoleType; +use App\Repository\Query\UserQuery; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; diff --git a/src/AppBundle/Form/Toolbar/VisibilityToolbarForm.php b/src/Form/Toolbar/VisibilityToolbarForm.php similarity index 91% rename from src/AppBundle/Form/Toolbar/VisibilityToolbarForm.php rename to src/Form/Toolbar/VisibilityToolbarForm.php index 2493261f..20108072 100644 --- a/src/AppBundle/Form/Toolbar/VisibilityToolbarForm.php +++ b/src/Form/Toolbar/VisibilityToolbarForm.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Toolbar; +namespace App\Form\Toolbar; -use AppBundle\Form\Type\VisibilityType; +use App\Form\Type\VisibilityType; use Symfony\Component\Form\FormBuilderInterface; /** diff --git a/src/TimesheetBundle/Form/Type/ActivityGroupedWithCustomerNameType.php b/src/Form/Type/ActivityGroupedWithCustomerNameType.php similarity index 92% rename from src/TimesheetBundle/Form/Type/ActivityGroupedWithCustomerNameType.php rename to src/Form/Type/ActivityGroupedWithCustomerNameType.php index e66948a2..8abcdcd1 100644 --- a/src/TimesheetBundle/Form/Type/ActivityGroupedWithCustomerNameType.php +++ b/src/Form/Type/ActivityGroupedWithCustomerNameType.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Type; +namespace App\Form\Type; -use TimesheetBundle\Entity\Activity; +use App\Entity\Activity; /** * Custom form field type to select an activity which are grouped by their Projects, preceeded by their customer names. diff --git a/src/TimesheetBundle/Form/Type/ActivityType.php b/src/Form/Type/ActivityType.php similarity index 89% rename from src/TimesheetBundle/Form/Type/ActivityType.php rename to src/Form/Type/ActivityType.php index 46e69e05..43d2fc09 100644 --- a/src/TimesheetBundle/Form/Type/ActivityType.php +++ b/src/Form/Type/ActivityType.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Type; +namespace App\Form\Type; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Repository\ActivityRepository; +use App\Entity\Activity; +use App\Repository\ActivityRepository; /** * Custom form field type to select an activity. @@ -48,7 +48,7 @@ class ActivityType extends AbstractType { $resolver->setDefaults([ 'label' => 'label.activity', - 'class' => 'TimesheetBundle:Activity', + 'class' => 'Kimai:Activity', 'choice_label' => [$this, 'choiceLabel'], 'group_by' => [$this, 'groupBy'], 'query_builder' => function (ActivityRepository $repo) { diff --git a/src/TimesheetBundle/Form/Type/CustomerType.php b/src/Form/Type/CustomerType.php similarity index 84% rename from src/TimesheetBundle/Form/Type/CustomerType.php rename to src/Form/Type/CustomerType.php index 8e4f800b..53c921d7 100644 --- a/src/TimesheetBundle/Form/Type/CustomerType.php +++ b/src/Form/Type/CustomerType.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Type; +namespace App\Form\Type; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Repository\CustomerRepository; -use TimesheetBundle\Repository\Query\CustomerQuery; +use App\Repository\CustomerRepository; +use App\Repository\Query\CustomerQuery; /** * Custom form field type to select a customer. @@ -32,7 +32,7 @@ class CustomerType extends AbstractType { $resolver->setDefaults([ 'label' => 'label.customer', - 'class' => 'TimesheetBundle:Customer', + 'class' => 'Kimai:Customer', 'choice_label' => 'name', 'query_builder' => function (CustomerRepository $repo) { return $repo->builderForEntityType(null); diff --git a/src/AppBundle/Form/Type/DateTimePickerType.php b/src/Form/Type/DateTimePickerType.php similarity index 95% rename from src/AppBundle/Form/Type/DateTimePickerType.php rename to src/Form/Type/DateTimePickerType.php index fd3a3c40..809ee076 100644 --- a/src/AppBundle/Form/Type/DateTimePickerType.php +++ b/src/Form/Type/DateTimePickerType.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; -use AppBundle\Utils\MomentFormatConverter; +use App\Utils\MomentFormatConverter; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\DateTimeType; use Symfony\Component\Form\FormInterface; diff --git a/src/AppBundle/Form/Type/LanguageType.php b/src/Form/Type/LanguageType.php similarity index 96% rename from src/AppBundle/Form/Type/LanguageType.php rename to src/Form/Type/LanguageType.php index 54bb176b..4b3d3429 100644 --- a/src/AppBundle/Form/Type/LanguageType.php +++ b/src/Form/Type/LanguageType.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; diff --git a/src/AppBundle/Form/Type/PageSizeType.php b/src/Form/Type/PageSizeType.php similarity index 96% rename from src/AppBundle/Form/Type/PageSizeType.php rename to src/Form/Type/PageSizeType.php index 333f244b..1730d568 100644 --- a/src/AppBundle/Form/Type/PageSizeType.php +++ b/src/Form/Type/PageSizeType.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; diff --git a/src/TimesheetBundle/Form/Type/ProjectType.php b/src/Form/Type/ProjectType.php similarity index 83% rename from src/TimesheetBundle/Form/Type/ProjectType.php rename to src/Form/Type/ProjectType.php index 9106f924..ee5b0904 100644 --- a/src/TimesheetBundle/Form/Type/ProjectType.php +++ b/src/Form/Type/ProjectType.php @@ -9,14 +9,14 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Form\Type; +namespace App\Form\Type; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\OptionsResolver; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Repository\ProjectRepository; -use TimesheetBundle\Repository\Query\ProjectQuery; +use App\Entity\Project; +use App\Repository\ProjectRepository; +use App\Repository\Query\ProjectQuery; /** * Custom form field type to select a project. @@ -33,7 +33,7 @@ class ProjectType extends AbstractType { $resolver->setDefaults([ 'label' => 'label.project', - 'class' => 'TimesheetBundle:Project', + 'class' => 'Kimai:Project', 'choice_label' => 'name', 'group_by' => function (Project $project, $key, $index) { return $project->getCustomer()->getName(); diff --git a/src/AppBundle/Form/Type/UserRoleType.php b/src/Form/Type/UserRoleType.php similarity index 94% rename from src/AppBundle/Form/Type/UserRoleType.php rename to src/Form/Type/UserRoleType.php index 4f12a02c..84c6cf6b 100644 --- a/src/AppBundle/Form/Type/UserRoleType.php +++ b/src/Form/Type/UserRoleType.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; @@ -32,7 +32,7 @@ class UserRoleType extends AbstractType * UserRolesType constructor. * @param string[] $roles */ - public function __construct(array $roles) + public function __construct(array $roles = []) { $this->roles = $roles; } diff --git a/src/AppBundle/Form/Type/UserType.php b/src/Form/Type/UserType.php similarity index 91% rename from src/AppBundle/Form/Type/UserType.php rename to src/Form/Type/UserType.php index a3dcce77..3da6df10 100644 --- a/src/AppBundle/Form/Type/UserType.php +++ b/src/Form/Type/UserType.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; -use AppBundle\Entity\User; +use App\Entity\User; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -30,7 +30,7 @@ class UserType extends AbstractType public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ - 'class' => 'AppBundle:User', + 'class' => 'Kimai:User', 'choice_label' => function (User $user) { if (!empty($user->getAlias())) { return $user->getAlias() . ' (' . $user->getUsername() . ')'; diff --git a/src/AppBundle/Form/Type/VisibilityType.php b/src/Form/Type/VisibilityType.php similarity index 81% rename from src/AppBundle/Form/Type/VisibilityType.php rename to src/Form/Type/VisibilityType.php index 06dcce8e..11dc4998 100644 --- a/src/AppBundle/Form/Type/VisibilityType.php +++ b/src/Form/Type/VisibilityType.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; -use AppBundle\Repository\Query\VisibilityInterface; +use App\Repository\Query\VisibilityQuery; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -32,8 +32,8 @@ class VisibilityType extends AbstractType $resolver->setDefaults([ 'label' => 'label.visible', 'choices' => [ - 'yes' => VisibilityInterface::SHOW_VISIBLE, - 'no' => VisibilityInterface::SHOW_HIDDEN, + 'yes' => VisibilityQuery::SHOW_VISIBLE, + 'no' => VisibilityQuery::SHOW_HIDDEN, ], ]); } diff --git a/src/AppBundle/Form/Type/YesNoType.php b/src/Form/Type/YesNoType.php similarity index 96% rename from src/AppBundle/Form/Type/YesNoType.php rename to src/Form/Type/YesNoType.php index d649ec50..13bcbd20 100644 --- a/src/AppBundle/Form/Type/YesNoType.php +++ b/src/Form/Type/YesNoType.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form\Type; +namespace App\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; diff --git a/src/AppBundle/Form/UserCreateType.php b/src/Form/UserCreateType.php similarity index 95% rename from src/AppBundle/Form/UserCreateType.php rename to src/Form/UserCreateType.php index 236a58f9..3faf4d13 100644 --- a/src/AppBundle/Form/UserCreateType.php +++ b/src/Form/UserCreateType.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form; +namespace App\Form; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\RepeatedType; @@ -50,7 +50,7 @@ class UserCreateType extends UserEditType public function __configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ - 'class' => 'AppBundle:User', + 'class' => 'Kimai:User', ]); } } diff --git a/src/AppBundle/Form/UserEditType.php b/src/Form/UserEditType.php similarity index 94% rename from src/AppBundle/Form/UserEditType.php rename to src/Form/UserEditType.php index f43a5592..34d25775 100644 --- a/src/AppBundle/Form/UserEditType.php +++ b/src/Form/UserEditType.php @@ -9,11 +9,11 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form; +namespace App\Form; -use AppBundle\Entity\User; -use AppBundle\Form\Type\LanguageType; -use AppBundle\Form\Type\YesNoType; +use App\Entity\User; +use App\Form\Type\LanguageType; +use App\Form\Type\YesNoType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; diff --git a/src/AppBundle/Form/UserPasswordType.php b/src/Form/UserPasswordType.php similarity index 96% rename from src/AppBundle/Form/UserPasswordType.php rename to src/Form/UserPasswordType.php index 3046ed97..657f72a4 100644 --- a/src/AppBundle/Form/UserPasswordType.php +++ b/src/Form/UserPasswordType.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form; +namespace App\Form; -use AppBundle\Entity\User; +use App\Entity\User; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\RepeatedType; diff --git a/src/AppBundle/Form/UserRolesType.php b/src/Form/UserRolesType.php similarity index 92% rename from src/AppBundle/Form/UserRolesType.php rename to src/Form/UserRolesType.php index 0e12bdf0..d3018f05 100644 --- a/src/AppBundle/Form/UserRolesType.php +++ b/src/Form/UserRolesType.php @@ -9,10 +9,10 @@ * file that was distributed with this source code. */ -namespace AppBundle\Form; +namespace App\Form; -use AppBundle\Entity\User; -use AppBundle\Form\Type\UserRoleType; +use App\Entity\User; +use App\Form\Type\UserRoleType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 00000000..4585c15a --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,68 @@ +getProjectDir().'/var/cache/'.$this->environment; + } + + public function getLogDir() + { + return $this->getProjectDir().'/var/log'; + } + + public function registerBundles() + { + $contents = require $this->getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if (isset($envs['all']) || isset($envs[$this->environment])) { + yield new $class(); + } + } + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader) + { + $container->setParameter('container.autowiring.strict_mode', true); + $container->setParameter('container.dumper.inline_class_loader', true); + $confDir = $this->getProjectDir().'/config'; + $loader->load($confDir.'/packages/*'.self::CONFIG_EXTS, 'glob'); + if (is_dir($confDir.'/packages/'.$this->environment)) { + $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'); + +// TODO active doctrine-extensions +// composer require beberlei/DoctrineExtensions +// $container->addCompilerPass(new DoctrineCompilerPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, -1000); + + } + + protected function configureRoutes(RouteCollectionBuilder $routes) + { + $confDir = $this->getProjectDir().'/config'; + if (is_dir($confDir.'/routes/')) { + $routes->import($confDir.'/routes/*'.self::CONFIG_EXTS, '/', 'glob'); + } + if (is_dir($confDir.'/routes/'.$this->environment)) { + $routes->import($confDir.'/routes/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); + } + $routes->import($confDir.'/routes'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/src/TimesheetBundle/Model/ActivityStatistic.php b/src/Model/ActivityStatistic.php similarity index 98% rename from src/TimesheetBundle/Model/ActivityStatistic.php rename to src/Model/ActivityStatistic.php index 9bcdda96..ffb75731 100644 --- a/src/TimesheetBundle/Model/ActivityStatistic.php +++ b/src/Model/ActivityStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model; +namespace App\Model; /** * Activity statistics diff --git a/src/TimesheetBundle/Model/CustomerStatistic.php b/src/Model/CustomerStatistic.php similarity index 98% rename from src/TimesheetBundle/Model/CustomerStatistic.php rename to src/Model/CustomerStatistic.php index bb98ee9b..bac78688 100644 --- a/src/TimesheetBundle/Model/CustomerStatistic.php +++ b/src/Model/CustomerStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model; +namespace App\Model; /** * Customer statistics diff --git a/src/TimesheetBundle/Model/ProjectStatistic.php b/src/Model/ProjectStatistic.php similarity index 98% rename from src/TimesheetBundle/Model/ProjectStatistic.php rename to src/Model/ProjectStatistic.php index 14e71378..a20b6f8e 100644 --- a/src/TimesheetBundle/Model/ProjectStatistic.php +++ b/src/Model/ProjectStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model; +namespace App\Model; /** * Project statistics diff --git a/src/TimesheetBundle/Model/Statistic/Month.php b/src/Model/Statistic/Month.php similarity index 97% rename from src/TimesheetBundle/Model/Statistic/Month.php rename to src/Model/Statistic/Month.php index 3f862358..a7a542b4 100644 --- a/src/TimesheetBundle/Model/Statistic/Month.php +++ b/src/Model/Statistic/Month.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model\Statistic; +namespace App\Model\Statistic; /** * Yearly statistics diff --git a/src/TimesheetBundle/Model/Statistic/Year.php b/src/Model/Statistic/Year.php similarity index 96% rename from src/TimesheetBundle/Model/Statistic/Year.php rename to src/Model/Statistic/Year.php index 05551ca2..92817c93 100644 --- a/src/TimesheetBundle/Model/Statistic/Year.php +++ b/src/Model/Statistic/Year.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model\Statistic; +namespace App\Model\Statistic; /** * Yearly statistics diff --git a/src/TimesheetBundle/Model/TimesheetGlobalStatistic.php b/src/Model/TimesheetGlobalStatistic.php similarity index 97% rename from src/TimesheetBundle/Model/TimesheetGlobalStatistic.php rename to src/Model/TimesheetGlobalStatistic.php index 60a76230..ea21897a 100644 --- a/src/TimesheetBundle/Model/TimesheetGlobalStatistic.php +++ b/src/Model/TimesheetGlobalStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model; +namespace App\Model; /** * Timesheet statistics for all user. diff --git a/src/TimesheetBundle/Model/TimesheetStatistic.php b/src/Model/TimesheetStatistic.php similarity index 98% rename from src/TimesheetBundle/Model/TimesheetStatistic.php rename to src/Model/TimesheetStatistic.php index 690666ec..24ea50aa 100644 --- a/src/TimesheetBundle/Model/TimesheetStatistic.php +++ b/src/Model/TimesheetStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Model; +namespace App\Model; use \DateTime; diff --git a/src/AppBundle/Model/UserStatistic.php b/src/Model/UserStatistic.php similarity index 96% rename from src/AppBundle/Model/UserStatistic.php rename to src/Model/UserStatistic.php index 6b3fa2e3..dc97112c 100644 --- a/src/AppBundle/Model/UserStatistic.php +++ b/src/Model/UserStatistic.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Model; +namespace App\Model; /** * User statistics diff --git a/src/AppBundle/Repository/AbstractRepository.php b/src/Repository/AbstractRepository.php similarity index 94% rename from src/AppBundle/Repository/AbstractRepository.php rename to src/Repository/AbstractRepository.php index 0057fbee..e70afc74 100644 --- a/src/AppBundle/Repository/AbstractRepository.php +++ b/src/Repository/AbstractRepository.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Repository; +namespace App\Repository; -use AppBundle\Repository\Query\BaseQuery; +use App\Repository\Query\BaseQuery; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; diff --git a/src/TimesheetBundle/Repository/ActivityRepository.php b/src/Repository/ActivityRepository.php similarity index 90% rename from src/TimesheetBundle/Repository/ActivityRepository.php rename to src/Repository/ActivityRepository.php index 08c2e01c..2b7af284 100644 --- a/src/TimesheetBundle/Repository/ActivityRepository.php +++ b/src/Repository/ActivityRepository.php @@ -9,15 +9,14 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository; +namespace App\Repository; -use AppBundle\Entity\User; -use AppBundle\Repository\AbstractRepository; +use App\Entity\User; use Doctrine\ORM\Query; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Timesheet; -use TimesheetBundle\Model\ActivityStatistic; -use TimesheetBundle\Repository\Query\ActivityQuery; +use App\Entity\Activity; +use App\Entity\Timesheet; +use App\Model\ActivityStatistic; +use App\Repository\Query\ActivityQuery; /** * Class ActivityRepository @@ -46,7 +45,7 @@ class ActivityRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('t', 'a', 'p', 'c') - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->join('t.activity', 'a') ->join('a.project', 'p') ->join('p.customer', 'c') @@ -89,7 +88,7 @@ class ActivityRepository extends AbstractRepository public function getGlobalStatistics() { $countAll = $this->getEntityManager() - ->createQuery('SELECT COUNT(a.id) FROM TimesheetBundle:Activity a') + ->createQuery('SELECT COUNT(a.id) FROM '.Activity::class.' a') ->getSingleScalarResult(); $stats = new ActivityStatistic(); @@ -109,7 +108,7 @@ class ActivityRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('COUNT(t.id) as totalRecords', 'SUM(t.duration) as totalDuration') - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->where('t.activity = :activity') ; @@ -151,7 +150,7 @@ class ActivityRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('a', 'p', 'c') - ->from('TimesheetBundle:Activity', 'a') + ->from(Activity::class, 'a') ->join('a.project', 'p') ->join('p.customer', 'c') ->orderBy('a.' . $query->getOrderBy(), $query->getOrder()); diff --git a/src/TimesheetBundle/Repository/CustomerRepository.php b/src/Repository/CustomerRepository.php similarity index 86% rename from src/TimesheetBundle/Repository/CustomerRepository.php rename to src/Repository/CustomerRepository.php index 5b4ae0f3..aed56640 100644 --- a/src/TimesheetBundle/Repository/CustomerRepository.php +++ b/src/Repository/CustomerRepository.php @@ -9,13 +9,15 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository; +namespace App\Repository; -use AppBundle\Repository\AbstractRepository; +use App\Entity\Activity; +use App\Entity\Project; +use App\Entity\Timesheet; use Doctrine\ORM\Query; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Model\CustomerStatistic; -use TimesheetBundle\Repository\Query\CustomerQuery; +use App\Entity\Customer; +use App\Model\CustomerStatistic; +use App\Repository\Query\CustomerQuery; /** * Class CustomerRepository @@ -43,7 +45,7 @@ class CustomerRepository extends AbstractRepository public function getGlobalStatistics() { $countAll = $this->getEntityManager() - ->createQuery('SELECT COUNT(c.id) FROM TimesheetBundle:Customer c') + ->createQuery('SELECT COUNT(c.id) FROM '.Customer::class.' c') ->getSingleScalarResult(); $stats = new CustomerStatistic(); @@ -62,10 +64,10 @@ class CustomerRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('COUNT(t.id) as recordAmount', 'SUM(t.duration) as recordDuration, COUNT(DISTINCT(a.id)) as activityAmount, COUNT(DISTINCT(p.id)) as projectAmount') - ->from('TimesheetBundle:Timesheet', 't') - ->join('TimesheetBundle:Activity', 'a') - ->join('TimesheetBundle:Project', 'p') - ->join('TimesheetBundle:Customer', 'c') + ->from(Timesheet::class, 't') + ->join(Activity::class, 'a') + ->join(Project::class, 'p') + ->join(Customer::class, 'c') ->andWhere('t.activity = a.id') ->andWhere('a.project = p.id') ->andWhere('p.customer = c.id') @@ -114,7 +116,7 @@ class CustomerRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('c') - ->from('TimesheetBundle:Customer', 'c') + ->from(Customer::class, 'c') ->orderBy('c.' . $query->getOrderBy(), $query->getOrder()); if ($query->getVisibility() == CustomerQuery::SHOW_VISIBLE) { diff --git a/src/TimesheetBundle/Repository/ProjectRepository.php b/src/Repository/ProjectRepository.php similarity index 89% rename from src/TimesheetBundle/Repository/ProjectRepository.php rename to src/Repository/ProjectRepository.php index c11a583f..63107ca6 100644 --- a/src/TimesheetBundle/Repository/ProjectRepository.php +++ b/src/Repository/ProjectRepository.php @@ -9,13 +9,14 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository; +namespace App\Repository; -use AppBundle\Repository\AbstractRepository; +use App\Entity\Activity; +use App\Entity\Timesheet; use Doctrine\ORM\Query; -use TimesheetBundle\Entity\Project; -use TimesheetBundle\Model\ProjectStatistic; -use TimesheetBundle\Repository\Query\ProjectQuery; +use App\Entity\Project; +use App\Model\ProjectStatistic; +use App\Repository\Query\ProjectQuery; /** * Class ProjectRepository @@ -43,7 +44,7 @@ class ProjectRepository extends AbstractRepository public function getGlobalStatistics() { $countAll = $this->getEntityManager() - ->createQuery('SELECT COUNT(p.id) FROM TimesheetBundle:Project p') + ->createQuery('SELECT COUNT(p.id) FROM '.Project::class.' p') ->getSingleScalarResult(); $stats = new ProjectStatistic(); @@ -62,8 +63,8 @@ class ProjectRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('COUNT(t.id) as recordAmount', 'SUM(t.duration) as recordDuration, COUNT(DISTINCT(a.id)) as activityAmount') - ->from('TimesheetBundle:Activity', 'a') - ->join('TimesheetBundle:Timesheet', 't') + ->from(Activity::class, 'a') + ->join(Timesheet::class, 't') ->where('a.project = :project') ->andWhere('t.activity = a.id') ; @@ -109,7 +110,7 @@ class ProjectRepository extends AbstractRepository // if we join activities, the maxperpage limit will limit the list // due to the raised amount of rows by projects * activities $qb->select('p', 'c') - ->from('TimesheetBundle:Project', 'p') + ->from(Project::class, 'p') ->join('p.customer', 'c') ->orderBy('p.' . $query->getOrderBy(), $query->getOrder()); diff --git a/src/TimesheetBundle/Repository/Query/ActivityQuery.php b/src/Repository/Query/ActivityQuery.php similarity index 75% rename from src/TimesheetBundle/Repository/Query/ActivityQuery.php rename to src/Repository/Query/ActivityQuery.php index a4e62964..bdd388b4 100644 --- a/src/TimesheetBundle/Repository/Query/ActivityQuery.php +++ b/src/Repository/Query/ActivityQuery.php @@ -9,22 +9,18 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository\Query; +namespace App\Repository\Query; -use AppBundle\Repository\Query\BaseQuery; -use AppBundle\Repository\Query\VisibilityInterface; -use AppBundle\Repository\Query\VisibilityTrait; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; +use App\Entity\Customer; +use App\Entity\Project; /** * Can be used for advanced queries with the: ActivityRepository * * @author Kevin Papst */ -class ActivityQuery extends BaseQuery implements VisibilityInterface +class ActivityQuery extends VisibilityQuery { - use VisibilityTrait; /** * @var Project diff --git a/src/AppBundle/Repository/Query/BaseQuery.php b/src/Repository/Query/BaseQuery.php similarity index 98% rename from src/AppBundle/Repository/Query/BaseQuery.php rename to src/Repository/Query/BaseQuery.php index dfb276db..02c6f19b 100644 --- a/src/AppBundle/Repository/Query/BaseQuery.php +++ b/src/Repository/Query/BaseQuery.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Repository\Query; +namespace App\Repository\Query; /** * Base class for advanced Repository queries. diff --git a/app/AppCache.php b/src/Repository/Query/CustomerQuery.php similarity index 67% rename from app/AppCache.php rename to src/Repository/Query/CustomerQuery.php index 2ac3ac89..95943be2 100644 --- a/app/AppCache.php +++ b/src/Repository/Query/CustomerQuery.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache; +namespace App\Repository\Query; /** - * Class AppCache + * Can be used for advanced queries with the: CustomerRepository * * @author Kevin Papst */ -class AppCache extends HttpCache +class CustomerQuery extends VisibilityQuery { } diff --git a/src/TimesheetBundle/Repository/Query/ProjectQuery.php b/src/Repository/Query/ProjectQuery.php similarity index 70% rename from src/TimesheetBundle/Repository/Query/ProjectQuery.php rename to src/Repository/Query/ProjectQuery.php index 9f2f9dbd..f36443a4 100644 --- a/src/TimesheetBundle/Repository/Query/ProjectQuery.php +++ b/src/Repository/Query/ProjectQuery.php @@ -9,21 +9,17 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository\Query; +namespace App\Repository\Query; -use AppBundle\Repository\Query\BaseQuery; -use AppBundle\Repository\Query\VisibilityInterface; -use AppBundle\Repository\Query\VisibilityTrait; -use TimesheetBundle\Entity\Customer; +use App\Entity\Customer; /** * Can be used for advanced queries with the: ProjectRepository * * @author Kevin Papst */ -class ProjectQuery extends BaseQuery implements VisibilityInterface +class ProjectQuery extends VisibilityQuery { - use VisibilityTrait; /** * @var Customer diff --git a/src/TimesheetBundle/Repository/Query/TimesheetQuery.php b/src/Repository/Query/TimesheetQuery.php similarity index 92% rename from src/TimesheetBundle/Repository/Query/TimesheetQuery.php rename to src/Repository/Query/TimesheetQuery.php index 71546a54..24dd08e6 100644 --- a/src/TimesheetBundle/Repository/Query/TimesheetQuery.php +++ b/src/Repository/Query/TimesheetQuery.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository\Query; +namespace App\Repository\Query; -use AppBundle\Entity\User; -use AppBundle\Repository\Query\BaseQuery; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Project; +use App\Entity\User; +use App\Repository\Query\BaseQuery; +use App\Entity\Activity; +use App\Entity\Customer; +use App\Entity\Project; /** * Can be used for advanced timesheet repository queries. diff --git a/src/AppBundle/Repository/Query/UserQuery.php b/src/Repository/Query/UserQuery.php similarity index 85% rename from src/AppBundle/Repository/Query/UserQuery.php rename to src/Repository/Query/UserQuery.php index 48dd2348..784bfa21 100644 --- a/src/AppBundle/Repository/Query/UserQuery.php +++ b/src/Repository/Query/UserQuery.php @@ -9,16 +9,15 @@ * file that was distributed with this source code. */ -namespace AppBundle\Repository\Query; +namespace App\Repository\Query; /** * Can be used for advanced queries with the: UserRepository * * @author Kevin Papst */ -class UserQuery extends BaseQuery implements VisibilityInterface +class UserQuery extends VisibilityQuery { - use VisibilityTrait; /** * @var string diff --git a/src/AppBundle/Repository/Query/VisibilityTrait.php b/src/Repository/Query/VisibilityQuery.php similarity index 77% rename from src/AppBundle/Repository/Query/VisibilityTrait.php rename to src/Repository/Query/VisibilityQuery.php index 6baf3d64..ba412198 100644 --- a/src/AppBundle/Repository/Query/VisibilityTrait.php +++ b/src/Repository/Query/VisibilityQuery.php @@ -9,15 +9,20 @@ * file that was distributed with this source code. */ -namespace AppBundle\Repository\Query; +namespace App\Repository\Query; /** - * Can be used for advanced queries with the: UserRepository + * Query class for Repositories with a visibility field. * * @author Kevin Papst */ -trait VisibilityTrait +class VisibilityQuery extends BaseQuery { + + const SHOW_VISIBLE = 1; + const SHOW_HIDDEN = 2; + const SHOW_BOTH = 3; + /** * @var integer */ @@ -41,9 +46,15 @@ trait VisibilityTrait */ public function setVisibility($visibility) { + if (!is_int($visibility) && $visibility != (int) $visibility) { + return $this; + } + + $visibility = (int) $visibility; if (in_array($visibility, [self::SHOW_BOTH, self::SHOW_VISIBLE, self::SHOW_HIDDEN], true)) { $this->visibility = $visibility; } + return $this; } @@ -59,12 +70,11 @@ trait VisibilityTrait * If set to true, this will ONLY filter the visibility on the main queried object. * * @param bool $exclusiveVisibility - * @return VisibilityTrait + * @return $this */ public function setExclusiveVisibility($exclusiveVisibility) { $this->exclusiveVisibility = (bool) $exclusiveVisibility; return $this; } - } diff --git a/src/TimesheetBundle/Repository/TimesheetRepository.php b/src/Repository/TimesheetRepository.php similarity index 88% rename from src/TimesheetBundle/Repository/TimesheetRepository.php rename to src/Repository/TimesheetRepository.php index 0fa4b192..934f88be 100644 --- a/src/TimesheetBundle/Repository/TimesheetRepository.php +++ b/src/Repository/TimesheetRepository.php @@ -9,20 +9,19 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Repository; +namespace App\Repository; -use AppBundle\Entity\User; -use AppBundle\Repository\AbstractRepository; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\User; +use App\Entity\Activity; +use App\Entity\Timesheet; use Doctrine\DBAL\Types\Type; use Pagerfanta\Pagerfanta; -use TimesheetBundle\Model\Statistic\Month; -use TimesheetBundle\Model\Statistic\Year; -use TimesheetBundle\Model\TimesheetGlobalStatistic; -use TimesheetBundle\Model\TimesheetStatistic; +use App\Model\Statistic\Month; +use App\Model\Statistic\Year; +use App\Model\TimesheetGlobalStatistic; +use App\Model\TimesheetStatistic; use DateTime; -use TimesheetBundle\Repository\Query\TimesheetQuery; +use App\Repository\Query\TimesheetQuery; /** * Class TimesheetRepository @@ -98,7 +97,7 @@ class TimesheetRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select($select) - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->where($qb->expr()->gt('t.begin', ':from')) ->andWhere($qb->expr()->lt('t.end', ':to')) ->setParameter('from', $begin, Type::DATETIME) @@ -122,11 +121,11 @@ class TimesheetRepository extends AbstractRepository public function getUserStatistics(User $user) { $durationTotal = $this->getEntityManager() - ->createQuery('SELECT SUM(t.duration) FROM TimesheetBundle:Timesheet t WHERE t.user = :user') + ->createQuery('SELECT SUM(t.duration) FROM '.Timesheet::class.' t WHERE t.user = :user') ->setParameter('user', $user) ->getSingleScalarResult(); $rateTotal = $this->getEntityManager() - ->createQuery('SELECT SUM(t.rate) FROM TimesheetBundle:Timesheet t WHERE t.user = :user') + ->createQuery('SELECT SUM(t.rate) FROM '.Timesheet::class.' t WHERE t.user = :user') ->setParameter('user', $user) ->getSingleScalarResult(); $amountMonth = $this->queryThisMonth('SUM(t.rate)', $user) @@ -136,7 +135,7 @@ class TimesheetRepository extends AbstractRepository ->getQuery() ->getSingleScalarResult(); $firstEntry = $this->getEntityManager() - ->createQuery('SELECT MIN(t.begin) FROM TimesheetBundle:Timesheet t WHERE t.user = :user') + ->createQuery('SELECT MIN(t.begin) FROM '.Timesheet::class.' t WHERE t.user = :user') ->setParameter('user', $user) ->getSingleScalarResult(); @@ -161,7 +160,7 @@ class TimesheetRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('SUM(t.rate) as rate, SUM(t.duration) as duration, MONTH(t.begin) as month, YEAR(t.begin) as year') - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->where($qb->expr()->gt('t.begin', '0')) ->andWhere($qb->expr()->isNotNull('t.end')) ->orderBy('year', 'DESC') @@ -205,13 +204,13 @@ class TimesheetRepository extends AbstractRepository public function getGlobalStatistics() { $durationTotal = $this->getEntityManager() - ->createQuery('SELECT SUM(t.duration) FROM TimesheetBundle:Timesheet t') + ->createQuery('SELECT SUM(t.duration) FROM '.Timesheet::class.' t') ->getSingleScalarResult(); $rateTotal = $this->getEntityManager() - ->createQuery('SELECT SUM(t.rate) FROM TimesheetBundle:Timesheet t') + ->createQuery('SELECT SUM(t.rate) FROM '.Timesheet::class.' t') ->getSingleScalarResult(); $userTotal = $this->getEntityManager() - ->createQuery('SELECT COUNT(DISTINCT(t.user)) FROM TimesheetBundle:Timesheet t') + ->createQuery('SELECT COUNT(DISTINCT(t.user)) FROM '.Timesheet::class.' t') ->getSingleScalarResult(); $activeNow = $this->getActiveEntries(); $amountMonth = $this->queryThisMonth('SUM(t.rate)') @@ -247,7 +246,7 @@ class TimesheetRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('t', 'a', 'p', 'c') - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->join('t.activity', 'a') ->join('a.project', 'p') ->join('p.customer', 'c') @@ -274,7 +273,7 @@ class TimesheetRepository extends AbstractRepository $qb = $this->getEntityManager()->createQueryBuilder(); $qb->select('t', 'a', 'p', 'c', 'u') - ->from('TimesheetBundle:Timesheet', 't') + ->from(Timesheet::class, 't') ->join('t.activity', 'a') ->join('t.user', 'u') ->join('a.project', 'p') diff --git a/src/AppBundle/Repository/UserRepository.php b/src/Repository/UserRepository.php similarity index 84% rename from src/AppBundle/Repository/UserRepository.php rename to src/Repository/UserRepository.php index f1406699..6923db1d 100644 --- a/src/AppBundle/Repository/UserRepository.php +++ b/src/Repository/UserRepository.php @@ -9,10 +9,11 @@ * file that was distributed with this source code. */ -namespace AppBundle\Repository; +namespace App\Repository; -use AppBundle\Model\UserStatistic; -use AppBundle\Repository\Query\UserQuery; +use App\Entity\User; +use App\Model\UserStatistic; +use App\Repository\Query\UserQuery; /** * Class UserRepository @@ -31,7 +32,7 @@ class UserRepository extends AbstractRepository public function getGlobalStatistics() { $countAll = $this->getEntityManager() - ->createQuery('SELECT COUNT(u.id) FROM AppBundle:User u') + ->createQuery('SELECT COUNT(u.id) FROM '.User::class.' u') ->getSingleScalarResult(); $stats = new UserStatistic(); @@ -39,6 +40,12 @@ class UserRepository extends AbstractRepository return $stats; } + /** + * Fetch a user by his username. + * + * @param $username + * @return null|User + */ public function findByUsername($username) { return $this->findOneBy(['username' => $username]); @@ -54,7 +61,7 @@ class UserRepository extends AbstractRepository // if we join activities, the maxperpage limit will limit the list to the amount or projects + activties $qb->select('u') - ->from('AppBundle:User', 'u') + ->from(User::class, 'u') ->orderBy('u.' . $query->getOrderBy(), $query->getOrder()); if ($query->getVisibility() == UserQuery::SHOW_VISIBLE) { diff --git a/src/TimesheetBundle/Repository/Query/CustomerQuery.php b/src/TimesheetBundle/Repository/Query/CustomerQuery.php deleted file mode 100644 index 7ba9a8db..00000000 --- a/src/TimesheetBundle/Repository/Query/CustomerQuery.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace TimesheetBundle\Repository\Query; - -use AppBundle\Repository\Query\BaseQuery; -use AppBundle\Repository\Query\VisibilityInterface; -use AppBundle\Repository\Query\VisibilityTrait; - -/** - * Can be used for advanced queries with the: CustomerRepository - * - * @author Kevin Papst - */ -class CustomerQuery extends BaseQuery implements VisibilityInterface -{ - use VisibilityTrait; -} diff --git a/src/TimesheetBundle/TimesheetBundle.php b/src/TimesheetBundle/TimesheetBundle.php deleted file mode 100644 index 681d507f..00000000 --- a/src/TimesheetBundle/TimesheetBundle.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace TimesheetBundle; - -use Symfony\Component\HttpKernel\Bundle\Bundle; - -/** - * This class defines the Bundle for all Timesheet related topics - * - * @author Kevin Papst - */ -class TimesheetBundle extends Bundle -{ - - /** - * Boots the Bundle. - */ - public function boot() - { - } -} diff --git a/src/AppBundle/Twig/Extensions.php b/src/Twig/Extensions.php similarity index 84% rename from src/AppBundle/Twig/Extensions.php rename to src/Twig/Extensions.php index 83e358cc..fcea5336 100644 --- a/src/AppBundle/Twig/Extensions.php +++ b/src/Twig/Extensions.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace AppBundle\Twig; +namespace App\Twig; -use AppBundle\Utils\Markdown; +use App\Utils\Markdown; use Symfony\Component\Intl\Intl; -use TimesheetBundle\Entity\Customer; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\Customer; +use App\Entity\Timesheet; /** * Multiple Twig extensions: filters and functions @@ -23,11 +23,6 @@ use TimesheetBundle\Entity\Timesheet; */ class Extensions extends \Twig_Extension { - /** - * @var Markdown - */ - private $parser; - /** * @var string[] */ @@ -35,12 +30,10 @@ class Extensions extends \Twig_Extension /** * Extensions constructor. - * @param Markdown $parser * @param string $locales */ - public function __construct(Markdown $parser, $locales) + public function __construct($locales) { - $this->parser = $parser; $this->locales = explode('|', $locales); } @@ -50,7 +43,6 @@ class Extensions extends \Twig_Extension public function getFilters() { return [ - new \Twig_SimpleFilter('md2html', [$this, 'markdownToHtml'], ['is_safe' => ['html']]), new \Twig_SimpleFilter('duration', array($this, 'duration')), new \Twig_SimpleFilter('durationForEntry', array($this, 'durationForEntry')), new \Twig_SimpleFilter('money', array($this, 'money')), @@ -135,18 +127,6 @@ class Extensions extends \Twig_Extension return round($amount) . ' ' . Intl::getCurrencyBundle()->getCurrencySymbol($currency); } - /** - * Transforms the given Markdown content into HTML content. - * - * @param string $content - * - * @return string - */ - public function markdownToHtml($content) - { - return $this->parser->toHtml($content); - } - /** * Takes the list of codes of the locales (languages) enabled in the * application and returns an array with the name of each locale written diff --git a/src/AppBundle/Validator/Constraints/Role.php b/src/Validator/Constraints/Role.php similarity index 93% rename from src/AppBundle/Validator/Constraints/Role.php rename to src/Validator/Constraints/Role.php index 5957a935..5b9d202c 100644 --- a/src/AppBundle/Validator/Constraints/Role.php +++ b/src/Validator/Constraints/Role.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Validator\Constraints; +namespace App\Validator\Constraints; use Symfony\Component\Validator\Constraint; diff --git a/src/AppBundle/Validator/Constraints/RoleValidator.php b/src/Validator/Constraints/RoleValidator.php similarity index 96% rename from src/AppBundle/Validator/Constraints/RoleValidator.php rename to src/Validator/Constraints/RoleValidator.php index 356a728e..b89f4aa9 100644 --- a/src/AppBundle/Validator/Constraints/RoleValidator.php +++ b/src/Validator/Constraints/RoleValidator.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Validator\Constraints; +namespace App\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; diff --git a/src/AppBundle/Voter/AbstractVoter.php b/src/Voter/AbstractVoter.php similarity index 97% rename from src/AppBundle/Voter/AbstractVoter.php rename to src/Voter/AbstractVoter.php index 188ea508..160b5a40 100644 --- a/src/AppBundle/Voter/AbstractVoter.php +++ b/src/Voter/AbstractVoter.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace AppBundle\Voter; +namespace App\Voter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface; diff --git a/src/TimesheetBundle/Voter/ActivityVoter.php b/src/Voter/ActivityVoter.php similarity index 91% rename from src/TimesheetBundle/Voter/ActivityVoter.php rename to src/Voter/ActivityVoter.php index 923b1ed6..9bf70fda 100644 --- a/src/TimesheetBundle/Voter/ActivityVoter.php +++ b/src/Voter/ActivityVoter.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Voter; +namespace App\Voter; -use AppBundle\Entity\User; -use AppBundle\Voter\AbstractVoter; +use App\Entity\User; +use App\Voter\AbstractVoter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use TimesheetBundle\Entity\Activity; +use App\Entity\Activity; /** * A voter to check permissions on Activities. @@ -34,7 +34,7 @@ class ActivityVoter extends AbstractVoter */ protected function supports($attribute, $subject) { - if (!in_array($attribute, array(self::VIEW, self::EDIT, self::DELETE))) { + if (!in_array($attribute, array(self::VIEW, self::EDIT, self::DELETE))) { return false; } diff --git a/src/TimesheetBundle/Voter/CustomerVoter.php b/src/Voter/CustomerVoter.php similarity index 94% rename from src/TimesheetBundle/Voter/CustomerVoter.php rename to src/Voter/CustomerVoter.php index 7acea9fc..2bcc9b16 100644 --- a/src/TimesheetBundle/Voter/CustomerVoter.php +++ b/src/Voter/CustomerVoter.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Voter; +namespace App\Voter; -use AppBundle\Entity\User; -use AppBundle\Voter\AbstractVoter; +use App\Entity\User; +use App\Voter\AbstractVoter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use TimesheetBundle\Entity\Customer; +use App\Entity\Customer; /** * A voter to check permissions on Customers. diff --git a/src/TimesheetBundle/Voter/ProjectVoter.php b/src/Voter/ProjectVoter.php similarity index 94% rename from src/TimesheetBundle/Voter/ProjectVoter.php rename to src/Voter/ProjectVoter.php index 43f3563b..40a781b0 100644 --- a/src/TimesheetBundle/Voter/ProjectVoter.php +++ b/src/Voter/ProjectVoter.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Voter; +namespace App\Voter; -use AppBundle\Entity\User; -use AppBundle\Voter\AbstractVoter; +use App\Entity\User; +use App\Voter\AbstractVoter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use TimesheetBundle\Entity\Project; +use App\Entity\Project; /** * A voter to check permissions on Projects. diff --git a/src/TimesheetBundle/Voter/TimesheetVoter.php b/src/Voter/TimesheetVoter.php similarity index 96% rename from src/TimesheetBundle/Voter/TimesheetVoter.php rename to src/Voter/TimesheetVoter.php index ad92d231..b43f3c6c 100644 --- a/src/TimesheetBundle/Voter/TimesheetVoter.php +++ b/src/Voter/TimesheetVoter.php @@ -9,13 +9,13 @@ * file that was distributed with this source code. */ -namespace TimesheetBundle\Voter; +namespace App\Voter; -use AppBundle\Entity\User; -use AppBundle\Voter\AbstractVoter; +use App\Entity\User; +use App\Voter\AbstractVoter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use TimesheetBundle\Entity\Activity; -use TimesheetBundle\Entity\Timesheet; +use App\Entity\Activity; +use App\Entity\Timesheet; /** * A voter to check permissions on Timesheets. diff --git a/src/AppBundle/Voter/UserVoter.php b/src/Voter/UserVoter.php similarity index 98% rename from src/AppBundle/Voter/UserVoter.php rename to src/Voter/UserVoter.php index c14e586a..972d435e 100644 --- a/src/AppBundle/Voter/UserVoter.php +++ b/src/Voter/UserVoter.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace AppBundle\Voter; +namespace App\Voter; -use AppBundle\Entity\User; +use App\Entity\User; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; /** diff --git a/symfony.lock b/symfony.lock new file mode 100644 index 00000000..94a676aa --- /dev/null +++ b/symfony.lock @@ -0,0 +1,488 @@ +{ + "almasaeed2010/adminlte": { + "version": "v2.3.11" + }, + "avanzu/admin-theme-bundle": { + "version": "dev-master" + }, + "beberlei/doctrineextensions": { + "version": "v1.0.20" + }, + "composer/semver": { + "version": "1.4.2" + }, + "dama/doctrine-test-bundle": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "4.0", + "ref": "56eaa387b5e48ebcc7c95a893b47dfa1ad51449c" + } + }, + "doctrine/annotations": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" + } + }, + "doctrine/cache": { + "version": "v1.7.1" + }, + "doctrine/collections": { + "version": "v1.5.0" + }, + "doctrine/common": { + "version": "v2.8.1" + }, + "doctrine/data-fixtures": { + "version": "v1.3.0" + }, + "doctrine/dbal": { + "version": "v2.6.3" + }, + "doctrine/doctrine-bundle": { + "version": "1.6", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.6", + "ref": "44d3aa7752dd46f77ba11af2297a25e1dedfb4d0" + } + }, + "doctrine/doctrine-cache-bundle": { + "version": "1.3.2" + }, + "doctrine/doctrine-fixtures-bundle": { + "version": "3.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.0", + "ref": "2ea6070ecf365f9a801ccaed4b31d4a3b7af5693" + } + }, + "doctrine/doctrine-migrations-bundle": { + "version": "1.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.2", + "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1" + } + }, + "doctrine/inflector": { + "version": "v1.3.0" + }, + "doctrine/instantiator": { + "version": "1.1.0" + }, + "doctrine/lexer": { + "version": "v1.0.1" + }, + "doctrine/migrations": { + "version": "v1.6.2" + }, + "doctrine/orm": { + "version": "v2.6.0" + }, + "easycorp/easy-log-handler": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "70062abc2cd58794d2a90274502f81b55cd9951b" + } + }, + "egulias/email-validator": { + "version": "2.1.3" + }, + "friendsofphp/php-cs-fixer": { + "version": "2.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.2", + "ref": "bb31a3bbec00a8fc8aa1c9fbf9b0ef9fc492f93d" + } + }, + "gecko-packages/gecko-php-unit": { + "version": "v3.0" + }, + "jdorn/sql-formatter": { + "version": "v1.2.17" + }, + "monolog/monolog": { + "version": "1.23.0" + }, + "myclabs/deep-copy": { + "version": "1.7.0" + }, + "ocramius/package-versions": { + "version": "1.2.0" + }, + "ocramius/proxy-manager": { + "version": "2.1.1" + }, + "pagerfanta/pagerfanta": { + "version": "v1.0.5" + }, + "phar-io/manifest": { + "version": "1.0.1" + }, + "phar-io/version": { + "version": "1.0.1" + }, + "php-cs-fixer/diff": { + "version": "v1.2.0" + }, + "phpdocumentor/reflection-common": { + "version": "1.0.1" + }, + "phpdocumentor/reflection-docblock": { + "version": "4.2.0" + }, + "phpdocumentor/type-resolver": { + "version": "0.4.0" + }, + "phpspec/prophecy": { + "version": "1.7.3" + }, + "phpunit/php-code-coverage": { + "version": "5.3.0" + }, + "phpunit/php-file-iterator": { + "version": "1.4.5" + }, + "phpunit/php-text-template": { + "version": "1.2.1" + }, + "phpunit/php-timer": { + "version": "1.0.9" + }, + "phpunit/php-token-stream": { + "version": "2.0.2" + }, + "phpunit/phpunit": { + "version": "4.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.7", + "ref": "9d0927a518f631b4ae6508dac377b021761ff6d1" + } + }, + "phpunit/phpunit-mock-objects": { + "version": "5.0.6" + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.0.0" + }, + "psr/log": { + "version": "1.0.2" + }, + "psr/simple-cache": { + "version": "1.0.0" + }, + "sebastian/code-unit-reverse-lookup": { + "version": "1.0.1" + }, + "sebastian/comparator": { + "version": "2.1.1" + }, + "sebastian/diff": { + "version": "2.0.1" + }, + "sebastian/environment": { + "version": "3.1.0" + }, + "sebastian/exporter": { + "version": "3.1.0" + }, + "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": "1.0.0" + }, + "sebastian/version": { + "version": "2.0.1" + }, + "sensio/framework-extra-bundle": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.0", + "ref": "aaddfdf43cdecd4cf91f992052d76c2cadc04543" + } + }, + "squizlabs/php_codesniffer": { + "version": "3.2.2" + }, + "swiftmailer/swiftmailer": { + "version": "v6.0.2" + }, + "symfony/asset": { + "version": "v4.0.3" + }, + "symfony/cache": { + "version": "v4.0.3" + }, + "symfony/config": { + "version": "v4.0.3" + }, + "symfony/console": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "9f94d3ea453cd8a3b95db7f82592d7344fe3a76a" + } + }, + "symfony/debug": { + "version": "v4.0.3" + }, + "symfony/debug-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "71d29aaf710fd59cd3abff2b1ade907ed73103c6" + } + }, + "symfony/debug-pack": { + "version": "v1.0.4" + }, + "symfony/dependency-injection": { + "version": "v4.0.3" + }, + "symfony/doctrine-bridge": { + "version": "v4.0.3" + }, + "symfony/dotenv": { + "version": "v4.0.3" + }, + "symfony/event-dispatcher": { + "version": "v4.0.3" + }, + "symfony/expression-language": { + "version": "v4.0.3" + }, + "symfony/filesystem": { + "version": "v4.0.3" + }, + "symfony/finder": { + "version": "v4.0.3" + }, + "symfony/flex": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4" + } + }, + "symfony/form": { + "version": "v4.0.3" + }, + "symfony/framework-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "137a14eeb6b3f5370e7147af8aff6518504f50c7" + } + }, + "symfony/http-foundation": { + "version": "v4.0.3" + }, + "symfony/http-kernel": { + "version": "v4.0.3" + }, + "symfony/inflector": { + "version": "v4.0.3" + }, + "symfony/intl": { + "version": "v4.0.3" + }, + "symfony/lts": { + "version": "4-dev" + }, + "symfony/maker-bundle": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/monolog-bridge": { + "version": "v4.0.3" + }, + "symfony/monolog-bundle": { + "version": "3.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.1", + "ref": "371d1a2b69984710646b09a1182ef1d4308c904f" + } + }, + "symfony/options-resolver": { + "version": "v4.0.3" + }, + "symfony/orm-pack": { + "version": "v1.0.5" + }, + "symfony/polyfill-intl-icu": { + "version": "v1.6.0" + }, + "symfony/polyfill-mbstring": { + "version": "v1.6.0" + }, + "symfony/polyfill-php72": { + "version": "v1.6.0" + }, + "symfony/process": { + "version": "v4.0.3" + }, + "symfony/profiler-pack": { + "version": "v1.0.3" + }, + "symfony/property-access": { + "version": "v4.0.3" + }, + "symfony/routing": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.0", + "ref": "cda8b550123383d25827705d05a42acf6819fe4e" + } + }, + "symfony/security": { + "version": "v4.0.3" + }, + "symfony/security-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "85834af1496735f28d831489d12ab1921a875e0d" + } + }, + "symfony/stopwatch": { + "version": "v4.0.3" + }, + "symfony/swiftmailer-bundle": { + "version": "2.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "2.5", + "ref": "8daf8ede72274989fb0dc66b83cb4bc1693afbb9" + } + }, + "symfony/thanks": { + "version": "v1.0.1" + }, + "symfony/translation": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "6bcd6c570c017ea6ae5a7a6a027c929fd3542cd8" + } + }, + "symfony/twig-bridge": { + "version": "v4.0.3" + }, + "symfony/twig-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "f75ac166398e107796ca94cc57fa1edaa06ec47f" + } + }, + "symfony/validator": { + "version": "v4.0.3" + }, + "symfony/var-dumper": { + "version": "v4.0.3" + }, + "symfony/web-profiler-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" + } + }, + "symfony/web-server-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "c72d107d077f1654428edaed69415d0228c1aefe" + } + }, + "symfony/yaml": { + "version": "v4.0.3" + }, + "theseer/tokenizer": { + "version": "1.1.0" + }, + "twig/extensions": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "4851df0afc426b8f07204379d21fca25b6df5d68" + } + }, + "twig/twig": { + "version": "v2.4.4" + }, + "webmozart/assert": { + "version": "1.2.0" + }, + "white-october/pagerfanta-bundle": { + "version": "v1.1.2" + }, + "zendframework/zend-code": { + "version": "3.3.0" + }, + "zendframework/zend-eventmanager": { + "version": "3.2.0" + } +} diff --git a/src/TimesheetBundle/Resources/views/admin/activity.html.twig b/templates/admin/activity.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/activity.html.twig rename to templates/admin/activity.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/activity_delete.html.twig b/templates/admin/activity_delete.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/activity_delete.html.twig rename to templates/admin/activity_delete.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/activity_edit.html.twig b/templates/admin/activity_edit.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/activity_edit.html.twig rename to templates/admin/activity_edit.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/customer.html.twig b/templates/admin/customer.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/customer.html.twig rename to templates/admin/customer.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/customer_delete.html.twig b/templates/admin/customer_delete.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/customer_delete.html.twig rename to templates/admin/customer_delete.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/customer_edit.html.twig b/templates/admin/customer_edit.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/customer_edit.html.twig rename to templates/admin/customer_edit.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/project.html.twig b/templates/admin/project.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/project.html.twig rename to templates/admin/project.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/project_delete.html.twig b/templates/admin/project_delete.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/project_delete.html.twig rename to templates/admin/project_delete.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/project_edit.html.twig b/templates/admin/project_edit.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/project_edit.html.twig rename to templates/admin/project_edit.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/timesheet.html.twig b/templates/admin/timesheet.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/timesheet.html.twig rename to templates/admin/timesheet.html.twig diff --git a/src/TimesheetBundle/Resources/views/admin/timesheet_edit.html.twig b/templates/admin/timesheet_edit.html.twig similarity index 100% rename from src/TimesheetBundle/Resources/views/admin/timesheet_edit.html.twig rename to templates/admin/timesheet_edit.html.twig diff --git a/app/Resources/views/admin/user.html.twig b/templates/admin/user.html.twig similarity index 100% rename from app/Resources/views/admin/user.html.twig rename to templates/admin/user.html.twig diff --git a/app/Resources/views/admin/user_edit.html.twig b/templates/admin/user_edit.html.twig similarity index 100% rename from app/Resources/views/admin/user_edit.html.twig rename to templates/admin/user_edit.html.twig diff --git a/app/Resources/views/base.html.twig b/templates/base.html.twig similarity index 93% rename from app/Resources/views/base.html.twig rename to templates/base.html.twig index 03f4d6a5..b34b7519 100644 --- a/app/Resources/views/base.html.twig +++ b/templates/base.html.twig @@ -1,4 +1,4 @@ -{% extends 'AvanzuAdminThemeBundle:layout:default-layout.html.twig' %} +{% extends '@AvanzuAdminTheme/layout/default-layout.html.twig' %} {% block avanzu_page_content %} {{ include('default/_flash_messages.html.twig') }} @@ -49,13 +49,13 @@ {% block avanzu_navbar_messages %} {% if app.user is not null and is_granted('IS_AUTHENTICATED_FULLY') %} - {{ render(controller('TimesheetBundle:Timesheet:activeEntries')) }} + {{ render(controller('App\\Controller\\TimesheetController::activeEntriesAction')) }} {% endif %} {% endblock %} {% block avanzu_navbar_notifications %} {% if app.user is not null and is_granted('IS_AUTHENTICATED_FULLY') %} - {{ render(controller('TimesheetBundle:Activity:recentActivities')) }} + {{ render(controller('App\\Controller\\ActivityController::recentActivitiesAction')) }} {% endif %} {#