diff --git a/.composer/composer.json b/.composer/composer.json
index 655ee13805f47..d69e9f7626d55 100644
--- a/.composer/composer.json
+++ b/.composer/composer.json
@@ -1,6 +1,5 @@
{
"require": {
- "php": ">=5.3.7",
- "hirak/prestissimo": "^0.1.15"
+ "hirak/prestissimo": "^0.1.18"
}
}
diff --git a/.composer/composer.lock b/.composer/composer.lock
index 8e037ebb4af81..7027e21d9ac4b 100644
--- a/.composer/composer.lock
+++ b/.composer/composer.lock
@@ -4,8 +4,8 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "aa7aa2d143fd85800595242996021ada",
- "content-hash": "51e9161b78dda1fe149a9e9c106be90b",
+ "hash": "e02685ff7d2409d34fa87e306fc86ec5",
+ "content-hash": "2854c05c76a78113c693dbbdd3f9c518",
"packages": [
{
"name": "hirak/prestissimo",
@@ -65,8 +65,6 @@
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
- "platform": {
- "php": ">=5.3.7"
- },
+ "platform": [],
"platform-dev": []
}
diff --git a/.travis.yml b/.travis.yml
index d82550017d9ab..4718a1090ac7b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -35,44 +35,46 @@ cache:
services: mongodb
before_install:
+ - PHP=$TRAVIS_PHP_VERSION
# Matrix lines for intermediate PHP versions are skipped for pull requests
- - if [[ ! $deps && ! $TRAVIS_PHP_VERSION = ${MIN_PHP%.*} && $TRAVIS_PHP_VERSION != hhvm && $TRAVIS_PULL_REQUEST != false ]]; then deps=skip; fi;
+ - if [[ ! $deps && ! $PHP = ${MIN_PHP%.*} && $PHP != hhvm && $TRAVIS_PULL_REQUEST != false ]]; then deps=skip; skip=1; fi
# A sigchild-enabled-PHP is used to test the Process component on the lowest PHP matrix line
- - if [[ ! $deps && $TRAVIS_PHP_VERSION = ${MIN_PHP%.*} && ! -d php-$MIN_PHP/sapi ]]; then wget http://museum.php.net/php5/php-$MIN_PHP.tar.bz2 -O - | tar -xj; (cd php-$MIN_PHP; ./configure --enable-sigchild --enable-pcntl; make -j2); fi;
- - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then INI_FILE=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; else INI_FILE=/etc/hhvm/php.ini; fi;
- - echo memory_limit = -1 >> $INI_FILE
- - echo session.gc_probability = 0 >> $INI_FILE
- - if [[ $TRAVIS_PHP_VERSION = 5.* ]]; then echo extension = mongo.so >> $INI_FILE; fi;
- - if [[ $TRAVIS_PHP_VERSION = 5.* ]]; then echo extension = memcache.so >> $INI_FILE; fi;
- - if [[ $TRAVIS_PHP_VERSION = 5.* ]]; then (echo yes | pecl install -f apcu-4.0.10 && echo apc.enable_cli = 1 >> $INI_FILE); fi;
- - if [[ $TRAVIS_PHP_VERSION = 7.* ]]; then (echo yes | pecl install -f apcu-5.1.2 && echo apc.enable_cli = 1 >> $INI_FILE); fi;
- - if [[ $TRAVIS_PHP_VERSION = 5.* && ! $deps ]]; then (cd src/Symfony/Component/Debug/Resources/ext && phpize && ./configure && make && echo extension = $(pwd)/modules/symfony_debug.so >> $INI_FILE); fi;
- - if [[ $TRAVIS_PHP_VERSION = 5.* ]]; then pecl install -f memcached-2.1.0; fi;
- - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then echo extension = ldap.so >> $INI_FILE; fi;
- - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then phpenv config-rm xdebug.ini; fi;
- - if [[ $deps != skip ]]; then composer self-update; fi;
- - if [[ $deps != skip && $TRAVIS_REPO_SLUG = symfony/symfony ]]; then cp .composer/* ~/.composer/; composer global install; fi;
- - if [[ $deps != skip ]]; then ./phpunit install; fi;
- - export PHPUNIT=$(readlink -f ./phpunit)
+ - if [[ ! $deps && $PHP = ${MIN_PHP%.*} && ! -d php-$MIN_PHP/sapi ]]; then wget http://museum.php.net/php5/php-$MIN_PHP.tar.bz2 -O - | tar -xj; (cd php-$MIN_PHP; ./configure --enable-sigchild --enable-pcntl; make -j2); fi
+ - if [[ $PHP != hhvm ]]; then INI_FILE=~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; else INI_FILE=/etc/hhvm/php.ini; fi
+ - if [[ ! $skip ]]; then echo memory_limit = -1 >> $INI_FILE; fi
+ - if [[ ! $skip ]]; then echo session.gc_probability = 0 >> $INI_FILE; fi
+ - if [[ ! $skip && $PHP = 5.* ]]; then echo extension = mongo.so >> $INI_FILE; fi
+ - if [[ ! $skip && $PHP = 5.* ]]; then echo extension = memcache.so >> $INI_FILE; fi
+ - if [[ ! $skip && $PHP = 5.* ]]; then (echo yes | pecl install -f apcu-4.0.10 && echo apc.enable_cli = 1 >> $INI_FILE); fi
+ - if [[ ! $skip && $PHP = 7.* ]]; then (echo yes | pecl install -f apcu-5.1.2 && echo apc.enable_cli = 1 >> $INI_FILE); fi
+ - if [[ ! $deps && $PHP = 5.* ]]; then (cd src/Symfony/Component/Debug/Resources/ext && phpize && ./configure && make && echo extension = $(pwd)/modules/symfony_debug.so >> $INI_FILE); fi
+ - if [[ ! $skip && $PHP = 5.* ]]; then pecl install -f memcached-2.1.0; fi
+ - if [[ ! $skip && $PHP != hhvm ]]; then echo extension = ldap.so >> $INI_FILE; fi
+ - if [[ ! $skip && $PHP != hhvm ]]; then phpenv config-rm xdebug.ini; fi
+ - if [[ ! $skip ]]; then composer self-update --stable; fi
+ - if [[ ! $skip ]]; then cp .composer/* ~/.composer/; composer global install; fi
+ - if [[ ! $skip ]]; then ./phpunit install; fi
+ - if [[ ! $skip && $deps ]]; then composer global remove hirak/prestissimo; fi
+ - if [[ ! $skip ]]; then export PHPUNIT=$(readlink -f ./phpunit); fi
install:
- - if [[ $deps != skip ]]; then COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n'); fi;
+ - if [[ ! $skip ]]; then COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n'); fi
# Create local composer packages for each patched components and reference them in composer.json files when cross-testing components
- - if [[ $deps != skip && $deps ]]; then php .travis.php $TRAVIS_COMMIT_RANGE $TRAVIS_BRANCH $COMPONENTS; fi;
+ - if [[ ! $skip && $deps ]]; then php .travis.php $TRAVIS_COMMIT_RANGE $TRAVIS_BRANCH $COMPONENTS; fi
# For the master branch when deps=high, the version before master is checked out and tested with the locally patched components
- - if [[ $deps = high && $TRAVIS_BRANCH = master ]]; then SYMFONY_VERSION=$(git ls-remote --heads | grep -o '/[1-9].*' | tail -n 1 | sed s/.//); else SYMFONY_VERSION=$(cat composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9.]*'); fi;
- - if [[ $deps = high && $TRAVIS_BRANCH = master ]]; then git fetch origin $SYMFONY_VERSION; git checkout -m FETCH_HEAD; COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n'); ./phpunit install; fi;
+ - if [[ $deps = high && $TRAVIS_BRANCH = master ]]; then SYMFONY_VERSION=$(git ls-remote --heads | grep -o '/[1-9].*' | tail -n 1 | sed s/.//); else SYMFONY_VERSION=$(cat composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9.]*'); fi
+ - if [[ $deps = high && $TRAVIS_BRANCH = master ]]; then git fetch origin $SYMFONY_VERSION; git checkout -m FETCH_HEAD; COMPONENTS=$(find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist -printf '%h\n'); ./phpunit install; fi
# Legacy tests are skipped when deps=high and when the current branch version has not the same major version number than the next one
- - if [[ $deps = high && ${SYMFONY_VERSION%.*} != $(git show $(git ls-remote --heads | grep -FA1 /$SYMFONY_VERSION | tail -n 1):composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9]*' | head -n 1) ]]; then LEGACY=,legacy; fi;
- - export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev;
- - if [[ ! $deps ]]; then composer update; else export SYMFONY_DEPRECATIONS_HELPER=weak; fi;
- - if [[ $TRAVIS_BRANCH = master ]]; then export SYMFONY_PHPUNIT_OVERLOAD=1; fi;
- - if [[ $TRAVIS_PHP_VERSION != hhvm ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi;
+ - if [[ $deps = high && ${SYMFONY_VERSION%.*} != $(git show $(git ls-remote --heads | grep -FA1 /$SYMFONY_VERSION | tail -n 1):composer.json | grep '^ *"dev-master". *"[1-9]' | grep -o '[0-9]*' | head -n 1) ]]; then LEGACY=,legacy; fi
+ - export COMPOSER_ROOT_VERSION=$SYMFONY_VERSION.x-dev
+ - if [[ ! $deps ]]; then composer update; else export SYMFONY_DEPRECATIONS_HELPER=weak; fi
+ - if [[ $TRAVIS_BRANCH = master ]]; then export SYMFONY_PHPUNIT_OVERLOAD=1; fi
+ - if [[ $PHP != hhvm ]]; then php -i; else hhvm --php -r 'print_r($_SERVER);print_r(ini_get_all());'; fi
script:
- - if [[ ! $deps ]]; then echo "$COMPONENTS" | parallel --gnu '$PHPUNIT --exclude-group tty,benchmark,intl-data {}'; fi;
- - if [[ ! $deps ]]; then echo -e "\\nRunning tests requiring tty"; $PHPUNIT --group tty; fi;
- - if [[ ! $deps && $TRAVIS_PHP_VERSION = ${MIN_PHP%.*} ]]; then echo -e "1\\n0" | xargs -I{} sh -c 'echo "\\nPHP --enable-sigchild enhanced={}" && ENHANCE_SIGCHLD={} php-$MIN_PHP/sapi/cli/php .phpunit/phpunit-4.8/phpunit --colors=always src/Symfony/Component/Process/'; fi;
- - if [[ $deps = high ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update; $PHPUNIT --exclude-group tty,benchmark,intl-data'$LEGACY; fi;
- - if [[ $deps = low ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --prefer-lowest --prefer-stable; $PHPUNIT --exclude-group tty,benchmark,intl-data'; fi;
- - if [[ $deps = skip ]]; then echo This matrix line is skipped for pull requests.; fi;
+ - if [[ $skip ]]; then echo -e "\\n\\e[1;34mIntermediate PHP version $PHP is skipped for pull requests.\\e[0m"; fi
+ - if [[ ! $deps ]]; then echo "$COMPONENTS" | parallel --gnu '$PHPUNIT --exclude-group tty,benchmark,intl-data {}'; fi
+ - if [[ ! $deps ]]; then echo -e "\\nRunning tests requiring tty"; $PHPUNIT --group tty; fi
+ - if [[ ! $deps && $PHP = ${MIN_PHP%.*} ]]; then echo -e "1\\n0" | xargs -I{} sh -c 'echo "\\nPHP --enable-sigchild enhanced={}" && ENHANCE_SIGCHLD={} php-$MIN_PHP/sapi/cli/php .phpunit/phpunit-4.8/phpunit --colors=always src/Symfony/Component/Process/'; fi
+ - if [[ $deps = high ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi; $PHPUNIT --exclude-group tty,benchmark,intl-data'$LEGACY; fi
+ - if [[ $deps = low ]]; then echo "$COMPONENTS" | parallel --gnu -j10% 'cd {}; composer update --no-progress --ansi --prefer-lowest --prefer-stable; $PHPUNIT --exclude-group tty,benchmark,intl-data'; fi
diff --git a/CHANGELOG-2.8.md b/CHANGELOG-2.8.md
index 38abdc97b27f1..854716d996a75 100644
--- a/CHANGELOG-2.8.md
+++ b/CHANGELOG-2.8.md
@@ -7,6 +7,102 @@ in 2.8 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v2.8.0...v2.8.1
+* 2.8.5 (2016-04-29)
+
+ * bug #18180 [Form] fixed BC break with pre selection of choices with `ChoiceType` and its children (HeahDude)
+ * bug #18645 [Console] Fix wrong exceptions being thrown (JhonnyL)
+ * bug #18562 [WebProfilerBunde] Give an absolute url in case the request occured from another domain (romainneutron)
+ * bug #18600 [DI] Fix AutowirePass fatal error with classes that have non-existing parents (hason, nicolas-grekas)
+ * bug #18603 [PropertyAccess] ->getValue() should be read-only (nicolas-grekas)
+ * bug #18593 [VarDumper] Fix dumping type hints for non-existing parent classes (nicolas-grekas)
+ * bug #18596 [DI] Fix internal caching in AutowirePass (nicolas-grekas)
+ * bug #18581 [Console] [TableHelper] make it work with SymfonyStyle. (aitboudad)
+ * bug #18280 [Routing] add query param if value is different from default (Tobion)
+ * bug #18540 Replace iconv_*() uses by mb_*(), add mbstring polyfill when required (nicolas-grekas)
+ * bug #18496 [Console] use ANSI escape sequences in ProgressBar overwrite method (alekitto)
+ * bug #18490 [LDAP] Free the search result after a search to free memory (hiddewie)
+ * bug #18491 [DependencyInjection] anonymous services are always private (xabbuh)
+ * bug #18515 [Filesystem] Better error handling in remove() (nicolas-grekas)
+ * bug #18360 [PropertyInfo] Extract nullable and collection key type for Doctrine associations (teohhanhui)
+ * bug #18449 [PropertyAccess] Fix regression (nicolas-grekas)
+ * bug #18429 [Console] Correct time formatting. (camporter)
+ * bug #18457 [WebProfilerBundle] Fixed error from unset twig variable (simonsargeant)
+ * bug #18467 [DependencyInjection] Resolve aliases before removing abstract services + add tests (nicolas-grekas)
+ * bug #18469 Force profiler toolbar svg display (pyrech)
+ * bug #18460 [DomCrawler] Fix select option with empty value (Matt Wells)
+ * bug #18425 [Security] Fixed SwitchUserListener when exiting an impersonation with AnonymousToken (lyrixx)
+ * bug #18317 [Form] fix "prototype" not required when parent form is not required (HeahDude)
+ * bug #18439 [Logging] Add support for Firefox (43+) in ChromePhpHandler (arjenm)
+ * bug #18385 Detect CLI color support for Windows 10 build 10586 (mlocati)
+ * bug #18426 [EventDispatcher] Try first if the event is Stopped (lyrixx)
+ * bug #18407 Fixed the "hover" state of the profiler sidebar menu (javiereguiluz)
+ * bug #18394 [FrameworkBundle] Return the invokable service if its name is the class name (dunglas)
+ * bug #18347 Fixed the styles of the Symfony icon in the web debug toolbar (javiereguiluz)
+ * bug #18265 Optimize ReplaceAliasByActualDefinitionPass (ajb-in)
+ * bug #18349 [Process] Fix stream_select priority when writing to stdin (nicolas-grekas)
+ * bug #18358 [Form] NumberToLocalizedStringTransformer should return floats when possible (nicolas-grekas)
+ * bug #17926 [DependencyInjection] Enable alias for service_container (hason)
+ * bug #18352 [Debug] Fix case sensitivity checks (nicolas-grekas)
+ * bug #18336 [Debug] Fix handling of php7 throwables (nicolas-grekas)
+ * bug #18354 [FrameworkBundle][TwigBridge] fix high deps tests (xabbuh)
+ * bug #18312 [ClassLoader] Fix storing not-found classes in APC cache (nicolas-grekas)
+
+* 2.8.4 (2016-03-27)
+
+ * bug #18298 [Validator] do not treat payload as callback (xabbuh)
+ * bug #18275 [Form] Fix BC break introduced in #14403 (HeahDude)
+ * bug #18271 [FileSystem] Google app engine filesystem (swordbeta)
+ * bug #18255 [HttpFoundation] Fix support of custom mime types with parameters (Ener-Getick)
+ * bug #18272 [Bridge\PhpUnit] Workaround old phpunit bug, no colors in weak mode, add tests (nicolas-grekas)
+ * bug #18259 [PropertyAccess] Backport fixes from 2.7 (nicolas-grekas)
+ * bug #18261 [PropertyAccess] Fix isPropertyWritable not using the reflection cache (nicolas-grekas)
+ * bug #18224 [PropertyAccess] Remove most ref mismatches to improve perf (nicolas-grekas)
+ * bug #18237 [WebProfilerBundle] Added table-layout property to AJAX toolbar css (kevintweber)
+ * bug #18209 [PropertyInfo] Support Doctrine custom mapping type in DoctrineExtractor (teohhanhui)
+ * bug #18210 [PropertyAccess] Throw an UnexpectedTypeException when the type do not match (dunglas, nicolas-grekas)
+ * bug #18216 [Intl] Fix invalid numeric literal on PHP 7 (nicolas-grekas)
+ * bug #18147 [Validator] EmailValidator cannot extract hostname if email contains multiple @ symbols (natechicago)
+ * bug #18023 [Process] getIncrementalOutput should work without calling getOutput (romainneutron)
+ * bug #18175 [Translation] Add support for fuzzy tags in PoFileLoader (nud)
+ * bug #18179 [Form] Fix NumberToLocalizedStringTransformer::reverseTransform with big integers (ovrflo, nicolas-grekas)
+ * bug #18164 [HttpKernel] set s-maxage only if all responses are cacheable (xabbuh)
+ * bug #18150 [Process] Wait a bit less on Windows (nicolas-grekas)
+ * bug #18130 [Debug] Replaced logic for detecting filesystem case sensitivity (Dan Blows)
+ * bug #18137 Autowiring the concrete class too - consistent with behavior of other services (weaverryan)
+ * bug #18087 [WebProfiler] Sidebar button padding (rvanlaak)
+ * bug #18080 [HttpFoundation] Set the Content-Range header if the requested Range is unsatisfied (jakzal)
+ * bug #18084 [HttpFoundation] Avoid warnings when checking malicious IPs (jakzal)
+ * bug #18066 [Process] Fix pipes handling (nicolas-grekas)
+ * bug #18078 [Console] Fix an autocompletion question helper issue with non-sequentially indexed choices (jakzal)
+ * bug #18048 [HttpKernel] Fix mem usage when stripping the prod container (nicolas-grekas)
+ * bug #18065 [Finder] Partially revert #17134 to fix a regression (jakzal)
+ * bug #18018 [HttpFoundation] exception when registering bags for started sessions (xabbuh)
+ * bug #18054 [Filesystem] Fix false positive in ->remove() (nicolas-grekas)
+ * bug #18049 [Validator] Fix the locale validator so it treats a locale alias as a valid locale (jakzal)
+ * bug #18019 [Intl] Update ICU to version 55 (jakzal)
+ * bug #18015 [Process] Fix memory issue when using large input streams (romainneutron)
+ * bug #16656 [HttpFoundation] automatically generate safe fallback filename (xabbuh)
+ * bug #15794 [Console] default to stderr in the console helpers (alcohol)
+ * bug #17984 Allow to normalize \Traversable when serializing xml (Ener-Getick)
+ * bug #17434 Improved the error message when a template is not found (rvanginneken, javiereguiluz)
+ * bug #17687 Improved the error message when using "@" in a decorated service (javiereguiluz)
+ * bug #17744 Improve error reporting in router panel of web profiler (javiereguiluz)
+ * bug #17894 [FrameworkBundle] Fix a regression in handling absolute template paths (jakzal)
+ * bug #17990 [DoctrineBridge][Form] Fix performance regression in EntityType (kimlai)
+ * bug #17595 [HttpKernel] Remove _path from query parameters when fragment is a subrequest (cmenning)
+ * bug #17986 [DomCrawler] Dont use LIBXML_PARSEHUGE by default (nicolas-grekas)
+ * bug #17668 add 'guid' to list of exception to filter out (garak)
+ * bug #17615 Ensure backend slashes for symlinks on Windows systems (cpsitgmbh)
+ * bug #17626 Try to delete broken symlinks (IchHabRecht)
+ * bug #17978 [Yaml] ensure dump indentation to be greather than zero (xabbuh)
+ * bug #16886 [Form] [ChoiceType] Prefer placeholder to empty_value (boite)
+ * bug #17976 [WebProfilerBundle] fix debug toolbar rendering by removing inadvertently added links (craue)
+ * bug #17971 Variadic controller params (NiR-, fabpot)
+ * bug #17876 [DependencyInjection] Fixing autowiring bug when some args are set (weaverryan)
+ * bug #17568 Improved Bootstrap form theme for hidden fields (javiereguiluz)
+ * bug #17561 [WebProfilerBundle] Fix design issue in profiler when having errors in forms (Pierstoval)
+ * bug #17925 [Bridge] The WebProcessor now forwards the client IP (magnetik)
+
* 2.8.3 (2016-02-28)
* bug #17947 Fix - #17676 (backport #17919 to 2.3) (Ocramius)
diff --git a/appveyor.yml b/appveyor.yml
index b29e117343008..4a64d1494c765 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -21,11 +21,11 @@ install:
- IF %PHP%==1 appveyor DownloadFile https://curl.haxx.se/ca/cacert.pem
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/releases/archives/php-5.3.11-nts-Win32-VC9-x86.zip
- IF %PHP%==1 7z x php-5.3.11-nts-Win32-VC9-x86.zip -y >nul
- - IF %PHP%==1 appveyor DownloadFile http://nebm.ist.utl.pt/~glopes/misc/intl_win/ICU-51.2-dlls.zip
+ - IF %PHP%==1 appveyor DownloadFile https://raw.githubusercontent.com/symfony/binary-utils/master/ICU-51.2-dlls.zip
- IF %PHP%==1 7z x ICU-51.2-dlls.zip -y >nul
- IF %PHP%==1 del /Q *.zip
- IF %PHP%==1 cd ext
- - IF %PHP%==1 appveyor DownloadFile http://nebm.ist.utl.pt/~glopes/misc/intl_win/php_intl-3.0.0-5.3-nts-vc9-x86.zip
+ - IF %PHP%==1 appveyor DownloadFile https://raw.githubusercontent.com/symfony/binary-utils/master/php_intl-3.0.0-5.3-nts-vc9-x86.zip
- IF %PHP%==1 7z x php_intl-3.0.0-5.3-nts-vc9-x86.zip -y >nul
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/apcu/4.0.10/php_apcu-4.0.10-5.3-nts-vc9-x86.zip
- IF %PHP%==1 7z x php_apcu-4.0.10-5.3-nts-vc9-x86.zip -y >nul
@@ -50,12 +50,12 @@ install:
- IF %PHP%==1 echo extension=php_ldap.dll >> php.ini-max
- IF %PHP%==1 echo extension=php_curl.dll >> php.ini-max
- IF %PHP%==1 echo curl.cainfo=c:\php\cacert.pem >> php.ini-max
- - appveyor DownloadFile https://getcomposer.org/composer.phar
+ - IF %PHP%==1 appveyor DownloadFile https://getcomposer.org/download/1.0.2/composer.phar
- copy /Y php.ini-max php.ini
- cd c:\projects\symfony
- mkdir %APPDATA%\Composer
- - IF %APPVEYOR_REPO_NAME%==symfony/symfony copy /Y .composer\* %APPDATA%\Composer\
- - IF %APPVEYOR_REPO_NAME%==symfony/symfony composer global install --no-progress --ansi || echo curl.cainfo needs PHP 5.3.7
+ - copy /Y .composer\* %APPDATA%\Composer\
+ - composer global install --no-progress --ansi
- php phpunit install
- IF %APPVEYOR_REPO_BRANCH%==master (SET COMPOSER_ROOT_VERSION=dev-master) ELSE (SET COMPOSER_ROOT_VERSION=%APPVEYOR_REPO_BRANCH%.x-dev)
- composer update --no-progress --ansi
diff --git a/composer.json b/composer.json
index 288b9d9b0dedd..ee035f235b3e0 100644
--- a/composer.json
+++ b/composer.json
@@ -20,7 +20,7 @@
"doctrine/common": "~2.4",
"twig/twig": "~1.23|~2.0",
"psr/log": "~1.0",
- "symfony/security-acl": "~2.7",
+ "symfony/security-acl": "~2.7|~3.0.0",
"symfony/polyfill-apcu": "~1.1",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-mbstring": "~1.0",
@@ -93,7 +93,11 @@
},
"autoload": {
"psr-4": {
- "Symfony\\Bridge\\": "src/Symfony/Bridge/",
+ "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
+ "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
+ "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
+ "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
+ "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
"Symfony\\Bundle\\": "src/Symfony/Bundle/",
"Symfony\\Component\\": "src/Symfony/Component/"
},
@@ -104,6 +108,11 @@
"**/Tests/"
]
},
+ "autoload-dev": {
+ "psr-4": {
+ "Symfony\\Bridge\\PhpUnit\\": "src/Symfony/Bridge/PhpUnit/"
+ }
+ },
"minimum-stability": "dev",
"extra": {
"branch-alias": {
diff --git a/phpunit b/phpunit
index d2da42616d4eb..6d66f7b2b252a 100755
--- a/phpunit
+++ b/phpunit
@@ -51,6 +51,7 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit") || md5_file(__
$zip->extractTo(getcwd());
$zip->close();
chdir("phpunit-$PHPUNIT_VERSION");
+ passthru("$COMPOSER remove --no-update phpspec/prophecy");
passthru("$COMPOSER remove --no-update symfony/yaml");
passthru("$COMPOSER require --dev --no-update symfony/phpunit-bridge \">=3.1@dev\"");
passthru("$COMPOSER install --prefer-dist --no-progress --ansi", $exit);
diff --git a/src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php b/src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
index 18fb341e5b74c..88b48e1ddb47b 100644
--- a/src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
+++ b/src/Symfony/Bridge/Doctrine/Logger/DbalLogger.php
@@ -95,8 +95,8 @@ private function normalizeParams(array $params)
}
// detect if the too long string must be shorten
- if (self::MAX_STRING_LENGTH < iconv_strlen($params[$index], 'UTF-8')) {
- $params[$index] = iconv_substr($params[$index], 0, self::MAX_STRING_LENGTH - 6, 'UTF-8').' [...]';
+ if (self::MAX_STRING_LENGTH < mb_strlen($params[$index], 'UTF-8')) {
+ $params[$index] = mb_substr($params[$index], 0, self::MAX_STRING_LENGTH - 6, 'UTF-8').' [...]';
continue;
}
}
diff --git a/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php b/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php
index ecd25088be0f4..6e8c29e16b0dd 100644
--- a/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php
+++ b/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php
@@ -71,7 +71,9 @@ public function getTypes($class, $property, array $context = array())
if ($metadata->isSingleValuedAssociation($property)) {
if ($metadata instanceof ClassMetadataInfo) {
- $nullable = isset($metadata->discriminatorColumn['nullable']) ? $metadata->discriminatorColumn['nullable'] : false;
+ $associationMapping = $metadata->getAssociationMapping($property);
+
+ $nullable = $this->isAssociationNullable($associationMapping);
} else {
$nullable = false;
}
@@ -79,12 +81,25 @@ public function getTypes($class, $property, array $context = array())
return array(new Type(Type::BUILTIN_TYPE_OBJECT, $nullable, $class));
}
+ $collectionKeyType = Type::BUILTIN_TYPE_INT;
+
+ if ($metadata instanceof ClassMetadataInfo) {
+ $associationMapping = $metadata->getAssociationMapping($property);
+
+ if (isset($associationMapping['indexBy'])) {
+ $indexProperty = $associationMapping['indexBy'];
+ $typeOfField = $metadata->getTypeOfField($indexProperty);
+
+ $collectionKeyType = $this->getPhpType($typeOfField);
+ }
+ }
+
return array(new Type(
Type::BUILTIN_TYPE_OBJECT,
false,
'Doctrine\Common\Collections\Collection',
true,
- new Type(Type::BUILTIN_TYPE_INT),
+ new Type($collectionKeyType),
new Type(Type::BUILTIN_TYPE_OBJECT, false, $class)
));
}
@@ -118,6 +133,35 @@ public function getTypes($class, $property, array $context = array())
}
}
+ /**
+ * Determines whether an association is nullable.
+ *
+ * @param array $associationMapping
+ *
+ * @return bool
+ *
+ * @see https://github.com/doctrine/doctrine2/blob/v2.5.4/lib/Doctrine/ORM/Tools/EntityGenerator.php#L1221-L1246
+ */
+ private function isAssociationNullable(array $associationMapping)
+ {
+ if (isset($associationMapping['id']) && $associationMapping['id']) {
+ return false;
+ }
+
+ if (!isset($associationMapping['joinColumns'])) {
+ return true;
+ }
+
+ $joinColumns = $associationMapping['joinColumns'];
+ foreach ($joinColumns as $joinColumn) {
+ if (isset($joinColumn['nullable']) && !$joinColumn['nullable']) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
/**
* Gets the corresponding built-in PHP type.
*
diff --git a/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php b/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php
index 0f056953063c4..469d8fa3d1d5d 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/Form/Type/EntityTypeTest.php
@@ -287,7 +287,7 @@ public function testSubmitSingleExpandedNull()
$field->submit(null);
$this->assertNull($field->getData());
- $this->assertNull($field->getViewData());
+ $this->assertSame('', $field->getViewData(), 'View data is always a string');
}
public function testSubmitSingleNonExpandedNull()
diff --git a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php
index ca098b6fc8e70..1bc57b1140fae 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php
@@ -54,6 +54,7 @@ public function testGetProperties()
'customFoo',
'foo',
'bar',
+ 'indexedBar',
),
$this->extractor->getProperties('Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineDummy')
);
@@ -75,7 +76,7 @@ public function typesProvider()
array('bool', array(new Type(Type::BUILTIN_TYPE_BOOL))),
array('binary', array(new Type(Type::BUILTIN_TYPE_RESOURCE))),
array('json', array(new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true))),
- array('foo', array(new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineRelation'))),
+ array('foo', array(new Type(Type::BUILTIN_TYPE_OBJECT, true, 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineRelation'))),
array('bar', array(new Type(
Type::BUILTIN_TYPE_OBJECT,
false,
@@ -84,6 +85,14 @@ public function typesProvider()
new Type(Type::BUILTIN_TYPE_INT),
new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineRelation')
))),
+ array('indexedBar', array(new Type(
+ Type::BUILTIN_TYPE_OBJECT,
+ false,
+ 'Doctrine\Common\Collections\Collection',
+ true,
+ new Type(Type::BUILTIN_TYPE_STRING),
+ new Type(Type::BUILTIN_TYPE_OBJECT, false, 'Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures\DoctrineRelation')
+ ))),
array('simpleArray', array(new Type(Type::BUILTIN_TYPE_ARRAY, false, null, true, new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING)))),
array('customFoo', null),
array('notMapped', null),
diff --git a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineDummy.php b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineDummy.php
index 0b6b7bb544039..317d14257b203 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineDummy.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineDummy.php
@@ -40,6 +40,11 @@ class DoctrineDummy
*/
public $bar;
+ /**
+ * @ManyToMany(targetEntity="DoctrineRelation", indexBy="guid")
+ */
+ protected $indexedBar;
+
/**
* @Column(type="guid")
*/
diff --git a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineRelation.php b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineRelation.php
index bfb27e9338d99..23f64d829e030 100644
--- a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineRelation.php
+++ b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/Fixtures/DoctrineRelation.php
@@ -12,6 +12,7 @@
namespace Symfony\Bridge\Doctrine\Tests\PropertyInfo\Fixtures;
use Doctrine\ORM\Mapping\Column;
+use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\Id;
/**
@@ -26,4 +27,9 @@ class DoctrineRelation
* @Column(type="smallint")
*/
public $id;
+
+ /**
+ * @Column(type="guid")
+ */
+ protected $guid;
}
diff --git a/src/Symfony/Bridge/Doctrine/composer.json b/src/Symfony/Bridge/Doctrine/composer.json
index f07527f5cb523..f0f79f522bbd1 100644
--- a/src/Symfony/Bridge/Doctrine/composer.json
+++ b/src/Symfony/Bridge/Doctrine/composer.json
@@ -17,12 +17,13 @@
],
"require": {
"php": ">=5.3.9",
- "doctrine/common": "~2.4"
+ "doctrine/common": "~2.4",
+ "symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
"symfony/stopwatch": "~2.2|~3.0.0",
"symfony/dependency-injection": "~2.2|~3.0.0",
- "symfony/form": "~2.8|~3.0.0",
+ "symfony/form": "~2.8.5|~3.0.5",
"symfony/http-kernel": "~2.2|~3.0.0",
"symfony/property-access": "~2.3|~3.0.0",
"symfony/property-info": "~2.8|3.0",
diff --git a/src/Symfony/Bridge/Monolog/Handler/ChromePhpHandler.php b/src/Symfony/Bridge/Monolog/Handler/ChromePhpHandler.php
index 267b012966901..2636bc3b8980e 100644
--- a/src/Symfony/Bridge/Monolog/Handler/ChromePhpHandler.php
+++ b/src/Symfony/Bridge/Monolog/Handler/ChromePhpHandler.php
@@ -41,7 +41,7 @@ public function onKernelResponse(FilterResponseEvent $event)
return;
}
- if (!preg_match('{\bChrome/\d+[\.\d+]*\b}', $event->getRequest()->headers->get('User-Agent'))) {
+ if (!preg_match('{\b(?:Chrome/\d+(?:\.\d+)*|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}', $event->getRequest()->headers->get('User-Agent'))) {
$this->sendHeaders = false;
$this->headers = array();
diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
index efd17102923a7..330798fa6eb89 100644
--- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
+++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php
@@ -194,7 +194,11 @@ public static function register($mode = 0)
private static function hasColorSupport()
{
if ('\\' === DIRECTORY_SEPARATOR) {
- return false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM');
+ return
+ 0 >= version_compare('10.0.10586', PHP_WINDOWS_VERSION_MAJOR.'.'.PHP_WINDOWS_VERSION_MINOR.'.'.PHP_WINDOWS_VERSION_BUILD)
+ || false !== getenv('ANSICON')
+ || 'ON' === getenv('ConEmuANSI')
+ || 'xterm' === getenv('TERM');
}
return defined('STDOUT') && function_exists('posix_isatty') && @posix_isatty(STDOUT);
diff --git a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
index 7f9684c0de4df..5e1441126ad52 100644
--- a/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
+++ b/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig
@@ -322,7 +322,7 @@
{%- if read_only %} readonly="readonly"{% endif -%}
{%- if disabled %} disabled="disabled"{% endif -%}
{%- if required %} required="required"{% endif -%}
- {%- for attrname, attrvalue in attr if 'readonly' != attrname -%}
+ {%- for attrname, attrvalue in attr if 'readonly' != attrname or not read_only -%}
{{- " " -}}
{%- if attrname in ['placeholder', 'title'] -%}
{{- attrname }}="{{ translation_domain is same as(false) ? attrvalue : attrvalue|trans({}, translation_domain) }}"
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
index 3c8eca370ffec..f6d9877f1f10b 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
@@ -80,7 +80,7 @@ protected function configure()
php %command.full_name% --parameters
-Display a specific parameter by specifying his name with the --parameter option:
+Display a specific parameter by specifying its name with the --parameter option:
php %command.full_name% --parameter=kernel.debug
@@ -100,25 +100,21 @@ protected function execute(InputInterface $input, OutputInterface $output)
}
$this->validateInput($input);
+ $object = $this->getContainerBuilder();
if ($input->getOption('parameters')) {
- $object = $this->getContainerBuilder()->getParameterBag();
+ $object = $object->getParameterBag();
$options = array();
} elseif ($parameter = $input->getOption('parameter')) {
- $object = $this->getContainerBuilder();
$options = array('parameter' => $parameter);
} elseif ($input->getOption('tags')) {
- $object = $this->getContainerBuilder();
$options = array('group_by' => 'tags', 'show_private' => $input->getOption('show-private'));
} elseif ($tag = $input->getOption('tag')) {
- $object = $this->getContainerBuilder();
$options = array('tag' => $tag, 'show_private' => $input->getOption('show-private'));
} elseif ($name = $input->getArgument('name')) {
- $object = $this->getContainerBuilder();
$name = $this->findProperServiceName($input, $io, $object, $name);
$options = array('id' => $name);
} else {
- $object = $this->getContainerBuilder();
$options = array('show_private' => $input->getOption('show-private'));
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php b/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php
index 6804ded30d0e5..31593b9b80506 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerResolver.php
@@ -78,6 +78,10 @@ protected function createController($controller)
*/
protected function instantiateController($class)
{
+ if ($this->container->has($class)) {
+ return $this->container->get($class);
+ }
+
$controller = parent::instantiateController($class);
if ($controller instanceof ContainerAwareInterface) {
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/widget_attributes.html.php b/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/widget_attributes.html.php
index 8e3e35e8342a3..6e2f74836e6f0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/widget_attributes.html.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/widget_attributes.html.php
@@ -2,7 +2,7 @@
disabled="disabled"
required="required"
$v): ?>
-
+
escape($k), $view->escape(false !== $translation_domain ? $view['translator']->trans($v, array(), $translation_domain) : $v)) ?>
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php
index 76a3489fe1551..b4dc8ada555b6 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Controller/ControllerResolverTest.php
@@ -87,6 +87,8 @@ public function testGetControllerService()
public function testGetControllerInvokableService()
{
+ $invokableController = new InvokableController('bar');
+
$container = $this->createMockContainer();
$container->expects($this->once())
->method('has')
@@ -96,7 +98,7 @@ public function testGetControllerInvokableService()
$container->expects($this->once())
->method('get')
->with('foo')
- ->will($this->returnValue($this))
+ ->will($this->returnValue($invokableController))
;
$resolver = $this->createControllerResolver(null, null, $container);
@@ -105,7 +107,33 @@ public function testGetControllerInvokableService()
$controller = $resolver->getController($request);
- $this->assertInstanceOf(get_class($this), $controller);
+ $this->assertEquals($invokableController, $controller);
+ }
+
+ public function testGetControllerInvokableServiceWithClassNameAsName()
+ {
+ $invokableController = new InvokableController('bar');
+ $className = __NAMESPACE__.'\InvokableController';
+
+ $container = $this->createMockContainer();
+ $container->expects($this->once())
+ ->method('has')
+ ->with($className)
+ ->will($this->returnValue(true))
+ ;
+ $container->expects($this->once())
+ ->method('get')
+ ->with($className)
+ ->will($this->returnValue($invokableController))
+ ;
+
+ $resolver = $this->createControllerResolver(null, null, $container);
+ $request = Request::create('/');
+ $request->attributes->set('_controller', $className);
+
+ $controller = $resolver->getController($request);
+
+ $this->assertEquals($invokableController, $controller);
}
/**
@@ -178,3 +206,14 @@ public function __invoke()
{
}
}
+
+class InvokableController
+{
+ public function __construct($bar) // mandatory argument to prevent automatic instantiation
+ {
+ }
+
+ public function __invoke()
+ {
+ }
+}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php b/src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php
index 2be420ba8b0b0..d77eb279f4a69 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/Controller/RouterController.php
@@ -11,6 +11,7 @@
namespace Symfony\Bundle\WebProfilerBundle\Controller;
+use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Matcher\UrlMatcherInterface;
use Symfony\Component\Routing\Matcher\TraceableUrlMatcher;
diff --git a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
index 71c5090fc8a53..ee537af4f9889 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
+++ b/src/Symfony/Bundle/WebProfilerBundle/EventListener/WebDebugToolbarListener.php
@@ -65,7 +65,7 @@ public function onKernelResponse(FilterResponseEvent $event)
try {
$response->headers->set(
'X-Debug-Token-Link',
- $this->urlGenerator->generate('_profiler', array('token' => $response->headers->get('X-Debug-Token')))
+ $this->urlGenerator->generate('_profiler', array('token' => $response->headers->get('X-Debug-Token')), UrlGeneratorInterface::ABSOLUTE_URL)
);
} catch (\Exception $e) {
$response->headers->set('X-Debug-Error', get_class($e).': '.$e->getMessage());
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
index a2a7dff8b49f0..545d34e48697e 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/config.html.twig
@@ -50,24 +50,24 @@
- {% if 'n/a' != collector.appname %}
+ {% if 'n/a' is not same as(collector.appname) %}
Kernel name
{{ collector.appname }}
{% endif %}
- {% if 'n/a' != collector.env %}
+ {% if 'n/a' is not same as(collector.env) %}
Environment
{{ collector.env }}
{% endif %}
- {% if 'n/a' != collector.debug %}
+ {% if 'n/a' is not same as(collector.debug) %}
Debug
- {{ collector.debug ? 'enabled' : 'disabled' }}
+ {{ collector.debug ? 'enabled' : 'disabled' }}
{% endif %}
diff --git a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg
index 170e4c0cf941b..30b1c2e9aad51 100644
--- a/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg
+++ b/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Icon/symfony.svg
@@ -1,4 +1,4 @@
-