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 %}
{#
diff --git a/app/Resources/AvanzuAdminThemeBundle/views/Navbar/user.html.twig b/templates/bundles/AvanzuAdminThemeBundle/Navbar/user.html.twig
similarity index 94%
rename from app/Resources/AvanzuAdminThemeBundle/views/Navbar/user.html.twig
rename to templates/bundles/AvanzuAdminThemeBundle/Navbar/user.html.twig
index b39a0cca..a16cda77 100644
--- a/app/Resources/AvanzuAdminThemeBundle/views/Navbar/user.html.twig
+++ b/templates/bundles/AvanzuAdminThemeBundle/Navbar/user.html.twig
@@ -1,5 +1,5 @@
{# User Account: style can be found in dropdown.less #}
-{% import "AvanzuAdminThemeBundle:layout:macros.html.twig" as macro %}
+{% import "@AvanzuAdminTheme/layout/macros.html.twig" as macro %}