diff --git a/.gitignore b/.gitignore index 4321e1b..4d76a4e 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ config.ini cache.properties composer.phar phpunit.xml +.php_cs.cache diff --git a/.php_cs b/.php_cs new file mode 100644 index 0000000..6a706e3 --- /dev/null +++ b/.php_cs @@ -0,0 +1,29 @@ +in(__DIR__ . '/src') + ->in(__DIR__ . '/tests'); + +return PhpCsFixer\Config::create() + ->setRules([ + '@Symfony' => true, + 'array_syntax' => ['syntax' => 'short'], + 'blank_line_after_opening_tag' => true, + 'concat_space' => ['spacing' => 'one'], + 'method_argument_space' => ['ensure_fully_multiline' => true], + 'modernize_types_casting' => true, + 'no_multiline_whitespace_before_semicolons' => true, + 'no_useless_else' => true, + 'no_useless_return' => true, + 'ordered_class_elements' => true, + 'ordered_imports' => true, + 'phpdoc_align' => false, + 'phpdoc_order' => true, + 'php_unit_construct' => true, + 'php_unit_dedicate_assert' => true, + 'pre_increment' => false, + 'single_line_comment_style' => true, + ]) + ->setFinder($finder) + ->setUsingCache(true) + ->setRiskyAllowed(true); diff --git a/.travis.yml b/.travis.yml index 111f43d..13eb98f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,20 @@ language: php -before_script: - - curl -s http://getcomposer.org/installer | php - - php composer.phar install --dev - php: - - 5.3 - 5.4 + - 7.0 + - 7.1 -script: phpunit +cache: + directories: + - vendor + +install: + - travis_retry composer install --no-interaction --prefer-source + +script: + - vendor/bin/php-cs-fixer fix --dry-run -v + - vendor/bin/phpunit --verbose + +matrix: + fast_finish: true diff --git a/LICENSE.txt b/LICENSE.txt index 492bec5..f8757b3 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2012-2015, Klaus Silveira and contributors +Copyright (c) 2012, Klaus Silveira and contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/README.md b/README.md index 4b8aec7..008515b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # GitList: an elegant git repository viewer [![Build Status](https://secure.travis-ci.org/klaussilveira/gitlist.png)](http://travis-ci.org/klaussilveira/gitlist) -GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/). +GitList is an elegant and modern web interface for interacting with multiple git repositories. It allows you to browse repositories using your favorite browser, viewing files under different revisions, commit history, diffs. It also generates RSS feeds for each repository, allowing you to stay up-to-date with the latest changes anytime, anywhere. GitList was written in PHP, on top of the [Silex](http://silex.sensiolabs.org/) microframework and powered by the Twig template engine. This means that GitList is easy to install and easy to customize. Also, the GitList gorgeous interface was made possible due to [Bootstrap](http://twitter.github.com/bootstrap/). ## Features * Multiple repository support @@ -26,10 +26,10 @@ In order to run GitList on your server, you'll need: * git * Apache with mod_rewrite enabled or nginx -* PHP 5.3.3 +* PHP 5.4 ## Installation -* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. +* Download GitList from [gitlist.org](http://gitlist.org/) and decompress to your `/var/www/gitlist` folder, or anywhere else you want to place GitList. * Do not download a branch or tag from GitHub, unless you want to use the development version. The version available for download at the website already has all dependencies bundled, so you don't have to use composer or any other tool * Rename the `config.ini-example` file to `config.ini`. * Open up the `config.ini` and configure your installation. You'll have to provide where your repositories are located. diff --git a/build.xml b/build.xml index ed63c46..46f36b2 100644 --- a/build.xml +++ b/build.xml @@ -87,17 +87,16 @@ - - - - - + + + + - + =5.3.0" + "php": ">=5.3.0", + "psr/container": "^1.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { "psr-0": { - "Pimple": "lib/" + "Pimple": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -92,32 +96,89 @@ "email": "fabien@symfony.com" } ], - "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "description": "Pimple, a simple Dependency Injection Container", "homepage": "http://pimple.sensiolabs.org", "keywords": [ "container", "dependency injection" ], - "time": "2013-11-22 08:30:29" + "time": "2017-07-23T07:32:15+00:00" }, { - "name": "psr/log", + "name": "psr/container", "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -131,73 +192,80 @@ } ], "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "silex/silex", - "version": "v1.2.0", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/silexphp/Silex.git", - "reference": "aed7cb81eef9ba1082204027a0e3b60440a212e0" + "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/aed7cb81eef9ba1082204027a0e3b60440a212e0", - "reference": "aed7cb81eef9ba1082204027a0e3b60440a212e0", + "url": "https://api.github.com/repos/silexphp/Silex/zipball/ec7d5b5334465414952d4b2e935e73bd085dbbbb", + "reference": "ec7d5b5334465414952d4b2e935e73bd085dbbbb", "shasum": "" }, "require": { - "php": ">=5.3.3", - "pimple/pimple": "~1.0", - "symfony/event-dispatcher": ">=2.3,<2.6-dev", - "symfony/http-foundation": ">=2.3,<2.6-dev", - "symfony/http-kernel": ">=2.3,<2.6-dev", - "symfony/routing": ">=2.3,<2.6-dev" + "php": ">=5.5.9", + "pimple/pimple": "~3.0", + "symfony/event-dispatcher": "~2.8|^3.0", + "symfony/http-foundation": "~2.8|^3.0", + "symfony/http-kernel": "~2.8|^3.0", + "symfony/routing": "~2.8|^3.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35 || >= 5.0, <5.4.3" + }, + "replace": { + "silex/api": "self.version", + "silex/providers": "self.version" }, "require-dev": { "doctrine/dbal": "~2.2", - "monolog/monolog": "~1.4,>=1.4.1", - "phpunit/phpunit": "~3.7", - "swiftmailer/swiftmailer": "5.*", - "symfony/browser-kit": ">=2.3,<2.6-dev", - "symfony/config": ">=2.3,<2.6-dev", - "symfony/css-selector": ">=2.3,<2.6-dev", - "symfony/debug": ">=2.3,<2.6-dev", - "symfony/dom-crawler": ">=2.3,<2.6-dev", - "symfony/finder": ">=2.3,<2.6-dev", - "symfony/form": ">=2.3,<2.6-dev", - "symfony/locale": ">=2.3,<2.6-dev", - "symfony/monolog-bridge": ">=2.3,<2.6-dev", - "symfony/options-resolver": ">=2.3,<2.6-dev", - "symfony/process": ">=2.3,<2.6-dev", - "symfony/security": ">=2.3,<2.6-dev", - "symfony/serializer": ">=2.3,<2.6-dev", - "symfony/translation": ">=2.3,<2.6-dev", - "symfony/twig-bridge": ">=2.3,<2.6-dev", - "symfony/validator": ">=2.3,<2.6-dev", - "twig/twig": ">=1.8.0,<2.0-dev" - }, - "suggest": { - "symfony/browser-kit": ">=2.3,<2.6-dev", - "symfony/css-selector": ">=2.3,<2.6-dev", - "symfony/dom-crawler": ">=2.3,<2.6-dev", - "symfony/form": ">=2.3,<2.6-dev" + "monolog/monolog": "^1.4.1", + "swiftmailer/swiftmailer": "~5", + "symfony/asset": "~2.8|^3.0", + "symfony/browser-kit": "~2.8|^3.0", + "symfony/config": "~2.8|^3.0", + "symfony/css-selector": "~2.8|^3.0", + "symfony/debug": "~2.8|^3.0", + "symfony/doctrine-bridge": "~2.8|^3.0", + "symfony/dom-crawler": "~2.8|^3.0", + "symfony/expression-language": "~2.8|^3.0", + "symfony/finder": "~2.8|^3.0", + "symfony/form": "~2.8|^3.0", + "symfony/intl": "~2.8|^3.0", + "symfony/monolog-bridge": "~2.8|^3.0", + "symfony/options-resolver": "~2.8|^3.0", + "symfony/phpunit-bridge": "^3.2", + "symfony/process": "~2.8|^3.0", + "symfony/security": "~2.8|^3.0", + "symfony/serializer": "~2.8|^3.0", + "symfony/translation": "~2.8|^3.0", + "symfony/twig-bridge": "~2.8|^3.0", + "symfony/validator": "~2.8|^3.0", + "symfony/var-dumper": "~2.8|^3.0", + "symfony/web-link": "^3.3", + "twig/twig": "~1.28|~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { - "psr-0": { - "Silex": "src/" + "psr-4": { + "Silex\\": "src/Silex" } }, "notification-url": "https://packagist.org/downloads/", @@ -207,214 +275,56 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" + "email": "igor@wiedler.ch" } ], - "description": "The PHP micro-framework based on the Symfony2 Components", + "description": "The PHP micro-framework based on the Symfony Components", "homepage": "http://silex.sensiolabs.org", "keywords": [ "microframework" ], - "time": "2014-03-29 14:15:59" + "time": "2017-07-23T07:40:14+00:00" }, { "name": "symfony/debug", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Debug", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "6a8eb9aba50595014fef52d6b4d99b31dfaa6f02" + "url": "https://github.com/symfony/debug.git", + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/6a8eb9aba50595014fef52d6b4d99b31dfaa6f02", - "reference": "6a8eb9aba50595014fef52d6b4d99b31dfaa6f02", + "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" - }, - "suggest": { - "symfony/http-foundation": "", - "symfony/http-kernel": "" + "symfony/http-kernel": "~2.8|~3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Debug\\": "" - } - }, - "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 Debug Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:42" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.4.4", - "target-dir": "Symfony/Component/EventDispatcher", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e539602e5455aa086c0e81e604745af7789e4d8a", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/dependency-injection": "~2.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" - }, - { - "name": "symfony/filesystem", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Filesystem", - "source": { - "type": "git", - "url": "https://github.com/symfony/Filesystem.git", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a3af8294bcce4a7c1b2892363b0c9d8109affad4", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Filesystem\\": "" - } - }, - "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 Filesystem Component", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" - }, - { - "name": "symfony/http-foundation", - "version": "v2.4.4", - "target-dir": "Symfony/Component/HttpFoundation", - "source": { - "type": "git", - "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "22c4dee84271ad0cd08d19f26d89f2878e11159b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/22c4dee84271ad0cd08d19f26d89f2878e11159b", - "reference": "22c4dee84271ad0cd08d19f26d89f2878e11159b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/expression-language": "~2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "classmap": [ - "Symfony/Component/HttpFoundation/Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -424,52 +334,226 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 21:02:05" + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2017-07-28T15:27:31+00:00" }, { - "name": "symfony/http-kernel", - "version": "v2.4.4", - "target-dir": "Symfony/Component/HttpKernel", + "name": "symfony/event-dispatcher", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/HttpKernel.git", - "reference": "0e4410de0f39603d4c44b75fe399470e7de89dc4" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0e4410de0f39603d4c44b75fe399470e7de89dc4", - "reference": "0e4410de0f39603d4c44b75fe399470e7de89dc4", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "psr/log": "~1.0", - "symfony/debug": "~2.3", - "symfony/event-dispatcher": "~2.1", - "symfony/http-foundation": "~2.4" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" }, "require-dev": { - "symfony/browser-kit": "~2.2", - "symfony/class-loader": "~2.1", - "symfony/config": "~2.0", - "symfony/console": "~2.2", - "symfony/dependency-injection": "~2.0", - "symfony/finder": "~2.0", - "symfony/process": "~2.0", - "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.2" + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-06-09T14:53:08+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676", + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-07-11T07:17:58+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49e8cd2d59a7aa9bfab19e46de680c76e500a031", + "reference": "49e8cd2d59a7aa9bfab19e46de680c76e500a031", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "symfony/expression-language": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-07-21T11:04:46+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db10d05f1d95e4168e638db7a81c79616f568ea5", + "reference": "db10d05f1d95e4168e638db7a81c79616f568ea5", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "psr/log": "~1.0", + "symfony/debug": "~2.8|~3.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/http-foundation": "~3.3" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.3", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/css-selector": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/dom-crawler": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0", + "symfony/routing": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~3.3" }, "suggest": { "symfony/browser-kit": "", @@ -477,18 +561,22 @@ "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "" + "symfony/finder": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\HttpKernel\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -497,47 +585,106 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony HttpKernel Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:39:18" + "homepage": "https://symfony.com", + "time": "2017-08-01T10:25:59+00:00" }, { - "name": "symfony/process", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Process", + "name": "symfony/polyfill-mbstring", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7", - "reference": "8721f1476d5d38a43c7d6ccb6435b351cf8f3bb7", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2017-06-14T15:44:48+00:00" + }, + { + "name": "symfony/process", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a", + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -546,60 +693,70 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Process Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "homepage": "https://symfony.com", + "time": "2017-07-13T13:05:09+00:00" }, { "name": "symfony/routing", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Routing", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Routing.git", - "reference": "74229f66e16bce6d2415ca44d4756f8e7ea880f8" + "url": "https://github.com/symfony/routing.git", + "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/74229f66e16bce6d2415ca44d4756f8e7ea880f8", - "reference": "74229f66e16bce6d2415ca44d4756f8e7ea880f8", + "url": "https://api.github.com/repos/symfony/routing/zipball/4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", + "reference": "4aee1a917fd4859ff8b51b9fd1dfb790a5ecfa26", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.3" }, "require-dev": { "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", "psr/log": "~1.0", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/yaml": "~2.0" + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", + "symfony/expression-language": "~2.8|~3.0", + "symfony/http-foundation": "~2.8|~3.0", + "symfony/yaml": "~3.3" }, "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": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Routing\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -608,178 +765,67 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Routing Component", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "router", "routing", "uri", "url" ], - "time": "2014-04-23 14:04:21" - }, - { - "name": "symfony/security-core", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Security/Core", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-core.git", - "reference": "1fbe80d10b7a5bcb619abe3e4cfede795d9958dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/1fbe80d10b7a5bcb619abe3e4cfede795d9958dc", - "reference": "1fbe80d10b7a5bcb619abe3e4cfede795d9958dc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "ircmaxell/password-compat": "1.0.*", - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.4", - "symfony/validator": "~2.2" - }, - "suggest": { - "ircmaxell/password-compat": "For using the BCrypt password encoder in PHP <5.5", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/validator": "For using the user password constraint" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Security\\Core\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Security Component - Core Library", - "homepage": "http://symfony.com", - "time": "2014-04-23 14:04:21" - }, - { - "name": "symfony/security-csrf", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Security/Csrf", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-csrf.git", - "reference": "920c60129db785b4454d254b638f332dc290c7cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/920c60129db785b4454d254b638f332dc290c7cb", - "reference": "920c60129db785b4454d254b638f332dc290c7cb", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/security-core": "~2.4" - }, - "require-dev": { - "symfony/http-foundation": "~2.1" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Security\\Csrf\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "Symfony Security Component - CSRF Library", - "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:42" + "time": "2017-07-21T17:43:13+00:00" }, { "name": "symfony/twig-bridge", - "version": "v2.4.4", - "target-dir": "Symfony/Bridge/Twig", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/TwigBridge.git", - "reference": "c34d6f5a808c55139dcf403ab8977e2e1cfbbf32" + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/TwigBridge/zipball/c34d6f5a808c55139dcf403ab8977e2e1cfbbf32", - "reference": "c34d6f5a808c55139dcf403ab8977e2e1cfbbf32", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c", + "reference": "eaa997f4e45a3c38323b76ff0a57f9f35ae89e5c", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/security-csrf": "~2.4", - "twig/twig": "~1.12" + "php": ">=5.5.9", + "twig/twig": "~1.34|~2.4" + }, + "conflict": { + "symfony/form": "<3.2.10|~3.3,<3.3.3" }, "require-dev": { - "symfony/expression-language": "~2.4", - "symfony/form": "~2.2", - "symfony/http-kernel": "~2.2", - "symfony/routing": "~2.2", - "symfony/security": "~2.4", - "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.1", - "symfony/translation": "~2.2", - "symfony/yaml": "~2.0" + "fig/link-util": "^1.0", + "symfony/asset": "~2.8|~3.0", + "symfony/console": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/finder": "~2.8|~3.0", + "symfony/form": "^3.2.10|^3.3.3", + "symfony/http-kernel": "~3.2", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.8|~3.0", + "symfony/security": "~2.8|~3.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0", + "symfony/templating": "~2.8|~3.0", + "symfony/translation": "~2.8|~3.0", + "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2", + "symfony/web-link": "~3.3", + "symfony/yaml": "~2.8|~3.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", @@ -787,18 +833,23 @@ "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": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Bridge\\Twig\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -807,45 +858,52 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Twig Bridge", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "homepage": "https://symfony.com", + "time": "2017-07-26T06:42:48+00:00" }, { "name": "twig/twig", - "version": "v1.15.1", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed" + "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed", - "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/eab7c3288ae6603d7d6f92b531626af2b162d1f2", + "reference": "eab7c3288ae6603d7d6f92b531626af2b162d1f2", "shasum": "" }, "require": { - "php": ">=5.2.4" + "php": "^7.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.3@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "2.4-dev" } }, "autoload": { "psr-0": { "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -866,7 +924,7 @@ }, { "name": "Twig Team", - "homepage": "https://github.com/fabpot/Twig/graphs/contributors", + "homepage": "http://twig.sensiolabs.org/contributors", "role": "Contributors" } ], @@ -875,10 +933,394 @@ "keywords": [ "templating" ], - "time": "2014-02-13 10:19:29" + "time": "2017-06-07T18:47:58+00:00" } ], "packages-dev": [ + { + "name": "doctrine/annotations", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f", + "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-07-22T10:58:02+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "63aad575ec2a29d50eb6c3b5cbc17430b28895b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/63aad575ec2a29d50eb6c3b5cbc17430b28895b2", + "reference": "63aad575ec2a29d50eb6c3b5cbc17430b28895b2", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "gecko-packages/gecko-php-unit": "^2.0", + "php": "^5.6 || >=7.0 <7.2", + "sebastian/diff": "^1.4", + "symfony/console": "^3.2", + "symfony/event-dispatcher": "^3.0", + "symfony/filesystem": "^3.0", + "symfony/finder": "^3.0", + "symfony/options-resolver": "^3.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0", + "symfony/stopwatch": "^3.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1", + "justinrainbow/json-schema": "^5.0", + "php-cs-fixer/accessible-object": "^1.0", + "phpunit/phpunit": "^4.8.35 || ^5.4.3", + "satooshi/php-coveralls": "^1.0", + "symfony/phpunit-bridge": "^3.2.2" + }, + "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", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.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": "2017-08-22T14:15:09+00:00" + }, + { + "name": "gecko-packages/gecko-php-unit", + "version": "v2.1", + "source": { + "type": "git", + "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", + "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/5b9e9622c7efd3b22655270b80c03f9e52878a6e", + "reference": "5b9e9622c7efd3b22655270b80c03f9e52878a6e", + "shasum": "" + }, + "require": { + "php": "^5.3.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "GeckoPackages\\PHPUnit\\": "src\\PHPUnit" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Additional PHPUnit tests.", + "homepage": "https://github.com/GeckoPackages", + "keywords": [ + "extension", + "filesystem", + "phpunit" + ], + "time": "2017-06-20T11:22:48+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/collections": "1.*", + "phpunit/phpunit": "~4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "homepage": "https://github.com/myclabs/DeepCopy", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-04-12T18:52:22+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.10", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "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-03-13T16:27:32+00:00" + }, { "name": "pdepend/pdepend", "version": "1.1.3", @@ -910,7 +1352,153 @@ "BSD-3-Clause" ], "description": "Official version of pdepend to be handled with Composer", - "time": "2013-12-04 17:46:00" + "time": "2013-12-04T17:46:00+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.3.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-08-08T06:39:58+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-06-03T08:32:36+00:00" }, { "name": "phploc/phploc", @@ -960,26 +1548,30 @@ ], "description": "A tool for quickly measuring the size of a PHP project.", "homepage": "https://github.com/sebastianbergmann/phploc", - "time": "2014-04-27 06:47:27" + "time": "2014-04-27T06:47:27+00:00" }, { "name": "phpmd/phpmd", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "692b7b1b64518091b2b1bea91b489dbb13598c07" + "reference": "f2d47500f4c5f80ee442d95829c62c2ece2bbeb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/692b7b1b64518091b2b1bea91b489dbb13598c07", - "reference": "692b7b1b64518091b2b1bea91b489dbb13598c07", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/f2d47500f4c5f80ee442d95829c62c2ece2bbeb6", + "reference": "f2d47500f4c5f80ee442d95829c62c2ece2bbeb6", "shasum": "" }, "require": { - "pdepend/pdepend": ">=1.1.1", + "pdepend/pdepend": "1.1.*", "php": ">=5.3.0" }, + "require-dev": { + "phpunit/phpunit": "3.*@stable", + "squizlabs/php_codesniffer": "@stable" + }, "bin": [ "src/bin/phpmd" ], @@ -989,44 +1581,111 @@ "../../pdepend/pdepend/src/main/php", "src/main/php" ], + "license": [ + "BSD-3-Clause" + ], "description": "Official version of PHPMD handled with Composer.", - "time": "2013-07-26 14:47:02" + "time": "2014-09-16T14:26:49+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "2.0.6", + "name": "phpspec/prophecy", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "bccecf50645068b44f49a84009e2a0499a500b99" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/bccecf50645068b44f49a84009e2a0499a500b99", - "reference": "bccecf50645068b44f49a84009e2a0499a500b99", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", + "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2.0", - "phpunit/php-token-stream": "~1.2.2", - "sebastian/environment": "~1.0.0", - "sebastian/version": "~1.0.3" + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4.0.14" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2017-03-02T20:05:34+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^5.6 || ^7.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", + "sebastian/environment": "^1.3.2 || ^2.0", + "sebastian/version": "^1.0 || ^2.0" + }, + "require-dev": { + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" + }, + "suggest": { + "ext-xdebug": "^2.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1035,9 +1694,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1055,35 +1711,37 @@ "testing", "xunit" ], - "time": "2014-04-30 09:01:21" + "time": "2017-04-02T07:44:40+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.3.4", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb" + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb", - "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", "shasum": "" }, "require": { "php": ">=5.3.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, "autoload": { "classmap": [ - "File/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1100,20 +1758,20 @@ "filesystem", "iterator" ], - "time": "2013-10-10 15:34:57" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { @@ -1122,20 +1780,17 @@ "type": "library", "autoload": { "classmap": [ - "Text/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1144,35 +1799,40 @@ "keywords": [ "template" ], - "time": "2014-01-30 17:20:04" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.5", + "version": "1.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1188,101 +1848,33 @@ "keywords": [ "timer" ], - "time": "2013-08-02 07:42:54" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.2.2", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32" + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32", - "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", + "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "classmap": [ - "PHP/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2014-03-03 05:10:30" - }, - { - "name": "phpunit/phpunit", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "efb1b1334605594417a3bd466477772d06d460a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/efb1b1334605594417a3bd466477772d06d460a8", - "reference": "efb1b1334605594417a3bd466477772d06d460a8", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpunit/php-code-coverage": "~2.0", - "phpunit/php-file-iterator": "~1.3.1", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0.2", - "phpunit/phpunit-mock-objects": "~2.1", - "sebastian/comparator": "~1.0", - "sebastian/diff": "~1.1", - "sebastian/environment": "~1.0", - "sebastian/exporter": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1291,10 +1883,85 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "", - "../../symfony/yaml/" + "license": [ + "BSD-3-Clause" ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2017-08-20T05:47:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "5.7.21", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "3b91adfb64264ddec5a2dee9851f354aa66327db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3b91adfb64264ddec5a2dee9851f354aa66327db", + "reference": "3b91adfb64264ddec5a2dee9851f354aa66327db", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "~1.0.3|~2.0", + "symfony/yaml": "~2.1|~3.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.7.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], @@ -1306,34 +1973,39 @@ } ], "description": "The PHP Unit Testing framework.", - "homepage": "http://www.phpunit.de/", + "homepage": "https://phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], - "time": "2014-05-02 07:13:40" + "time": "2017-06-21T08:11:54+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "2.1.0", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c" + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/da0eb04d8ee95ec2898187e407e519c118d3d27c", - "reference": "da0eb04d8ee95ec2898187e407e519c118d3d27c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "^5.4" }, "suggest": { "ext-soap": "*" @@ -1341,7 +2013,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { @@ -1350,9 +2022,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -1369,29 +2038,27 @@ "mock", "xunit" ], - "time": "2014-05-02 07:04:11" + "time": "2017-06-30T09:13:00+00:00" }, { - "name": "sebastian/comparator", - "version": "1.0.0", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", - "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.1", - "sebastian/exporter": "~1.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { @@ -1411,9 +2078,51 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1425,6 +2134,10 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", @@ -1434,29 +2147,32 @@ "compare", "equality" ], - "time": "2014-05-02 07:05:58" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", - "version": "1.1.0", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d" + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", - "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1469,47 +2185,46 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, { "name": "Kore Nordmann", "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ "diff" ], - "time": "2013-08-03 16:46:33" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", - "version": "1.0.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a" + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a", - "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "phpunit/phpunit": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1524,8 +2239,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], "description": "Provides functionality to handle HHVM/PHP environments", @@ -1535,32 +2249,34 @@ "environment", "hhvm" ], - "time": "2014-02-18 16:17:19" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529" + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", - "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" }, "require-dev": { - "phpunit/phpunit": "4.0.*@dev" + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1573,11 +2289,6 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1586,14 +2297,17 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net", - "role": "Lead" - }, { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -1602,25 +2316,25 @@ "export", "exporter" ], - "time": "2014-02-16 08:26:31" + "time": "2016-11-19T08:54:04+00:00" }, { "name": "sebastian/finder-facade", - "version": "1.1.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/finder-facade.git", - "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0" + "reference": "2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/1e396fda3449fce9df032749fa4fa2619e0347e0", - "reference": "1e396fda3449fce9df032749fa4fa2619e0347e0", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9", + "reference": "2a6f7f57efc0aa2d23297d9fd9e2a03111a8c0b9", "shasum": "" }, "require": { - "symfony/finder": ">=2.2.0", - "theseer/fdomdocument": ">=1.3.1" + "symfony/finder": "~2.3|~3.0", + "theseer/fdomdocument": "~1.3" }, "type": "library", "autoload": { @@ -1641,20 +2355,20 @@ ], "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", "homepage": "https://github.com/sebastianbergmann/finder-facade", - "time": "2013-05-28 06:10:03" + "time": "2016-02-17T07:02:23+00:00" }, { "name": "sebastian/git", - "version": "1.2.0", + "version": "2.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/git.git", - "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba" + "reference": "815bbbc963cf35e5413df195aa29df58243ecd24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/git/zipball/a99fbc102e982c1404041ef3e4d431562b29bcba", - "reference": "a99fbc102e982c1404041ef3e4d431562b29bcba", + "url": "https://api.github.com/repos/sebastianbergmann/git/zipball/815bbbc963cf35e5413df195aa29df58243ecd24", + "reference": "815bbbc963cf35e5413df195aa29df58243ecd24", "shasum": "" }, "require": { @@ -1663,7 +2377,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1678,8 +2392,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], "description": "Simple wrapper for Git", @@ -1687,28 +2400,126 @@ "keywords": [ "git" ], - "time": "2013-08-04 09:35:29" + "abandoned": true, + "time": "2017-01-23T20:57:12+00:00" }, { - "name": "sebastian/phpcpd", - "version": "2.0.1", + "name": "sebastian/global-state", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpcpd.git", - "reference": "a9462153f2dd90466a010179901d31fbff598365" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/a9462153f2dd90466a010179901d31fbff598365", - "reference": "a9462153f2dd90466a010179901d31fbff598365", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-02-18T15:18:39+00:00" + }, + { + "name": "sebastian/phpcpd", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpcpd.git", + "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/24d9a880deadb0b8c9680e9cfe78e30b704225db", + "reference": "24d9a880deadb0b8c9680e9cfe78e30b704225db", "shasum": "" }, "require": { "php": ">=5.3.3", - "phpunit/php-timer": ">=1.0.4", - "sebastian/finder-facade": ">=1.1.0", - "sebastian/version": ">=1.0.3", - "symfony/console": ">=2.2.0", + "phpunit/php-timer": ">=1.0.6", + "sebastian/finder-facade": "~1.1", + "sebastian/version": "~1.0|~2.0", + "symfony/console": "~2.7|^3.0", "theseer/fdomdocument": "~1.4" }, "bin": [ @@ -1738,23 +2549,126 @@ ], "description": "Copy/Paste Detector (CPD) for PHP code.", "homepage": "https://github.com/sebastianbergmann/phpcpd", - "time": "2014-03-31 09:25:30" + "time": "2016-04-17T19:32:49+00:00" }, { - "name": "sebastian/version", - "version": "1.0.3", + "name": "sebastian/recursion-context", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", - "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19T07:33:16+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2015-07-28T20:34:47+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1773,103 +2687,29 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2014-03-07 15:35:33" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "dev-phpcs-fixer", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "01f86d7cadfd8f5b1c07c04af88a16df6e51acd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/01f86d7cadfd8f5b1c07c04af88a16df6e51acd9", - "reference": "01f86d7cadfd8f5b1c07c04af88a16df6e51acd9", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.1.2" - }, - "bin": [ - "scripts/phpcs", - "scripts/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-phpcs-fixer": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Fixer.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" - ], - "time": "2014-05-12 23:03:00" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "symfony/browser-kit", - "version": "v2.3.13", - "target-dir": "Symfony/Component/BrowserKit", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/BrowserKit.git", - "reference": "97563874c24b65ea8d31b82fe051a161caf83e10" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/97563874c24b65ea8d31b82fe051a161caf83e10", - "reference": "97563874c24b65ea8d31b82fe051a161caf83e10", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", + "reference": "8079a6b3668ef15cdbf73a4c7d31081abb8bb5f0", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/dom-crawler": "~2.0" + "php": ">=5.5.9", + "symfony/dom-crawler": "~2.8|~3.0" }, "require-dev": { - "symfony/css-selector": "~2.0", - "symfony/process": "~2.0" + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { "symfony/process": "" @@ -1877,13 +2717,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\BrowserKit\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1892,53 +2735,67 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony BrowserKit Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:35:25" + "homepage": "https://symfony.com", + "time": "2017-07-12T13:03:20+00:00" }, { "name": "symfony/console", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Console", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "2e452005b1e1d003d23702d227e23614679eb5ca" + "url": "https://github.com/symfony/console.git", + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/2e452005b1e1d003d23702d227e23614679eb5ca", - "reference": "2e452005b1e1d003d23702d227e23614679eb5ca", + "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" }, "require-dev": { - "symfony/event-dispatcher": "~2.1" + "psr/log": "~1.0", + "symfony/config": "~3.3", + "symfony/dependency-injection": "~3.3", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/filesystem": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { - "symfony/event-dispatcher": "" + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/filesystem": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Console\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1947,92 +2804,90 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "homepage": "https://symfony.com", + "time": "2017-07-29T21:27:59+00:00" }, { "name": "symfony/css-selector", - "version": "v2.3.13", - "target-dir": "Symfony/Component/CssSelector", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/CssSelector.git", - "reference": "0d2ab42d49536760f045069415832c9c604c8cc7" + "url": "https://github.com/symfony/css-selector.git", + "reference": "4d882dced7b995d5274293039370148e291808f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/0d2ab42d49536760f045069415832c9c604c8cc7", - "reference": "0d2ab42d49536760f045069415832c9c604c8cc7", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4d882dced7b995d5274293039370148e291808f2", + "reference": "4d882dced7b995d5274293039370148e291808f2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\CssSelector\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony CssSelector Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:35:25" + "homepage": "https://symfony.com", + "time": "2017-05-01T15:01:29+00:00" }, { "name": "symfony/dom-crawler", - "version": "v2.4.4", - "target-dir": "Symfony/Component/DomCrawler", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/DomCrawler.git", - "reference": "e94b29c7cac964e58c406408d238ceeaa3604e78" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/e94b29c7cac964e58c406408d238ceeaa3604e78", - "reference": "e94b29c7cac964e58c406408d238ceeaa3604e78", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", + "reference": "fc2c588ce376e9fe04a7b8c79e3ec62fe32d95b1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "~2.0" + "symfony/css-selector": "~2.8|~3.0" }, "suggest": { "symfony/css-selector": "" @@ -2040,13 +2895,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\DomCrawler\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2055,47 +2913,47 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DomCrawler Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "homepage": "https://symfony.com", + "time": "2017-05-25T23:10:31+00:00" }, { "name": "symfony/finder", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Finder", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Finder.git", - "reference": "25e1e7d5e7376f8a92ae3b1d714d956edf33a730" + "url": "https://github.com/symfony/finder.git", + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Finder/zipball/25e1e7d5e7376f8a92ae3b1d714d956edf33a730", - "reference": "25e1e7d5e7376f8a92ae3b1d714d956edf33a730", + "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Finder\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2104,47 +2962,47 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony Finder Component", - "homepage": "http://symfony.com", - "time": "2014-04-27 13:34:57" + "homepage": "https://symfony.com", + "time": "2017-06-01T21:01:25+00:00" }, { - "name": "symfony/yaml", - "version": "v2.4.4", - "target-dir": "Symfony/Component/Yaml", + "name": "symfony/options-resolver", + "version": "v3.3.6", "source": { "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/65539ecde838f9c0d18b006b2101e3deb4b5c9ff", - "reference": "65539ecde838f9c0d18b006b2101e3deb4b5c9ff", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ff48982d295bcac1fd861f934f041ebc73ae40f0", + "reference": "ff48982d295bcac1fd861f934f041ebc73ae40f0", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.3-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2153,31 +3011,252 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "email": "fabien@symfony.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "time": "2017-04-12T14:14:56+00:00" }, { - "name": "theseer/fdomdocument", - "version": "1.5.0", + "name": "symfony/polyfill-php70", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/theseer/fDOMDocument.git", - "reference": "137aa3b13bef05b4e301899cbabdaf7d501847d2" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/137aa3b13bef05b4e301899cbabdaf7d501847d2", - "reference": "137aa3b13bef05b4e301899cbabdaf7d501847d2", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/b6482e68974486984f59449ecea1fbbb22ff840f", + "reference": "b6482e68974486984f59449ecea1fbbb22ff840f", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-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-06-14T15:44:48+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/8abc9097f5001d310f0edba727469c988acc6ea7", + "reference": "8abc9097f5001d310f0edba727469c988acc6ea7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2017-07-11T13:25:55+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15", + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-04-12T14:14:56+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.3.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3-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": "2017-07-23T12:43:26+00:00" + }, + { + "name": "theseer/fdomdocument", + "version": "1.6.6", + "source": { + "type": "git", + "url": "https://github.com/theseer/fDOMDocument.git", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/6e8203e40a32a9c770bcb62fe37e68b948da6dca", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca", "shasum": "" }, "require": { @@ -2204,14 +3283,62 @@ ], "description": "The classes contained within this repository extend the standard DOM to use exceptions at all occasions of errors instead of PHP warnings or notices. They also add various custom methods and shortcuts for convenience and to simplify the usage of DOM.", "homepage": "https://github.com/theseer/fDOMDocument", - "time": "2014-02-19 00:20:43" + "time": "2017-06-30T11:53:12+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "squizlabs/php_codesniffer": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], diff --git a/src/Application.php b/src/Application.php index 664c01c..094b520 100644 --- a/src/Application.php +++ b/src/Application.php @@ -2,13 +2,13 @@ namespace GitList; -use Silex\Application as SilexApplication; -use Silex\Provider\TwigServiceProvider; -use Silex\Provider\UrlGeneratorServiceProvider; use GitList\Provider\GitServiceProvider; use GitList\Provider\RepositoryUtilServiceProvider; -use GitList\Provider\ViewUtilServiceProvider; use GitList\Provider\RoutingUtilServiceProvider; +use GitList\Provider\ViewUtilServiceProvider; +use Silex\Application as SilexApplication; +use Silex\Provider\RoutingServiceProvider; +use Silex\Provider\TwigServiceProvider; use Symfony\Component\Filesystem\Filesystem; /** @@ -31,74 +31,75 @@ class Application extends SilexApplication $this->path = realpath($root); $this['debug'] = $config->get('app', 'debug'); - $this['date.format'] = $config->get('date', 'format') ? $config->get('date', 'format') : 'd/m/Y H:i:s'; $this['theme'] = $config->get('app', 'theme') ? $config->get('app', 'theme') : 'default'; - $this['title'] = $config->get('app', 'title') ? $config->get('app', 'title') : 'GitList'; + $this['date.format'] = $config->get('date', 'format') ? $config->get('date', 'format') : 'd/m/Y H:i:s'; $this['filetypes'] = $config->getSection('filetypes'); $this['binary_filetypes'] = $config->getSection('binary_filetypes'); $this['cache.archives'] = $this->getCachePath() . 'archives'; $this['avatar.url'] = $config->get('avatar', 'url'); $this['avatar.query'] = $config->get('avatar', 'query'); - $this['show_http_remote'] = $config->get('clone_button', 'show_http_remote'); - $this['use_https'] = $config->get('clone_button', 'use_https'); - $this['http_url_subdir'] = $config->get('clone_button', 'http_url_subdir'); - $this['http_user'] = $config->get('clone_button', 'http_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'http_user'); - $this['http_host'] = $config->get('clone_button', 'http_host'); - $this['show_ssh_remote'] = $config->get('clone_button', 'show_ssh_remote'); - $this['ssh_user'] = $config->get('clone_button', 'ssh_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'ssh_user'); - $this['ssh_url_subdir'] = $config->get('clone_button', 'ssh_url_subdir'); - $this['ssh_host'] = $config->get('clone_button', 'ssh_host'); // Register services - $this->register(new TwigServiceProvider(), array( - 'twig.path' => array($this->getThemePath($this['theme']), $this->getThemePath('default')), - 'twig.options' => $config->get('app', 'cache') ? - array('cache' => $this->getCachePath() . 'views') : array(), - )); + $this->register(new TwigServiceProvider(), [ + 'twig.path' => [$this->getThemePath($this['theme']), $this->getThemePath('default')], + 'twig.options' => $config->get('app', 'cache') ? + ['cache' => $this->getCachePath() . 'views'] : [], + ]); $repositories = $config->get('git', 'repositories'); $this['git.projects'] = $config->get('git', 'project_list') ? $this->parseProjectList($config->get('git', 'project_list')) : false; - $this->register(new GitServiceProvider(), array( - 'git.client' => $config->get('git', 'client'), - 'git.repos' => $repositories, - 'ini.file' => "config.ini", - 'git.hidden' => $config->get('git', 'hidden') ? - $config->get('git', 'hidden') : array(), + $this->register(new GitServiceProvider(), [ + 'git.client' => $config->get('git', 'client'), + 'git.repos' => $repositories, + 'ini.file' => 'config.ini', + 'git.hidden' => $config->get('git', 'hidden') ? + $config->get('git', 'hidden') : [], 'git.default_branch' => $config->get('git', 'default_branch') ? $config->get('git', 'default_branch') : 'master', - )); + ]); $this->register(new ViewUtilServiceProvider()); $this->register(new RepositoryUtilServiceProvider()); - $this->register(new UrlGeneratorServiceProvider()); + $this->register(new RoutingServiceProvider()); $this->register(new RoutingUtilServiceProvider()); - $this['twig'] = $this->share($this->extend('twig', function ($twig, $app) { + $this->extend('twig', function ($twig, $app) use ($config) { $twig->addFilter(new \Twig_SimpleFilter('htmlentities', 'htmlentities')); $twig->addFilter(new \Twig_SimpleFilter('md5', 'md5')); - $twig->addFilter(new \Twig_SimpleFilter('format_date', array($app, 'formatDate'))); - $twig->addFilter(new \Twig_SimpleFilter('format_size', array($app, 'formatSize'))); - $twig->addFunction(new \Twig_SimpleFunction('avatar', array($app, 'getAvatar'))); + $twig->addFilter(new \Twig_SimpleFilter('format_date', [$app, 'formatDate'])); + $twig->addFilter(new \Twig_SimpleFilter('format_size', [$app, 'formatSize'])); + $twig->addFunction(new \Twig_SimpleFunction('avatar', [$app, 'getAvatar'])); + $twig->addGlobal('theme', $app['theme']); + $twig->addGlobal('title', $config->get('app', 'title') ? $config->get('app', 'title') : 'GitList'); + $twig->addGlobal('show_http_remote', $config->get('clone_button', 'show_http_remote')); + $twig->addGlobal('use_https', $config->get('clone_button', 'use_https')); + $twig->addGlobal('http_url_subdir', $config->get('clone_button', 'http_url_subdir')); + $twig->addGlobal('http_user', $config->get('clone_button', 'http_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'http_user')); + $twig->addGlobal('http_host', $config->get('clone_button', 'http_host')); + $twig->addGlobal('show_ssh_remote', $config->get('clone_button', 'show_ssh_remote')); + $twig->addGlobal('ssh_user', $config->get('clone_button', 'ssh_user_dynamic') ? $_SERVER['PHP_AUTH_USER'] : $config->get('clone_button', 'ssh_user')); + $twig->addGlobal('ssh_url_subdir', $config->get('clone_button', 'ssh_url_subdir')); + $twig->addGlobal('ssh_host', $config->get('clone_button', 'ssh_host')); return $twig; - })); - - $this['escaper.argument'] = $this->share(function() { - return new Escaper\ArgumentEscaper(); }); + $this['escaper.argument'] = function () { + return new Escaper\ArgumentEscaper(); + }; + // Handle errors $this->error(function (\Exception $e, $code) use ($app) { if ($app['debug']) { return; } - return $app['twig']->render('error.twig', array( + return $app['twig']->render('error.twig', [ 'message' => $e->getMessage(), - )); + ]); }); $this->finish(function () use ($app, $config) { @@ -117,21 +118,26 @@ class Application extends SilexApplication public function formatSize($size) { $mod = 1000; - $units = array('B', 'kB', 'MB', 'GB'); - for($i = 0; $size > $mod; $i++) $size /= $mod; + $units = ['B', 'kB', 'MB', 'GB']; + for ($i = 0; $size > $mod; $i++) { + $size /= $mod; + } + return round($size, 2) . $units[$i]; } public function getAvatar($email, $size) { - $url = $this['avatar.url'] ? $this['avatar.url'] : "//gravatar.com/avatar/"; - $query = array("s=$size"); - if (is_string($this['avatar.query'])) + $url = $this['avatar.url'] ? $this['avatar.url'] : '//gravatar.com/avatar/'; + $query = ["s=$size"]; + if (is_string($this['avatar.query'])) { $query[] = $this['avatar.query']; - else if (is_array($this['avatar.query'])) + } elseif (is_array($this['avatar.query'])) { $query = array_merge($query, $this['avatar.query']); + } $id = md5(strtolower($email)); - return $url . $id . "?" . implode('&', $query); + + return $url . $id . '?' . implode('&', $query); } public function getPath() @@ -168,11 +174,13 @@ class Application extends SilexApplication public function parseProjectList($project_list) { - $projects = array(); - $file = fopen($project_list, "r"); - while ($file && !feof($file)) + $projects = []; + $file = fopen($project_list, 'r'); + while ($file && !feof($file)) { $projects[] = trim(fgets($file)); + } fclose($file); + return $projects; } } diff --git a/src/Config.php b/src/Config.php index fab9338..3d9f53e 100644 --- a/src/Config.php +++ b/src/Config.php @@ -6,6 +6,11 @@ class Config { protected $data; + public function __construct($data = []) + { + $this->data = $data; + } + public static function fromFile($file) { if (!file_exists($file)) { @@ -19,11 +24,6 @@ class Config return $config; } - public function __construct($data = array()) - { - $this->data = $data; - } - public function get($section, $option) { if (!array_key_exists($section, $this->data)) { @@ -67,12 +67,11 @@ class Config } if (!$atLeastOneOk) { - die("Please, edit the config file and provide your repositories directory"); + die('Please, edit the config file and provide your repositories directory'); } if ($atLeastOneWrong) { - die("One or more of the supplied repository paths appears to be wrong. Please, check the config file"); + die('One or more of the supplied repository paths appears to be wrong. Please, check the config file'); } } } - diff --git a/src/Controller/BlobController.php b/src/Controller/BlobController.php index 8164405..4bcd677 100644 --- a/src/Controller/BlobController.php +++ b/src/Controller/BlobController.php @@ -2,8 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; use Symfony\Component\HttpFoundation\Response; class BlobController implements ControllerProviderInterface @@ -25,22 +25,22 @@ class BlobController implements ControllerProviderInterface $fileType = $app['util.repository']->getFileType($file); if ($fileType !== 'image' && $app['util.repository']->isBinary($file)) { - return $app->redirect($app['url_generator']->generate('blob_raw', array( - 'repo' => $repo, + return $app->redirect($app['url_generator']->generate('blob_raw', [ + 'repo' => $repo, 'commitishPath' => $commitishPath, - ))); + ])); } - return $app['twig']->render('file.twig', array( - 'file' => $file, - 'fileType' => $fileType, - 'blob' => $blob->output(), - 'repo' => $repo, - 'branch' => $branch, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - )); + return $app['twig']->render('file.twig', [ + 'file' => $file, + 'fileType' => $fileType, + 'blob' => $blob->output(), + 'repo' => $repo, + 'branch' => $branch, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', '.+') ->convert('commitishPath', 'escaper.argument:escape') @@ -56,9 +56,9 @@ class BlobController implements ControllerProviderInterface $blob = $repository->getBlob("$branch:\"$file\"")->output(); - $headers = array(); + $headers = []; if ($app['util.repository']->isBinary($file)) { - $headers['Content-Disposition'] = 'attachment; filename="' . $file . '"'; + $headers['Content-Disposition'] = 'attachment; filename="' . $file . '"'; $headers['Content-Type'] = 'application/octet-stream'; } else { $headers['Content-Type'] = 'text/plain'; @@ -79,12 +79,12 @@ class BlobController implements ControllerProviderInterface $filePatchesLog = $repository->getCommitsLogPatch($file); $breadcrumbs = $app['util.view']->getBreadcrumbs($file); - return $app['twig']->render('logpatch.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'breadcrumbs' => $breadcrumbs, - 'commits' => $filePatchesLog, - )); + return $app['twig']->render('logpatch.twig', [ + 'branch' => $branch, + 'repo' => $repo, + 'breadcrumbs' => $breadcrumbs, + 'commits' => $filePatchesLog, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', '.+') ->convert('commitishPath', 'escaper.argument:escape') @@ -93,4 +93,3 @@ class BlobController implements ControllerProviderInterface return $route; } } - diff --git a/src/Controller/CommitController.php b/src/Controller/CommitController.php index 7702a29..b48d3de 100644 --- a/src/Controller/CommitController.php +++ b/src/Controller/CommitController.php @@ -2,8 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; use Symfony\Component\HttpFoundation\Request; class CommitController implements ControllerProviderInterface @@ -16,12 +16,13 @@ class CommitController implements ControllerProviderInterface $subRequest = Request::create( '/' . $repo . '/commits/master/search', 'POST', - array('query' => $request->get('query')) + ['query' => $request->get('query')] ); + return $app->handle($subRequest, \Symfony\Component\HttpKernel\HttpKernelInterface::SUB_REQUEST); })->assert('repo', $app['util.routing']->getRepositoryRegex()); - $route->get('{repo}/commits/{commitishPath}', function ($repo, $commitishPath) use ($app) { + $route->get('{repo}/commits/{commitishPath}', function (Request $request, $repo, $commitishPath) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($commitishPath === null) { @@ -34,9 +35,9 @@ class CommitController implements ControllerProviderInterface list($branch, $file) = $app['util.repository']->extractRef($repository, $branch, $file); $type = $file ? "$branch -- \"$file\"" : $branch; - $pager = $app['util.view']->getPager($app['request']->get('page'), $repository->getTotalCommits($type)); + $pager = $app['util.view']->getPager($request->get('page'), $repository->getTotalCommits($type)); $commits = $repository->getPaginatedCommits($type, $pager['current']); - $categorized = array(); + $categorized = []; foreach ($commits as $commit) { $date = $commit->getCommiterDate(); @@ -44,18 +45,18 @@ class CommitController implements ControllerProviderInterface $categorized[$date][] = $commit; } - $template = $app['request']->isXmlHttpRequest() ? 'commits_list.twig' : 'commits.twig'; + $template = $request->isXmlHttpRequest() ? 'commits_list.twig' : 'commits.twig'; - return $app['twig']->render($template, array( - 'page' => 'commits', - 'pager' => $pager, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'commits' => $categorized, - 'file' => $file, - )); + return $app['twig']->render($template, [ + 'page' => 'commits', + 'pager' => $pager, + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'commits' => $categorized, + 'file' => $file, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->value('commitishPath', null) @@ -67,7 +68,7 @@ class CommitController implements ControllerProviderInterface $query = $request->get('query'); $commits = $repository->searchCommitLog($query, $branch); - $categorized = array(); + $categorized = []; foreach ($commits as $commit) { $date = $commit->getCommiterDate(); @@ -75,15 +76,15 @@ class CommitController implements ControllerProviderInterface $categorized[$date][] = $commit; } - return $app['twig']->render('searchcommits.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'file' => '', - 'commits' => $categorized, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query - )); + return $app['twig']->render('searchcommits.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'file' => '', + 'commits' => $categorized, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'query' => $query, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') @@ -94,11 +95,11 @@ class CommitController implements ControllerProviderInterface $commit = $repository->getCommit($commit); $branch = $repository->getHead(); - return $app['twig']->render('commit.twig', array( - 'branch' => $branch, - 'repo' => $repo, - 'commit' => $commit, - )); + return $app['twig']->render('commit.twig', [ + 'branch' => $branch, + 'repo' => $repo, + 'commit' => $commit, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commit', '[a-f0-9^]+') ->bind('commit'); @@ -113,14 +114,14 @@ class CommitController implements ControllerProviderInterface $blames = $repository->getBlame("$branch -- \"$file\""); - return $app['twig']->render('blame.twig', array( - 'file' => $file, - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'blames' => $blames, - )); + return $app['twig']->render('blame.twig', [ + 'file' => $file, + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'blames' => $blames, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->convert('commitishPath', 'escaper.argument:escape') @@ -129,4 +130,3 @@ class CommitController implements ControllerProviderInterface return $route; } } - diff --git a/src/Controller/MainController.php b/src/Controller/MainController.php index 92de6ae..d372f34 100644 --- a/src/Controller/MainController.php +++ b/src/Controller/MainController.php @@ -2,10 +2,10 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; class MainController implements ControllerProviderInterface { @@ -13,21 +13,20 @@ class MainController implements ControllerProviderInterface { $route = $app['controllers_factory']; - $route->get('/', function() use ($app) { + $route->get('/', function () use ($app) { $repositories = $app['git']->getRepositories($app['git.repos']); - return $app['twig']->render('index.twig', array( - 'repositories' => $repositories, - )); + return $app['twig']->render('index.twig', [ + 'repositories' => $repositories, + ]); })->bind('homepage'); - - $route->get('/refresh', function(Request $request) use ($app ) { - # Go back to calling page + $route->get('/refresh', function (Request $request) use ($app) { + // Go back to calling page return $app->redirect($request->headers->get('Referer')); })->bind('refresh'); - $route->get('{repo}/stats/{branch}', function($repo, $branch) use ($app) { + $route->get('{repo}/stats/{branch}', function ($repo, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($branch === null) { @@ -37,21 +36,21 @@ class MainController implements ControllerProviderInterface $stats = $repository->getStatistics($branch); $authors = $repository->getAuthorStatistics($branch); - return $app['twig']->render('stats.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'stats' => $stats, - 'authors' => $authors, - )); + return $app['twig']->render('stats.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'stats' => $stats, + 'authors' => $authors, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->value('branch', null) ->convert('branch', 'escaper.argument:escape') ->bind('stats'); - $route->get('{repo}/{branch}/rss/', function($repo, $branch) use ($app) { + $route->get('{repo}/{branch}/rss/', function ($repo, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); if ($branch === null) { @@ -60,13 +59,13 @@ class MainController implements ControllerProviderInterface $commits = $repository->getPaginatedCommits($branch); - $html = $app['twig']->render('rss.twig', array( - 'repo' => $repo, - 'branch' => $branch, - 'commits' => $commits, - )); + $html = $app['twig']->render('rss.twig', [ + 'repo' => $repo, + 'branch' => $branch, + 'commits' => $commits, + ]); - return new Response($html, 200, array('Content-Type' => 'application/rss+xml')); + return new Response($html, 200, ['Content-Type' => 'application/rss+xml']); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->value('branch', null) diff --git a/src/Controller/NetworkController.php b/src/Controller/NetworkController.php index 27f8a19..c0e7b90 100644 --- a/src/Controller/NetworkController.php +++ b/src/Controller/NetworkController.php @@ -4,9 +4,8 @@ namespace GitList\Controller; use GitList\Git\Repository; use Gitter\Model\Commit\Commit; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; class NetworkController implements ControllerProviderInterface { @@ -14,7 +13,8 @@ class NetworkController implements ControllerProviderInterface { $route = $app['controllers_factory']; - $route->get('{repo}/network/{commitishPath}/{page}.json', + $route->get( + '{repo}/network/{commitishPath}/{page}.json', function ($repo, $commitishPath, $page) use ($app) { /** @var $repository Repository */ $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); @@ -26,29 +26,29 @@ class NetworkController implements ControllerProviderInterface $pager = $app['util.view']->getPager($page, $repository->getTotalCommits($commitishPath)); $commits = $repository->getPaginatedCommits($commitishPath, $pager['current']); - $jsonFormattedCommits = array(); + $jsonFormattedCommits = []; foreach ($commits as $commit) { $detailsUrl = $app['url_generator']->generate( 'commit', - array( + [ 'repo' => $repo, - 'commit' => $commit->getHash() - ) + 'commit' => $commit->getHash(), + ] ); - $jsonFormattedCommits[$commit->getHash()] = array( + $jsonFormattedCommits[$commit->getHash()] = [ 'hash' => $commit->getHash(), 'parentsHash' => $commit->getParentsHash(), 'date' => $commit->getDate()->format('U'), 'message' => htmlentities($commit->getMessage()), 'details' => $detailsUrl, - 'author' => array( + 'author' => [ 'name' => $commit->getAuthor()->getName(), 'email' => $commit->getAuthor()->getEmail(), - 'image' => $app->getAvatar($commit->getAuthor()->getEmail(), 40) - ) - ); + 'image' => $app->getAvatar($commit->getAuthor()->getEmail(), 40), + ], + ]; } $nextPageUrl = null; @@ -56,34 +56,37 @@ class NetworkController implements ControllerProviderInterface if ($pager['last'] !== $pager['current']) { $nextPageUrl = $app['url_generator']->generate( 'networkData', - array( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, - 'page' => $pager['next'] - ) + 'page' => $pager['next'], + ] ); } // when no commits are given, return an empty response - issue #369 if (count($commits) === 0) { return $app->json( - array( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, 'nextPage' => null, 'start' => null, - 'commits' => $jsonFormattedCommits - ), 200 + 'commits' => $jsonFormattedCommits, + ], + 200 ); } - return $app->json( array( + return $app->json( + [ 'repo' => $repo, 'commitishPath' => $commitishPath, 'nextPage' => $nextPageUrl, 'start' => $commits[0]->getHash(), - 'commits' => $jsonFormattedCommits - ), 200 + 'commits' => $jsonFormattedCommits, + ], + 200 ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) @@ -108,11 +111,11 @@ class NetworkController implements ControllerProviderInterface return $app['twig']->render( 'network.twig', - array( + [ 'repo' => $repo, 'branch' => $branch, 'commitishPath' => $commitishPath, - ) + ] ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) diff --git a/src/Controller/TreeController.php b/src/Controller/TreeController.php index d3d9fe6..7d185ea 100644 --- a/src/Controller/TreeController.php +++ b/src/Controller/TreeController.php @@ -2,10 +2,10 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\Request; class TreeController implements ControllerProviderInterface { @@ -32,17 +32,17 @@ class TreeController implements ControllerProviderInterface $parent = ''; } - return $app['twig']->render('tree.twig', array( - 'files' => $files->output(), - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree ? $tree . '/' : $tree, - 'parent' => $parent, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'readme' => $app['util.repository']->getReadme($repository, $branch, $tree ? "$tree" : ""), - )); + return $app['twig']->render('tree.twig', [ + 'files' => $files->output(), + 'repo' => $repo, + 'branch' => $branch, + 'path' => $tree ? $tree . '/' : $tree, + 'parent' => $parent, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'readme' => $app['util.repository']->getReadme($repository, $branch, $tree ? "$tree" : ''), + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('commitishPath', $app['util.routing']->getCommitishPathRegex()) ->convert('commitishPath', 'escaper.argument:escape') @@ -55,25 +55,25 @@ class TreeController implements ControllerProviderInterface } $query = $request->get('query'); - $breadcrumbs = array(array('dir' => 'Search results for: ' . $query, 'path' => '')); + $breadcrumbs = [['dir' => 'Search results for: ' . $query, 'path' => '']]; $results = $repository->searchTree($query, $branch); - return $app['twig']->render('search.twig', array( - 'results' => $results, - 'repo' => $repo, - 'branch' => $branch, - 'path' => $tree, - 'breadcrumbs' => $breadcrumbs, - 'branches' => $repository->getBranches(), - 'tags' => $repository->getTags(), - 'query' => $query - )); + return $app['twig']->render('search.twig', [ + 'results' => $results, + 'repo' => $repo, + 'branch' => $branch, + 'path' => $tree, + 'breadcrumbs' => $breadcrumbs, + 'branches' => $repository->getBranches(), + 'tags' => $repository->getTags(), + 'query' => $query, + ]); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') ->bind('search'); - $route->get('{repo}/{format}ball/{branch}', function($repo, $format, $branch) use ($app) { + $route->get('{repo}/{format}ball/{branch}', function ($repo, $format, $branch) use ($app) { $repository = $app['git']->getRepositoryFromName($app['git.repos'], $repo); $tree = $repository->getBranchTree($branch); @@ -95,14 +95,15 @@ class TreeController implements ControllerProviderInterface /** * Generating name for downloading, lowercasing and removing all non - * ascii and special characters + * ascii and special characters. */ - $filename = strtolower($repo.'_'.$branch); + $filename = strtolower($repo . '_' . $branch); $filename = preg_replace('#[^a-z0-9]+#', '_', $filename); $filename = $filename . '.' . $format; $response = new BinaryFileResponse($file); $response->setContentDisposition('attachment', $filename); + return $response; })->assert('format', '(zip|tar)') ->assert('repo', $app['util.routing']->getRepositoryRegex()) @@ -110,15 +111,14 @@ class TreeController implements ControllerProviderInterface ->convert('branch', 'escaper.argument:escape') ->bind('archive'); - - $route->get('{repo}/{branch}/', function($repo, $branch) use ($app, $treeController) { + $route->get('{repo}/{branch}/', function ($repo, $branch) use ($app, $treeController) { return $treeController($repo, $branch); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('branch', $app['util.routing']->getBranchRegex()) ->convert('branch', 'escaper.argument:escape') ->bind('branch'); - $route->get('{repo}/', function($repo) use ($app, $treeController) { + $route->get('{repo}/', function ($repo) use ($app, $treeController) { return $treeController($repo); })->assert('repo', $app['util.routing']->getRepositoryRegex()) ->bind('repository'); @@ -126,4 +126,3 @@ class TreeController implements ControllerProviderInterface return $route; } } - diff --git a/src/Controller/TreeGraphController.php b/src/Controller/TreeGraphController.php index ecf0c06..0e9a4e9 100644 --- a/src/Controller/TreeGraphController.php +++ b/src/Controller/TreeGraphController.php @@ -2,9 +2,8 @@ namespace GitList\Controller; +use Silex\Api\ControllerProviderInterface; use Silex\Application; -use Silex\ControllerProviderInterface; -use Symfony\Component\HttpFoundation\Request; class TreeGraphController implements ControllerProviderInterface { @@ -22,26 +21,26 @@ class TreeGraphController implements ControllerProviderInterface '--pretty=format:"B[%d] C[%H] D[%ad] A[%an] E[%ae] H[%h] S[%s]"'; $rawRows = $repository->getClient()->run($repository, $command); $rawRows = explode("\n", $rawRows); - $graphItems = array(); + $graphItems = []; foreach ($rawRows as $row) { if (preg_match("/^(.+?)(\s(B\[(.*?)\])? C\[(.+?)\] D\[(.+?)\] A\[(.+?)\] E\[(.+?)\] H\[(.+?)\] S\[(.+?)\])?$/", $row, $output)) { if (!isset($output[4])) { - $graphItems[] = array( - "relation"=>$output[1] - ); + $graphItems[] = [ + 'relation' => $output[1], + ]; continue; } - $graphItems[] = array( - "relation"=>$output[1], - "branch"=>$output[4], - "rev"=>$output[5], - "date"=>$output[6], - "author"=>$output[7], - "author_email"=>$output[8], - "short_rev"=>$output[9], - "subject"=>preg_replace('/(^|\s)(#[[:xdigit:]]+)(\s|$)/', '$1$2$3', $output[10]) - ); + $graphItems[] = [ + 'relation' => $output[1], + 'branch' => $output[4], + 'rev' => $output[5], + 'date' => $output[6], + 'author' => $output[7], + 'author_email' => $output[8], + 'short_rev' => $output[9], + 'subject' => preg_replace('/(^|\s)(#[[:xdigit:]]+)(\s|$)/', '$1$2$3', $output[10]), + ]; } } @@ -54,12 +53,12 @@ class TreeGraphController implements ControllerProviderInterface return $app['twig']->render( 'treegraph.twig', - array( + [ 'repo' => $repo, 'branch' => $branch, 'commitishPath' => $commitishPath, 'graphItems' => $graphItems, - ) + ] ); } )->assert('repo', $app['util.routing']->getRepositoryRegex()) diff --git a/src/Exception/BlankDataException.php b/src/Exception/BlankDataException.php index 1293fbb..e793248 100644 --- a/src/Exception/BlankDataException.php +++ b/src/Exception/BlankDataException.php @@ -4,5 +4,4 @@ namespace GitList\Exception; class BlankDataException extends \RuntimeException { - } diff --git a/src/Exception/EmptyRepositoryException.php b/src/Exception/EmptyRepositoryException.php index 027a4d7..40a83b8 100644 --- a/src/Exception/EmptyRepositoryException.php +++ b/src/Exception/EmptyRepositoryException.php @@ -4,5 +4,4 @@ namespace GitList\Exception; class EmptyRepositoryException extends \RuntimeException { - } diff --git a/src/Git/Client.php b/src/Git/Client.php index 0dae86e..5695412 100644 --- a/src/Git/Client.php +++ b/src/Git/Client.php @@ -27,15 +27,16 @@ class Client extends BaseClient } /** - * Searches for valid repositories on the specified path + * Searches for valid repositories on the specified path. * * @param array $paths Array of paths where repositories will be searched + * * @return array Found repositories, containing their name, path and description sorted * by repository name */ public function getRepositories($paths) { - $allRepositories = array(); + $allRepositories = []; foreach ($paths as $path) { $repositories = $this->recurseDirectory($path); @@ -45,24 +46,122 @@ class Client extends BaseClient } /** - * Use "+" to preserve keys, only a problem with numeric repos + * Use "+" to preserve keys, only a problem with numeric repos. */ $allRepositories = $allRepositories + $repositories; } $allRepositories = array_unique($allRepositories, SORT_REGULAR); - uksort($allRepositories, function($k1, $k2) { - return strtolower($k2)defaultBranch; + } + + /** + * Overloads the parent::createRepository method for the correct Repository class instance. + * + * {@inheritdoc} + */ + public function createRepository($path, $bare = null) + { + if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { + throw new \RuntimeException('A GIT repository already exists at ' . $path); + } + + $repository = new Repository($path, $this); + + return $repository->create($bare); + } + + /** + * Overloads the parent::getRepository method for the correct Repository class instance. + * + * {@inheritdoc} + */ + public function getRepository($path) + { + if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { + throw new \RuntimeException('There is no GIT repository at ' . $path); + } + + return new Repository($path, $this); + } + + /** + * Set default branch as a string. + * + * @param string $branch name of branch to use when repo's HEAD is detached + * + * @return object + */ + protected function setDefaultBranch($branch) + { + $this->defaultBranch = $branch; + + return $this; + } + + /** + * Get hidden repository list. + * + * @return array List of repositories to hide + */ + protected function getHidden() + { + return $this->hidden; + } + + /** + * Set the hidden repository list. + * + * @param array $hidden List of repositories to hide + * + * @return object + */ + protected function setHidden($hidden) + { + $this->hidden = $hidden; + + return $this; + } + + /** + * Get project list. + * + * @return array List of repositories to show + */ + protected function getProjects() + { + return $this->projects; + } + + /** + * Set the shown repository list. + * + * @param array $projects List of repositories to show + */ + protected function setProjects($projects) + { + $this->projects = $projects; + + return $this; + } + private function recurseDirectory($path, $topLevel = true) { $dir = new \DirectoryIterator($path); - $repositories = array(); + $repositories = []; foreach ($dir as $file) { if ($file->isDot()) { @@ -82,19 +181,18 @@ class Client extends BaseClient $isRepository = file_exists($file->getPathname() . '/.git/HEAD'); if ($isRepository || $isBare) { - - $hidden = function($path, $hide) { - - $return = false; - - array_walk($hide, function($value, $key) use ($path, &$return) { - if ( ($path === $value) || (1 === preg_match($value, $path)) ) { - $return = true; - } - }); - return $return; - }; - + $hidden = function ($path, $hide) { + $return = false; + + array_walk($hide, function ($value, $key) use ($path, &$return) { + if (($path === $value) || (1 === preg_match($value, $path))) { + $return = true; + } + }); + + return $return; + }; + if ($hidden($file->getPathname(), $this->getHidden())) { continue; } @@ -121,116 +219,18 @@ class Client extends BaseClient continue; } - $repositories[$repoName] = array( + $repositories[$repoName] = [ 'name' => $repoName, 'path' => $file->getPathname(), - 'description' => $description - ); + 'description' => $description, + ]; continue; - } else { - $repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), false)); } + $repositories = array_merge($repositories, $this->recurseDirectory($file->getPathname(), false)); } } return $repositories; } - - /** - * Set default branch as a string. - * - * @param string $branch Name of branch to use when repo's HEAD is detached. - * @return object - */ - protected function setDefaultBranch($branch) - { - $this->defaultBranch = $branch; - - return $this; - } - - /** - * Return name of default branch as a string. - */ - public function getDefaultBranch() - { - return $this->defaultBranch; - } - - /** - * Get hidden repository list - * - * @return array List of repositories to hide - */ - protected function getHidden() - { - return $this->hidden; - } - - /** - * Set the hidden repository list - * - * @param array $hidden List of repositories to hide - * @return object - */ - protected function setHidden($hidden) - { - $this->hidden = $hidden; - - return $this; - } - - /** - * Get project list - * - * @return array List of repositories to show - */ - protected function getProjects() - { - return $this->projects; - } - - /** - * Set the shown repository list - * - * @param array $projects List of repositories to show - */ - protected function setProjects($projects) - { - $this->projects = $projects; - - return $this; - } - - /** - * Overloads the parent::createRepository method for the correct Repository class instance - * - * {@inheritdoc} - */ - public function createRepository($path, $bare = null) - { - if (file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('A GIT repository already exists at ' . $path); - } - - $repository = new Repository($path, $this); - - return $repository->create($bare); - } - - /** - * Overloads the parent::getRepository method for the correct Repository class instance - * - * {@inheritdoc} - */ - public function getRepository($path) - { - if (!file_exists($path) || !file_exists($path . '/.git/HEAD') && !file_exists($path . '/HEAD')) { - throw new \RuntimeException('There is no GIT repository at ' . $path); - } - - return new Repository($path, $this); - } } - diff --git a/src/Git/Repository.php b/src/Git/Repository.php index 0040ee3..4435b11 100644 --- a/src/Git/Repository.php +++ b/src/Git/Repository.php @@ -2,10 +2,10 @@ namespace GitList\Git; -use Gitter\Repository as BaseRepository; use Gitter\Model\Commit\Commit; use Gitter\Model\Commit\Diff; use Gitter\PrettyFormat; +use Gitter\Repository as BaseRepository; use Symfony\Component\Filesystem\Filesystem; class Repository extends BaseRepository @@ -14,7 +14,8 @@ class Repository extends BaseRepository * Return true if the repo contains this commit. * * @param $commitHash Hash of commit whose existence we want to check - * @return boolean Whether or not the commit exists in this repo + * + * @return bool Whether or not the commit exists in this repo */ public function hasCommit($commitHash) { @@ -27,7 +28,7 @@ class Repository extends BaseRepository /** * Get the current branch, returning a default value when HEAD is detached. */ - public function getHead($default = NULL) + public function getHead($default = null) { $client = $this->getClient(); @@ -35,27 +36,29 @@ class Repository extends BaseRepository } /** - * Show Patches that where apllied to the selected file + * Show Patches that where apllied to the selected file. * * @param string $file File path for which we will retrieve a list of patch logs + * * @return array Collection of Commits data */ public function getCommitsLogPatch($file) { - $record_delimiter = chr(hexdec("0x1e")); - $file_patches = $this->getClient()->run($this, - "log -p --pretty=format:\"".$record_delimiter."%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN%cE" - . "%ct" - . "" - . "" + $record_delimiter = chr(hexdec('0x1e')); + $file_patches = $this->getClient()->run( + $this, + 'log -p --pretty=format:"' . $record_delimiter . '%H' + . '%h%T%P' + . '%aN%aE' + . '%at%cN%cE' + . '%ct' + . '' + . '' . "\" $file" ); - $patch_collection = array(); - foreach ( preg_split('/('.$record_delimiter.'\)/', $file_patches,null, PREG_SPLIT_NO_EMPTY) as $patches) { + $patch_collection = []; + foreach (preg_split('/(' . $record_delimiter . '\)/', $file_patches, null, PREG_SPLIT_NO_EMPTY) as $patches) { $patches = '' . $patches; $xmlEnd = strpos($patches, '') + 7; $commitInfo = substr($patches, 0, $xmlEnd); @@ -63,9 +66,9 @@ class Repository extends BaseRepository $logs = explode("\n", $commitData); // Read commit metadata - $format = new PrettyFormat; + $format = new PrettyFormat(); $data = $format->parse($commitInfo); - $commit = new Commit; + $commit = new Commit(); $commit->importData($data[0]); $commit->setDiffs($this->readDiffLogs($logs)); $patch_collection[] = $commit; @@ -75,21 +78,23 @@ class Repository extends BaseRepository } /** - * Show the data from a specific commit + * Show the data from a specific commit. * * @param string $commitHash Hash of the specific commit to read data + * * @return array Commit data */ public function getCommit($commitHash) { - $logs = $this->getClient()->run($this, - "show --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN%cE" - . "%ct" - . "" - . "" + $logs = $this->getClient()->run( + $this, + 'show --pretty=format:"%H' + . '%h%T%P' + . '%aN%aE' + . '%at%cN%cE' + . '%ct' + . '' + . '' . "\" $commitHash" ); @@ -99,9 +104,9 @@ class Repository extends BaseRepository $logs = explode("\n", $commitData); // Read commit metadata - $format = new PrettyFormat; + $format = new PrettyFormat(); $data = $format->parse($commitInfo); - $commit = new Commit; + $commit = new Commit(); $commit->importData($data[0]); if ($commit->getParentsHash()) { @@ -115,14 +120,15 @@ class Repository extends BaseRepository } /** - * Blames the provided file and parses the output + * Blames the provided file and parses the output. * * @param string $file File that will be blamed + * * @return array Commits hashes containing the lines */ public function getBlame($file) { - $blame = array(); + $blame = []; $logs = $this->getClient()->run($this, "blame --root -sl $file"); $logs = explode("\n", $logs); @@ -138,11 +144,11 @@ class Repository extends BaseRepository $currentCommit = $match[1][0]; if ($currentCommit != $previousCommit) { ++$i; - $blame[$i] = array( + $blame[$i] = [ 'line' => '', 'commit' => $currentCommit, - 'commitShort' => substr($currentCommit, 0, 8) - ); + 'commitShort' => substr($currentCommit, 0, 8), + ]; } $blame[$i]['line'] .= $match[3][0] . PHP_EOL; @@ -153,19 +159,20 @@ class Repository extends BaseRepository } /** - * Read diff logs and generate a collection of diffs + * Read diff logs and generate a collection of diffs. * * @param array $logs Array of log rows + * * @return array Array of diffs */ public function readDiffLogs(array $logs) { - $diffs = array(); + $diffs = []; $lineNumOld = 0; $lineNumNew = 0; foreach ($logs as $log) { - # Skip empty lines - if ($log == "") { + // Skip empty lines + if ($log == '') { continue; } @@ -174,7 +181,7 @@ class Repository extends BaseRepository $diffs[] = $diff; } - $diff = new Diff; + $diff = new Diff(); if (preg_match('/^diff --[\S]+ a\/?(.+) b\/?/', $log, $name)) { $diff->setFile($name[1]); } @@ -198,7 +205,7 @@ class Repository extends BaseRepository // Handle binary files properly. if ('Binary' === substr($log, 0, 6)) { - $m = array(); + $m = []; if (preg_match('/Binary files (.+) and (.+) differ/', $log, $m)) { $diff->setOld($m[1]); $diff->setNew(" {$m[2]}"); @@ -207,16 +214,16 @@ class Repository extends BaseRepository if (!empty($log)) { switch ($log[0]) { - case "@": + case '@': // Set the line numbers preg_match('/@@ -([0-9]+)(?:,[0-9]+)? \+([0-9]+)/', $log, $matches); $lineNumOld = $matches[1] - 1; $lineNumNew = $matches[2] - 1; break; - case "-": + case '-': $lineNumOld++; break; - case "+": + case '+': $lineNumNew++; break; default: @@ -241,11 +248,11 @@ class Repository extends BaseRepository } /** - * Show the repository commit log with pagination + * Show the repository commit log with pagination. * - * @access public * @param string $file * @param int page + * * @return array Commit log */ public function getPaginatedCommits($file = null, $page = 0) @@ -254,12 +261,12 @@ class Repository extends BaseRepository $pager = "--skip=$page --max-count=15"; $command = "log $pager --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN" - . "%cE" - . "%ct" - . "\""; + . '%h%T%P' + . '%aN%aE' + . '%at%cN' + . '%cE' + . '%ct' + . '"'; if ($file) { $command .= " $file"; @@ -268,11 +275,11 @@ class Repository extends BaseRepository try { $logs = $this->getPrettyFormat($command); } catch (\RuntimeException $e) { - return array(); + return []; } foreach ($logs as $log) { - $commit = new Commit; + $commit = new Commit(); $commit->importData($log); $commits[] = $commit; } @@ -283,25 +290,25 @@ class Repository extends BaseRepository public function searchCommitLog($query, $branch) { $query = escapeshellarg($query); - $query = strtr($query, array('[' => '\\[', ']' => '\\]')); + $query = strtr($query, ['[' => '\\[', ']' => '\\]']); $command = "log --grep={$query} -i --pretty=format:\"%H" - . "%h%T%P" - . "%aN%aE" - . "%at%cN" - . "%cE" - . "%ct" - . "\"" + . '%h%T%P' + . '%aN%aE' + . '%at%cN' + . '%cE' + . '%ct' + . '"' . " $branch"; try { $logs = $this->getPrettyFormat($command); } catch (\RuntimeException $e) { - return array(); + return []; } foreach ($logs as $log) { - $commit = new Commit; + $commit = new Commit(); $commit->importData($log); $commits[] = $commit; } @@ -311,7 +318,7 @@ class Repository extends BaseRepository public function searchTree($query, $branch) { - if(empty($query)) { + if (empty($query)) { return null; } @@ -333,9 +340,9 @@ class Repository extends BaseRepository preg_match_all('/([\w-._]+):([^:]+):([0-9]+):(.+)/', $result, $matches, PREG_SET_ORDER); $data['branch'] = $matches[0][1]; - $data['file'] = $matches[0][2]; - $data['line'] = $matches[0][3]; - $data['match'] = $matches[0][4]; + $data['file'] = $matches[0][2]; + $data['line'] = $matches[0][3]; + $data['match'] = $matches[0][4]; $searchResults[] = $data; } @@ -357,7 +364,7 @@ class Repository extends BaseRepository foreach ($logs as $user => $count) { $user = explode('||', $user); - $data[] = array('name' => $user[0], 'email' => $user[1], 'commits' => $count); + $data[] = ['name' => $user[0], 'email' => $user[1], 'commits' => $count]; } return $data; @@ -368,8 +375,8 @@ class Repository extends BaseRepository // Calculate amount of files, extensions and file size $logs = $this->getClient()->run($this, 'ls-tree -r -l ' . $branch); $lines = explode("\n", $logs); - $files = array(); - $data['extensions'] = array(); + $files = []; + $data['extensions'] = []; $data['size'] = 0; $data['files'] = 0; @@ -411,7 +418,7 @@ class Repository extends BaseRepository } /** - * Create a TAR or ZIP archive of a git tree + * Create a TAR or ZIP archive of a git tree. * * @param string $tree Tree-ish reference * @param string $output Output File name @@ -419,7 +426,7 @@ class Repository extends BaseRepository */ public function createArchive($tree, $output, $format = 'zip') { - $fs = new Filesystem; + $fs = new Filesystem(); $fs->mkdir(dirname($output)); $this->getClient()->run($this, "archive --format=$format --output='$output' $tree"); } @@ -427,8 +434,9 @@ class Repository extends BaseRepository /** * Return true if $path exists in $branch; return false otherwise. * - * @param string $commitish Commitish reference; branch, tag, SHA1, etc. - * @param string $path Path whose existence we want to verify. + * @param string $commitish commitish reference; branch, tag, SHA1, etc + * @param string $path path whose existence we want to verify + * * @return bool * * GRIPE Arguably belongs in Gitter, as it's generally useful functionality. @@ -445,4 +453,3 @@ class Repository extends BaseRepository return false; } } - diff --git a/src/Provider/GitServiceProvider.php b/src/Provider/GitServiceProvider.php index fd1da25..4e3c004 100644 --- a/src/Provider/GitServiceProvider.php +++ b/src/Provider/GitServiceProvider.php @@ -3,32 +3,21 @@ namespace GitList\Provider; use GitList\Git\Client; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class GitServiceProvider implements ServiceProviderInterface { - - /** - * Register the Git\Client on the Application ServiceProvider - * - * @param Application $app Silex Application - * @return Git\Client Instance of the Git\Client - */ - public function register(Application $app) + public function register(Container $container) { - $app['git'] = function () use ($app) { - $options['path'] = $app['git.client']; - $options['hidden'] = $app['git.hidden']; - $options['projects'] = $app['git.projects']; - $options['ini.file'] = $app['ini.file']; - $options['default_branch'] = $app['git.default_branch']; + $container['git'] = function () use ($container) { + $options['path'] = $container['git.client']; + $options['hidden'] = $container['git.hidden']; + $options['projects'] = $container['git.projects']; + $options['ini.file'] = $container['ini.file']; + $options['default_branch'] = $container['git.default_branch']; return new Client($options); }; } - - public function boot(Application $app) - { - } } diff --git a/src/Provider/RepositoryUtilServiceProvider.php b/src/Provider/RepositoryUtilServiceProvider.php index ed8b433..a2c7e90 100644 --- a/src/Provider/RepositoryUtilServiceProvider.php +++ b/src/Provider/RepositoryUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\Repository; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class RepositoryUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Repository class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.repository'] = $app->share(function () use ($app) { - return new Repository($app); - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.repository'] = function () use ($container) { + return new Repository($container); + }; } } diff --git a/src/Provider/RoutingUtilServiceProvider.php b/src/Provider/RoutingUtilServiceProvider.php index 95b43d6..8263095 100644 --- a/src/Provider/RoutingUtilServiceProvider.php +++ b/src/Provider/RoutingUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\Routing; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class RoutingUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Repository class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.routing'] = $app->share(function () use ($app) { - return new Routing($app); - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.routing'] = function () use ($container) { + return new Routing($container); + }; } } diff --git a/src/Provider/ViewUtilServiceProvider.php b/src/Provider/ViewUtilServiceProvider.php index 87c5d00..b69a0fd 100644 --- a/src/Provider/ViewUtilServiceProvider.php +++ b/src/Provider/ViewUtilServiceProvider.php @@ -3,24 +3,15 @@ namespace GitList\Provider; use GitList\Util\View; -use Silex\Application; -use Silex\ServiceProviderInterface; +use Pimple\Container; +use Pimple\ServiceProviderInterface; class ViewUtilServiceProvider implements ServiceProviderInterface { - /** - * Register the Util\Interface class on the Application ServiceProvider - * - * @param Application $app Silex Application - */ - public function register(Application $app) - { - $app['util.view'] = $app->share(function () { - return new View; - }); - } - - public function boot(Application $app) + public function register(Container $container) { + $container['util.view'] = function () { + return new View(); + }; } } diff --git a/src/Util/Repository.php b/src/Util/Repository.php index f530438..e15b590 100644 --- a/src/Util/Repository.php +++ b/src/Util/Repository.php @@ -8,100 +8,100 @@ class Repository { protected $app; - protected $defaultFileTypes = array( - 'php' => 'php', - 'c' => 'clike', - 'h' => 'clike', - 'cpp' => 'clike', - 'm' => 'clike', - 'mm' => 'clike', - 'ino' => 'clike', - 'cs' => 'text/x-csharp', - 'java' => 'text/x-java', - 'clj' => 'clojure', - 'coffee' => 'coffeescript', - 'css' => 'css', - 'diff' => 'diff', - 'ecl' => 'ecl', - 'el' => 'erlang', - 'go' => 'go', - 'groovy' => 'groovy', - 'hs' => 'haskell', - 'lhs' => 'haskell', - 'jsp' => 'application/x-jsp', - 'asp' => 'htmlembedded', - 'aspx' => 'htmlembedded', - 'html' => 'htmlmixed', - 'tpl' => 'htmlmixed', - 'js' => 'javascript', - 'json' => 'javascript', - 'less' => 'less', - 'lua' => 'lua', - 'md' => 'markdown', + protected $defaultFileTypes = [ + 'php' => 'php', + 'c' => 'clike', + 'h' => 'clike', + 'cpp' => 'clike', + 'm' => 'clike', + 'mm' => 'clike', + 'ino' => 'clike', + 'cs' => 'text/x-csharp', + 'java' => 'text/x-java', + 'clj' => 'clojure', + 'coffee' => 'coffeescript', + 'css' => 'css', + 'diff' => 'diff', + 'ecl' => 'ecl', + 'el' => 'erlang', + 'go' => 'go', + 'groovy' => 'groovy', + 'hs' => 'haskell', + 'lhs' => 'haskell', + 'jsp' => 'application/x-jsp', + 'asp' => 'htmlembedded', + 'aspx' => 'htmlembedded', + 'html' => 'htmlmixed', + 'tpl' => 'htmlmixed', + 'js' => 'javascript', + 'json' => 'javascript', + 'less' => 'less', + 'lua' => 'lua', + 'md' => 'markdown', 'markdown' => 'markdown', - 'sql' => 'mysql', - 'ml' => 'ocaml', - 'mli' => 'ocaml', - 'pl' => 'perl', - 'pm' => 'perl', - 'pas' => 'pascal', - 'ini' => 'properties', - 'cfg' => 'properties', - 'nt' => 'ntriples', - 'py' => 'python', - 'rb' => 'ruby', - 'rst' => 'rst', - 'r' => 'r', - 'sh' => 'shell', - 'ss' => 'scheme', - 'scala' => 'text/x-scala', - 'scm' => 'scheme', - 'sls' => 'scheme', - 'sps' => 'scheme', - 'rs' => 'rust', - 'st' => 'smalltalk', - 'tex' => 'stex', - 'vbs' => 'vbscript', - 'vb' => 'vbscript', - 'v' => 'verilog', - 'xml' => 'xml', - 'xsd' => 'xml', - 'xsl' => 'xml', - 'xul' => 'xml', - 'xlf' => 'xml', - 'xliff' => 'xml', - 'xaml' => 'xml', - 'wxs' => 'xml', - 'wxl' => 'xml', - 'wxi' => 'xml', - 'wsdl' => 'xml', - 'svg' => 'xml', - 'rss' => 'xml', - 'rdf' => 'xml', - 'plist' => 'xml', - 'mxml' => 'xml', - 'kml' => 'xml', - 'glade' => 'xml', - 'xq' => 'xquery', - 'xqm' => 'xquery', - 'xquery' => 'xquery', - 'xqy' => 'xquery', - 'yml' => 'yaml', - 'yaml' => 'yaml', - 'png' => 'image', - 'jpg' => 'image', - 'gif' => 'image', - 'jpeg' => 'image', - 'bmp' => 'image', - 'csproj' => 'xml', - ); + 'sql' => 'mysql', + 'ml' => 'ocaml', + 'mli' => 'ocaml', + 'pl' => 'perl', + 'pm' => 'perl', + 'pas' => 'pascal', + 'ini' => 'properties', + 'cfg' => 'properties', + 'nt' => 'ntriples', + 'py' => 'python', + 'rb' => 'ruby', + 'rst' => 'rst', + 'r' => 'r', + 'sh' => 'shell', + 'ss' => 'scheme', + 'scala' => 'text/x-scala', + 'scm' => 'scheme', + 'sls' => 'scheme', + 'sps' => 'scheme', + 'rs' => 'rust', + 'st' => 'smalltalk', + 'tex' => 'stex', + 'vbs' => 'vbscript', + 'vb' => 'vbscript', + 'v' => 'verilog', + 'xml' => 'xml', + 'xsd' => 'xml', + 'xsl' => 'xml', + 'xul' => 'xml', + 'xlf' => 'xml', + 'xliff' => 'xml', + 'xaml' => 'xml', + 'wxs' => 'xml', + 'wxl' => 'xml', + 'wxi' => 'xml', + 'wsdl' => 'xml', + 'svg' => 'xml', + 'rss' => 'xml', + 'rdf' => 'xml', + 'plist' => 'xml', + 'mxml' => 'xml', + 'kml' => 'xml', + 'glade' => 'xml', + 'xq' => 'xquery', + 'xqm' => 'xquery', + 'xquery' => 'xquery', + 'xqy' => 'xquery', + 'yml' => 'yaml', + 'yaml' => 'yaml', + 'png' => 'image', + 'jpg' => 'image', + 'gif' => 'image', + 'jpeg' => 'image', + 'bmp' => 'image', + 'csproj' => 'xml', + ]; - protected static $binaryTypes = array( + protected static $binaryTypes = [ 'exe', 'com', 'so', 'la', 'o', 'dll', 'pyc', 'jpg', 'jpeg', 'bmp', 'gif', 'png', 'xmp', 'pcx', 'svgz', 'ttf', 'tiff', 'oet', 'gz', 'tar', 'rar', 'zip', '7z', 'jar', 'class', 'odt', 'ods', 'pdf', 'doc', 'docx', 'dot', 'xls', 'xlsx', - ); + ]; public function __construct(Application $app) { @@ -109,12 +109,13 @@ class Repository } /** - * Returns the file type based on filename by treating the extension + * Returns the file type based on filename by treating the extension. * * The file type is used by CodeMirror, a Javascript-based IDE implemented in * GitList, to properly highlight the blob syntax (if it's a source-code) * * @param string $file File name + * * @return mixed File type */ public function getFileType($file) @@ -143,7 +144,7 @@ class Repository * * @param string $file * - * @return boolean + * @return bool */ public function isBinary($file) { @@ -164,35 +165,41 @@ class Repository return false; } - public function getReadme($repository, $branch = null, $path = "") + public function getReadme($repository, $branch = null, $path = '') { if ($branch === null) { - $branch = $repository->getHead(); + $branch = $repository->getHead(); } - if ($path != "") $path = "$path/"; + if ($path != '') { + $path = "$path/"; + } - $files = $repository->getTree($path != "" ? "$branch:\"$path\"" : $branch)->output(); + $files = $repository->getTree($path != '' ? "$branch:\"$path\"" : $branch)->output(); foreach ($files as $file) { if (preg_match('/^readme*/i', $file['name'])) { - return array( + return [ 'filename' => $file['name'], - 'content' => $repository->getBlob("$branch:\"$path{$file['name']}\"")->output() - ); + 'content' => $repository->getBlob("$branch:\"$path{$file['name']}\"")->output(), + ]; } } - // No contextual readme, try to catch the main one if we are in deeper context - if ($path != "") return $this->getReadme($repository, $branch, ""); - return array(); + // No contextual readme, try to catch the main one if we are in deeper context + if ($path != '') { + return $this->getReadme($repository, $branch, ''); + } + + return []; } /** - * Returns an Array where the first value is the tree-ish and the second is the path + * Returns an Array where the first value is the tree-ish and the second is the path. * * @param \GitList\Git\Repository $repository * @param string $branch * @param string $tree + * * @return array */ public function extractRef($repository, $branch = '', $tree = '') @@ -202,13 +209,13 @@ class Repository $input = $branch . '/' . $tree; // If the ref appears to be a SHA, just split the string - if (preg_match("/^([[:alnum:]]{40})(.+)/", $input, $matches)) { + if (preg_match('/^([[:alnum:]]{40})(.+)/', $input, $matches)) { $branch = $matches[1]; } else { // Otherwise, attempt to detect the ref using a list of the project's branches and tags $validRefs = array_merge((array) $repository->getBranches(), (array) $repository->getTags()); foreach ($validRefs as $key => $ref) { - if (!preg_match(sprintf("#^%s/#", preg_quote($ref, '#')), $input)) { + if (!preg_match(sprintf('#^%s/#', preg_quote($ref, '#')), $input)) { unset($validRefs[$key]); } } @@ -223,7 +230,6 @@ class Repository } } - return array($branch, $tree); + return [$branch, $tree]; } } - diff --git a/src/Util/Routing.php b/src/Util/Routing.php index 2ab2e31..0f8316f 100644 --- a/src/Util/Routing.php +++ b/src/Util/Routing.php @@ -2,8 +2,8 @@ namespace GitList\Util; -use Silex\Application; use GitList\Exception\EmptyRepositoryException; +use Silex\Application; class Routing { @@ -84,7 +84,7 @@ class Routing $path = substr($path, 1); } - return array($commitish, $path); + return [$commitish, $path]; } public function getBranchRegex() @@ -127,6 +127,7 @@ class Routing ); $regex = implode('|', $quotedPaths); } + return $regex; } @@ -143,9 +144,10 @@ class Routing } /** - * Strips the base path from a full repository path + * Strips the base path from a full repository path. * * @param string $repoPath Full path to the repository + * * @return string Relative path to the repository from git.repositories */ public function getRelativePath($repoPath) @@ -154,11 +156,9 @@ class Routing $relativePath = substr($repoPath, strlen($this->app['git.repos'])); return ltrim(strtr($relativePath, '\\', '/'), '/'); - } else { - throw new \InvalidArgumentException( + } + throw new \InvalidArgumentException( sprintf("Path '%s' does not match configured repository directory", $repoPath) ); - } } } - diff --git a/src/Util/View.php b/src/Util/View.php index 612aa04..236ba72 100644 --- a/src/Util/View.php +++ b/src/Util/View.php @@ -5,24 +5,25 @@ namespace GitList\Util; class View { /** - * Builds a breadcrumb array based on a path spec + * Builds a breadcrumb array based on a path spec. * * @param string $spec Path spec + * * @return array Array with parts of the breadcrumb */ public function getBreadcrumbs($spec) { if (!$spec) { - return array(); + return []; } $paths = explode('/', $spec); foreach ($paths as $i => $path) { - $breadcrumbs[] = array( - 'dir' => $path, + $breadcrumbs[] = [ + 'dir' => $path, 'path' => implode('/', array_slice($paths, 0, $i + 1)), - ); + ]; } return $breadcrumbs; @@ -31,18 +32,18 @@ class View public function getPager($pageNumber, $totalCommits) { $pageNumber = (empty($pageNumber)) ? 0 : $pageNumber; - $lastPage = intval($totalCommits / 15); + $lastPage = (int) ($totalCommits / 15); // If total commits are integral multiple of 15, the lastPage will be commits/15 - 1. $lastPage = ($lastPage * 15 == $totalCommits) ? $lastPage - 1 : $lastPage; $nextPage = $pageNumber + 1; $previousPage = $pageNumber - 1; - return array('current' => $pageNumber, + return ['current' => $pageNumber, 'next' => $nextPage, 'previous' => $previousPage, 'last' => $lastPage, 'total' => $totalCommits, - ); + ]; } } diff --git a/tests/InterfaceTest.php b/tests/InterfaceTest.php index eff2742..908b913 100644 --- a/tests/InterfaceTest.php +++ b/tests/InterfaceTest.php @@ -1,8 +1,8 @@ mkdir($cacheDir); @@ -48,7 +49,7 @@ class InterfaceTest extends WebTestCase $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("Initial commit"); + $repository->commit('Initial commit'); $repository->createBranch('issue12'); $repository->createBranch('issue42'); $repository->createBranch('branch/name/wiith/slashes'); @@ -61,14 +62,18 @@ class InterfaceTest extends WebTestCase file_put_contents(self::$tmpdir . 'foobar/.git/description', 'This is a test repo!'); $fs->mkdir(self::$tmpdir . 'foobar/myfolder'); $fs->mkdir(self::$tmpdir . 'foobar/testfolder'); - file_put_contents(self::$tmpdir . 'foobar/myfolder/mytest.php', - "setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); // Nested repository fixture $nested_dir = self::$tmpdir . 'nested/'; @@ -80,13 +85,13 @@ class InterfaceTest extends WebTestCase $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("First commit"); - $repository->createBranch("testing"); - $repository->checkout("testing"); + $repository->commit('First commit'); + $repository->createBranch('testing'); + $repository->checkout('testing'); file_put_contents($nested_dir . 'NestedRepo/README.txt', 'NESTED TEST BRANCH README'); $repository->addAll(); - $repository->commit("Changing branch"); - $repository->checkout("master"); + $repository->commit('Changing branch'); + $repository->checkout('master'); // master-less repository fixture $git->createRepository(self::$tmpdir . 'develop'); @@ -95,15 +100,15 @@ class InterfaceTest extends WebTestCase $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'develop/README.md', "## develop\ndevelop is a *test* repository!"); $repository->addAll(); - $repository->commit("First commit"); - $repository->createBranch("develop"); + $repository->commit('First commit'); + $repository->createBranch('develop'); $repository = $repository->checkout('develop'); file_put_contents(self::$tmpdir . 'develop/test.php', "setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); $repository->addAll(); - $repository->commit("Initial commit"); + $repository->commit('Initial commit'); // Detached HEAD repository fixture $git->createRepository(self::$tmpdir . 'detached-head'); @@ -112,7 +117,7 @@ class InterfaceTest extends WebTestCase $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'detached-head/README.md', "## detached head\ndetached-head is a *test* repository!"); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); $repository->checkout('HEAD'); // mailmap repository fixture @@ -121,26 +126,33 @@ class InterfaceTest extends WebTestCase $repository->setConfig('user.name', 'Luke Skywalker'); $repository->setConfig('user.email', 'luke@rebel.org'); file_put_contents(self::$tmpdir . 'mailmap/README.md', "## mailmap\nmailmap is a *test* repository!"); - file_put_contents(self::$tmpdir . 'mailmap/.mailmap', "Anakin Skywalker Luke Skywalker "); + file_put_contents(self::$tmpdir . 'mailmap/.mailmap', 'Anakin Skywalker Luke Skywalker '); $repository->addAll(); - $repository->commit("First commit"); + $repository->commit('First commit'); + } + + public static function tearDownAfterClass() + { + $fs = new Filesystem(); + $fs->remove(self::$tmpdir); } public function createApplication() { - $config = new GitList\Config; + $config = new GitList\Config(); $config->set('app', 'debug', true); $config->set('app', 'debug', false); $config->set('git', 'client', self::$gitPath); $config->set('git', 'default_branch', 'master'); - $config->set('git', 'repositories', array(self::$tmpdir)); + $config->set('git', 'repositories', [self::$tmpdir]); $app = require 'boot.php'; + return $app; } /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testInitialPage() { @@ -178,7 +190,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testRepositoryPage() { @@ -211,7 +223,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\BlobController::connect + * @covers \GitList\Controller\BlobController::connect */ public function testBlobPage() { @@ -221,18 +233,26 @@ class InterfaceTest extends WebTestCase $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.breadcrumb .active:contains("test.php")')); - $this->assertEquals('/GitTest/raw/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(0)->attr('href')); - $this->assertEquals('/GitTest/blame/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(1)->attr('href')); - $this->assertEquals('/GitTest/logpatch/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(2)->attr('href')); - $this->assertEquals('/GitTest/commits/master/test.php', - $crawler->filter('.source-header .btn-group a')->eq(3)->attr('href')); + $this->assertEquals( + '/GitTest/raw/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(0)->attr('href') + ); + $this->assertEquals( + '/GitTest/blame/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(1)->attr('href') + ); + $this->assertEquals( + '/GitTest/logpatch/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(2)->attr('href') + ); + $this->assertEquals( + '/GitTest/commits/master/test.php', + $crawler->filter('.source-header .btn-group a')->eq(3)->attr('href') + ); } /** - * @covers GitList\Controller\BlobController::connect + * @covers \GitList\Controller\BlobController::connect */ public function testRawPage() { @@ -244,7 +264,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testBlamePage() { @@ -253,18 +273,22 @@ class InterfaceTest extends WebTestCase $crawler = $client->request('GET', '/GitTest/blame/master/test.php'); $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.source-header .meta:contains("test.php")')); - $this->assertRegexp('/\/GitTest\/commit\/[a-zA-Z0-9%]+/', - $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href')); + $this->assertRegexp( + '/\/GitTest\/commit\/[a-zA-Z0-9%]+/', + $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href') + ); $crawler = $client->request('GET', '/foobar/blame/master/bar.json'); $this->assertTrue($client->getResponse()->isOk()); $this->assertCount(1, $crawler->filter('.source-header .meta:contains("bar.json")')); - $this->assertRegexp('/\/foobar\/commit\/[a-zA-Z0-9%]+/', - $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href')); + $this->assertRegexp( + '/\/foobar\/commit\/[a-zA-Z0-9%]+/', + $crawler->filter('.blame-view .commit')->eq(0)->filter('a')->attr('href') + ); } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testHistoryPage() { @@ -289,7 +313,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\CommitController::connect + * @covers \GitList\Controller\CommitController::connect */ public function testCommitsPage() { @@ -309,7 +333,6 @@ class InterfaceTest extends WebTestCase $this->assertEquals('mailto:darth@empire.com', $crawler->filter('.table tbody tr td span a')->eq(1)->attr('href')); } - public function testPatchLogPage() { $client = $this->createClient(); @@ -327,9 +350,8 @@ class InterfaceTest extends WebTestCase $this->assertEquals('First commit', $crawler->filter('.commit-header h4')->eq(0)->text()); } - /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testStatsPage() { @@ -348,7 +370,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\MainController::connect + * @covers \GitList\Controller\MainController::connect */ public function testRssPage() { @@ -363,7 +385,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testNestedRepoPage() { @@ -377,7 +399,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testDevelopRepo() { @@ -388,7 +410,7 @@ class InterfaceTest extends WebTestCase } /** - * @covers GitList\Controller\TreeController::connect + * @covers \GitList\Controller\TreeController::connect */ public function testNestedRepoBranch() { @@ -398,11 +420,4 @@ class InterfaceTest extends WebTestCase $this->assertTrue($client->getResponse()->isOk()); $this->assertRegexp('/NESTED TEST BRANCH README/', $client->getResponse()->getContent()); } - - public static function tearDownAfterClass() - { - $fs = new Filesystem(); - $fs->remove(self::$tmpdir); - } } - diff --git a/themes/bootstrap3/twig/layout.twig b/themes/bootstrap3/twig/layout.twig index 85cf9c2..895d194 100644 --- a/themes/bootstrap3/twig/layout.twig +++ b/themes/bootstrap3/twig/layout.twig @@ -4,28 +4,28 @@ {% block title %}Welcome!{% endblock %} - - - - + + + + {% block body %}{% endblock %} {% block javascripts %} - - - - - - - - - - + + + + + + + + + + {% endblock %} diff --git a/themes/bootstrap3/twig/layout_page.twig b/themes/bootstrap3/twig/layout_page.twig index 5da4e25..2873656 100644 --- a/themes/bootstrap3/twig/layout_page.twig +++ b/themes/bootstrap3/twig/layout_page.twig @@ -8,19 +8,19 @@
diff --git a/themes/bootstrap3/twig/navigation.twig b/themes/bootstrap3/twig/navigation.twig index 12af3df..bc33256 100644 --- a/themes/bootstrap3/twig/navigation.twig +++ b/themes/bootstrap3/twig/navigation.twig @@ -7,7 +7,7 @@ - {{ app.title }} + {{ title }}