diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 000000000..3b0b7ce4e --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,5 @@ +last 1 firefox version +last 1 chrome version +ie 11 +last 1 edge version +last 1 safari version diff --git a/.gitignore b/.gitignore index 58ff9fe7f..a1d7bbab7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,19 +7,41 @@ /build/logs/* /vendor /cov -/web/bundles -/web/css -/web/js -/web/uploads/users/* -/web/uploads/branch/* -/web/media/cache -/web/build.js -/app/cache/* -/app/config/parameters.yml -/app/config/parameters_test.yml +behat.yml +/var/* +!var/cache/ +/var/cache/* +!var/cache/.gitkeep +!var/logs/ +/var/logs/* +!var/logs/.gitkeep +!var/attachment/ +/var/attachment/* +!var/attachment/.gitkeep +!var/attachments/ +/var/attachments/* +!var/attachments/.gitkeep +!var/import_export/ +/var/import_export/* +!var/import_export/.gitkeep +!var/oro-check.php +!var/OroRequirements.php +!var/DiamanteDeskRequirements.php +/public/bundles +/public/css +/public/js +/public/uploads/users/* +/public/media/cache +/public/media/js +/public/build.js +/config/parameters.yml +/config/parameters_test.yml *~ -/app/logs/* -/app/attachments/* +bin/* +!bin/console +!bin/dist phpunit.xml -.DS_Store -bin +/var/SymfonyRequirements.php +/public/uploads/behat +/.web-server-pid +/.vagrant diff --git a/.travis.yml b/.travis.yml index d9aba0eed..617944774 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,8 +12,8 @@ matrix: - php: hhvm branches: - except: - - l10n_master + only: + - master before_install: - mysql -e 'create database diamantedesk;' diff --git a/3rd-party-dependencies.md b/3rd-party-dependencies.md new file mode 100644 index 000000000..96eded561 --- /dev/null +++ b/3rd-party-dependencies.md @@ -0,0 +1,945 @@ +# Third-party dependencies + +## Required packages + +|Name|License| +|----|-------| +|[akeneo/batch-bundle](https://github.com/laboro/BatchBundle.git)|MIT| +|[ass/xmlsecurity](https://github.com/aschamberger/XmlSecurity.git)|BSD-3-Clause| +|[behat/transliterator](https://github.com/Behat/Transliterator.git)|Artistic-1.0| +|[bower-asset/autobahnjs](https://github.com/tavendo/AutobahnJS.git)|MIT| +|[bower-asset/autolinker.js](https://github.com/gregjacobs/Autolinker.js.git)|MIT| +|[bower-asset/backbone](https://github.com/jashkenas/backbone.git)|MIT| +|[bower-asset/backbone-pageable](https://github.com/wyuenho/backbone-pageable.git)|MIT| +|[bower-asset/backbone.paginator](https://github.com/addyosmani/backbone.paginator.git)|MIT| +|[bower-asset/backgrid](https://github.com/wyuenho/backgrid.git)|MIT| +|[bower-asset/backgrid-paginator](https://github.com/wyuenho/backgrid-paginator.git)|MIT| +|[bower-asset/base64](https://github.com/davidchambers/Base64.js.git)|WTFPL| +|[bower-asset/bean](https://github.com/fat/bean.git)|MIT| +|[bower-asset/bootstrap](https://github.com/twbs/bootstrap.git)|MIT| +|[bower-asset/chaplin](https://github.com/chaplinjs/downloads.git)|MIT| +|[bower-asset/crypto-js](https://github.com/brix/crypto-js.git)|MIT| +|[bower-asset/datepair](https://github.com/jonthornton/Datepair.js.git)|MIT| +|[bower-asset/flotr2](https://github.com/HumbleSoftware/Flotr2.git)|MIT| +|[bower-asset/font-awesome](https://github.com/FortAwesome/Font-Awesome.git)|OFL-1.1 and MIT| +|[bower-asset/fuse](https://github.com/krisk/Fuse.git)|Apache-2.0| +|[bower-asset/jquery](https://github.com/jquery/jquery-dist.git)|MIT| +|[bower-asset/jquery-ajax-queue](https://github.com/flydreamers/ajaxQueue.git)|MIT| +|[bower-asset/jquery-cookie](https://github.com/carhartl/jquery-cookie.git)|MIT| +|[bower-asset/jquery-form](https://github.com/jquery-form/form.git)|(MIT OR LGPL-3.0)| +|[bower-asset/jquery-mousewheel](https://github.com/jquery/jquery-mousewheel.git)|MIT| +|[bower-asset/jquery-ui-multiselect-widget](https://github.com/ehynds/jquery-ui-multiselect-widget.git)|GPL-2 and MIT| +|[bower-asset/jquery-validate](https://github.com/jzaefferer/jquery-validation.git)|MIT| +|[bower-asset/jquery.numeric](https://github.com/SamWM/jquery-numeric.git)|MIT| +|[bower-asset/jsplumb](https://github.com/sporritt/jsPlumb.git)|MIT| +|[bower-asset/lightgallery](https://github.com/sachinchoolur/lightGallery.git)|GPLv3| +|[bower-asset/malihu-custom-scrollbar-plugin](https://github.com/malihu/malihu-custom-scrollbar-plugin.git)|MIT| +|[bower-asset/moment](https://github.com/moment/moment.git)|MIT| +|[bower-asset/moment-timezone](https://github.com/moment/moment-timezone.git)|MIT| +|[bower-asset/numeral](https://github.com/adamwdraper/Numeral-js.git)|MIT| +|[bower-asset/select2](https://github.com/ivaynberg/select2.git)|MIT| +|[bower-asset/text](https://github.com/requirejs/text.git)|MIT| +|[bower-asset/timepicker](https://github.com/jonthornton/jquery-timepicker.git)|MIT| +|[bower-asset/underscore](https://github.com/jashkenas/underscore.git)|MIT| +|[bower-asset/when](https://github.com/cujojs/when.git)|MIT| +|[brick/math](https://github.com/brick/math.git)|MIT| +|[components/jquery](https://github.com/components/jquery.git)|MIT| +|[components/jqueryui](https://github.com/components/jqueryui.git)|MIT| +|[composer/ca-bundle](https://github.com/composer/ca-bundle.git)|MIT| +|[composer/composer](https://github.com/composer/composer.git)|MIT| +|[composer/semver](https://github.com/composer/semver.git)|MIT| +|[composer/spdx-licenses](https://github.com/composer/spdx-licenses.git)|MIT| +|[container-interop/container-interop](https://github.com/container-interop/container-interop.git)|MIT| +|[doctrine/annotations](https://github.com/doctrine/annotations.git)|MIT| +|[doctrine/cache](https://github.com/doctrine/cache.git)|MIT| +|[doctrine/collections](https://github.com/doctrine/collections.git)|MIT| +|[doctrine/common](https://github.com/doctrine/common.git)|MIT| +|[doctrine/data-fixtures](https://github.com/doctrine/data-fixtures.git)|MIT| +|[doctrine/dbal](https://github.com/doctrine/dbal.git)|MIT| +|[doctrine/doctrine-bundle](https://github.com/doctrine/DoctrineBundle.git)|MIT| +|[doctrine/doctrine-cache-bundle](https://github.com/doctrine/DoctrineCacheBundle.git)|MIT| +|[doctrine/doctrine-fixtures-bundle](https://github.com/doctrine/DoctrineFixturesBundle.git)|MIT| +|[doctrine/event-manager](https://github.com/doctrine/event-manager.git)|MIT| +|[doctrine/inflector](https://github.com/doctrine/inflector.git)|MIT| +|[doctrine/instantiator](https://github.com/doctrine/instantiator.git)|MIT| +|[doctrine/lexer](https://github.com/doctrine/lexer.git)|MIT| +|[doctrine/orm](https://github.com/doctrine/orm.git)|MIT| +|[doctrine/persistence](https://github.com/doctrine/persistence.git)|MIT| +|[doctrine/reflection](https://github.com/doctrine/reflection.git)|MIT| +|[escapestudios/wsse-authentication-bundle](https://github.com/djoos/EscapeWSSEAuthenticationBundle.git)|MIT| +|[evenement/evenement](https://github.com/igorw/evenement.git)|MIT| +|[ezyang/htmlpurifier](https://github.com/ezyang/htmlpurifier.git)|LGPL| +|[fig/link-util](https://github.com/php-fig/link-util.git)|MIT| +|[friendsofsymfony/jsrouting-bundle](https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git)|MIT| +|[friendsofsymfony/rest-bundle](https://github.com/FriendsOfSymfony/FOSRestBundle.git)|MIT| +|[gedmo/doctrine-extensions](https://github.com/Atlantic18/DoctrineExtensions.git)|MIT| +|[gos/pnctl-event-loop-emitter](https://github.com/GeniusesOfSymfony/PNCTLEventLoopEmitter.git)|MIT| +|[gos/pubsub-router-bundle](https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git)|MIT| +|[gos/ratchet](https://github.com/GeniusesOfSymfony/Ratchet.git)|MIT| +|[gos/ratchet-stack](https://github.com/GeniusesOfSymfony/RatchetStack.git)|MIT| +|[gos/web-socket-bundle](https://github.com/GeniusesOfSymfony/WebSocketBundle.git)|MIT| +|[gos/websocket-client](https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git)|MIT| +|[guzzle/guzzle](https://github.com/guzzle/guzzle.git)|MIT| +|[guzzlehttp/psr7](https://github.com/guzzle/psr7.git)|MIT| +|[hwi/oauth-bundle](https://github.com/hwi/HWIOAuthBundle.git)|MIT| +|[imagine/imagine](https://github.com/avalanche123/Imagine.git)|MIT| +|[incenteev/composer-parameter-handler](https://github.com/Incenteev/ParameterHandler.git)|MIT| +|[jdorn/sql-formatter](https://github.com/jdorn/sql-formatter.git)|MIT| +|[jms/cg](https://github.com/schmittjoh/cg-library.git)|Apache2| +|[jms/metadata](https://github.com/schmittjoh/metadata.git)|MIT| +|[jms/parser-lib](https://github.com/schmittjoh/parser-lib.git)|Apache2| +|[jms/serializer](https://github.com/schmittjoh/serializer.git)|MIT| +|[jms/serializer-bundle](https://github.com/schmittjoh/JMSSerializerBundle.git)|Apache-2.0| +|[justinrainbow/json-schema](https://github.com/justinrainbow/json-schema.git)|MIT| +|[knplabs/gaufrette](https://github.com/KnpLabs/Gaufrette.git)|MIT| +|[knplabs/knp-gaufrette-bundle](https://github.com/KnpLabs/KnpGaufretteBundle.git)|MIT| +|[knplabs/knp-menu](https://github.com/KnpLabs/KnpMenu.git)|MIT| +|[knplabs/knp-menu-bundle](https://github.com/KnpLabs/KnpMenuBundle.git)|MIT| +|[kriswallsmith/assetic](https://github.com/kriswallsmith/assetic.git)|MIT| +|[kriswallsmith/buzz](https://github.com/kriswallsmith/Buzz.git)|MIT| +|[leafo/scssphp](https://github.com/leafo/scssphp.git)|MIT| +|[lexik/maintenance-bundle](https://github.com/lexik/LexikMaintenanceBundle.git)|MIT| +|[liip/imagine-bundle](https://github.com/liip/LiipImagineBundle.git)|MIT| +|[liuggio/excelbundle](https://github.com/liuggio/ExcelBundle.git)|MIT| +|[michelf/php-markdown](https://github.com/michelf/php-markdown.git)|BSD-3-Clause| +|[monolog/monolog](https://github.com/Seldaek/monolog.git)|MIT| +|[mtdowling/cron-expression](https://github.com/mtdowling/cron-expression.git)|MIT| +|[mustangostang/spyc](https://github.com/mustangostang/spyc.git)|MIT| +|[nelmio/api-doc-bundle](https://github.com/nelmio/NelmioApiDocBundle.git)|MIT| +|[nelmio/security-bundle](https://github.com/nelmio/NelmioSecurityBundle.git)|MIT| +|[nesbot/carbon](https://github.com/briannesbitt/Carbon.git)|MIT| +|[npm-asset/bootbox](https://github.com/makeusabrew/bootbox.git)|MIT| +|[npm-asset/bootstrap](https://github.com/twbs/bootstrap.git)|MIT| +|[npm-asset/jquery](https://github.com/jquery/jquery)|MIT| +|[npm-asset/jquery.uniform](https://github.com/AudithSoftworks/Uniform)|MIT| +|[npm-asset/requirejs](https://github.com/jrburke/r.js)|MIT| +|[npm-asset/xregexp](https://github.com/slevithan/xregexp)|MIT| +|[ocramius/package-versions](https://github.com/Ocramius/PackageVersions.git)|MIT| +|[ocramius/proxy-manager](https://github.com/Ocramius/ProxyManager.git)|MIT| +|[paragonie/random_compat](https://github.com/paragonie/random_compat.git)|MIT| +|[phpcollection/phpcollection](https://github.com/schmittjoh/php-collection.git)|Apache2| +|[phpdocumentor/reflection-common](https://github.com/phpDocumentor/ReflectionCommon.git)|MIT| +|[phpdocumentor/reflection-docblock](https://github.com/phpDocumentor/ReflectionDocBlock.git)|MIT| +|[phpdocumentor/type-resolver](https://github.com/phpDocumentor/TypeResolver.git)|MIT| +|[phpoffice/phpexcel](https://github.com/PHPOffice/PHPExcel.git)|LGPL-2.1| +|[phpoption/phpoption](https://github.com/schmittjoh/php-option.git)|Apache2| +|[piwik/device-detector](https://github.com/matomo-org/device-detector.git)|LGPL-3.0-or-later| +|[predis/predis](https://github.com/nrk/predis.git)|MIT| +|[psr/cache](https://github.com/php-fig/cache.git)|MIT| +|[psr/container](https://github.com/php-fig/container.git)|MIT| +|[psr/http-message](https://github.com/php-fig/http-message.git)|MIT| +|[psr/link](https://github.com/php-fig/link.git)|MIT| +|[psr/log](https://github.com/php-fig/log.git)|MIT| +|[psr/simple-cache](https://github.com/php-fig/simple-cache.git)|MIT| +|[ralouphie/getallheaders](https://github.com/ralouphie/getallheaders.git)|MIT| +|[react/event-loop](https://github.com/reactphp/event-loop.git)|MIT| +|[react/promise](https://github.com/reactphp/promise.git)|MIT| +|[react/socket](https://github.com/reactphp/socket.git)|MIT| +|[react/stream](https://github.com/reactphp/stream.git)|MIT| +|[robloach/component-installer](https://github.com/RobLoach/component-installer.git)|MIT| +|[seld/cli-prompt](https://github.com/Seldaek/cli-prompt.git)|MIT| +|[seld/jsonlint](https://github.com/Seldaek/jsonlint.git)|MIT| +|[seld/phar-utils](https://github.com/Seldaek/phar-utils.git)|MIT| +|[sensio/distribution-bundle](https://github.com/sensiolabs/SensioDistributionBundle.git)|MIT| +|[sensio/framework-extra-bundle](https://github.com/sensiolabs/SensioFrameworkExtraBundle.git)|MIT| +|[sensiolabs/security-checker](https://github.com/sensiolabs/security-checker.git)|MIT| +|[snc/redis-bundle](https://github.com/snc/SncRedisBundle.git)|MIT| +|[stof/doctrine-extensions-bundle](https://github.com/stof/StofDoctrineExtensionsBundle.git)|MIT| +|[swiftmailer/swiftmailer](https://github.com/swiftmailer/swiftmailer.git)|MIT| +|[symfony/monolog-bundle](https://github.com/symfony/monolog-bundle.git)|MIT| +|[symfony/polyfill-apcu](https://github.com/symfony/polyfill-apcu.git)|MIT| +|[symfony/polyfill-ctype](https://github.com/symfony/polyfill-ctype.git)|MIT| +|[symfony/polyfill-intl-icu](https://github.com/symfony/polyfill-intl-icu.git)|MIT| +|[symfony/polyfill-mbstring](https://github.com/symfony/polyfill-mbstring.git)|MIT| +|[symfony/polyfill-php56](https://github.com/symfony/polyfill-php56.git)|MIT| +|[symfony/polyfill-php70](https://github.com/symfony/polyfill-php70.git)|MIT| +|[symfony/polyfill-util](https://github.com/symfony/polyfill-util.git)|MIT| +|[symfony/security-acl](https://github.com/symfony/security-acl.git)|MIT| +|[symfony/swiftmailer-bundle](https://github.com/symfony/swiftmailer-bundle.git)|MIT| +|[symfony/symfony](https://github.com/symfony/symfony.git)|MIT| +|[tinymce/tinymce](https://github.com/tinymce/tinymce-dist.git)|LGPL-2.1| +|[true/punycode](https://github.com/true/php-punycode.git)|MIT| +|[twig/extensions](https://github.com/twigphp/Twig-extensions.git)|MIT| +|[twig/twig](https://github.com/twigphp/Twig.git)|BSD-3-Clause| +|[ua-parser/uap-php](https://github.com/ua-parser/uap-php.git)|MIT| +|[vakata/jstree](https://github.com/vakata/jstree.git)|MIT| +|[webmozart/assert](https://github.com/webmozart/assert.git)|MIT| +|[willdurand/jsonp-callback-validator](https://github.com/willdurand/JsonpCallbackValidator.git)|MIT| +|[willdurand/negotiation](https://github.com/willdurand/Negotiation.git)|MIT| +|[zendframework/zend-code](https://github.com/zendframework/zend-code.git)|BSD-3-Clause| +|[zendframework/zend-eventmanager](https://github.com/zendframework/zend-eventmanager.git)|BSD-3-Clause| +|[zendframework/zend-loader](https://github.com/zendframework/zend-loader.git)|BSD-3-Clause| +|[zendframework/zend-mail](https://github.com/zendframework/zend-mail.git)|BSD-3-Clause| +|[zendframework/zend-mime](https://github.com/zendframework/zend-mime.git)|BSD-3-Clause| +|[zendframework/zend-stdlib](https://github.com/zendframework/zend-stdlib.git)|BSD-3-Clause| +|[zendframework/zend-validator](https://github.com/zendframework/zend-validator.git)|BSD-3-Clause| + +## Development packages + +|Name|License| +|----|-------| +|[@webassemblyjs/ast](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/floating-point-hex-parser](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/helper-api-error](https://npmjs.com/package/@webassemblyjs/helper-api-error)|MIT| +|[@webassemblyjs/helper-buffer](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/helper-code-frame](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/helper-fsm](https://npmjs.com/package/@webassemblyjs/helper-fsm)|ISC| +|[@webassemblyjs/helper-module-context](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/helper-wasm-bytecode](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/helper-wasm-section](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/ieee754](https://npmjs.com/package/@webassemblyjs/ieee754)|MIT| +|[@webassemblyjs/leb128](https://npmjs.com/package/@webassemblyjs/leb128)|MIT| +|[@webassemblyjs/utf8](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wasm-edit](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wasm-gen](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wasm-opt](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wasm-parser](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wast-parser](https://github.com/xtuc/webassemblyjs)|MIT| +|[@webassemblyjs/wast-printer](https://github.com/xtuc/webassemblyjs)|MIT| +|[@xtuc/ieee754](https://github.com/feross/ieee754)|BSD-3-Clause| +|[@xtuc/long](https://github.com/dcodeIO/long.js)|Apache-2.0| +|[abbrev](https://github.com/isaacs/abbrev-js)|ISC| +|[accepts](https://github.com/jshttp/accepts)|MIT| +|[acorn](https://github.com/acornjs/acorn)|MIT| +|[acorn-dynamic-import](https://github.com/kesne/acorn-dynamic-import)|MIT| +|[acorn-jsx](https://github.com/RReverser/acorn-jsx)|MIT| +|[adjust-sourcemap-loader](https://github.com/bholloway/adjust-sourcemap-loader)|MIT| +|[after](https://github.com/Raynos/after)|MIT| +|[ajv](https://github.com/epoberezkin/ajv)|MIT| +|[ajv-errors](https://github.com/epoberezkin/ajv-errors)|MIT| +|[ajv-keywords](https://github.com/epoberezkin/ajv-keywords)|MIT| +|[alphanum-sort](https://github.com/TrySound/alphanum-sort)|MIT| +|[amdefine](https://github.com/jrburke/amdefine)|BSD-3-Clause OR MIT| +|[ansi-escapes](https://github.com/sindresorhus/ansi-escapes)|MIT| +|[ansi-regex](https://github.com/chalk/ansi-regex)|MIT| +|[ansi-styles](https://github.com/chalk/ansi-styles)|MIT| +|[anymatch](https://github.com/micromatch/anymatch)|ISC| +|[aproba](https://github.com/iarna/aproba)|ISC| +|[are-we-there-yet](https://github.com/iarna/are-we-there-yet)|ISC| +|[argparse](https://github.com/nodeca/argparse)|MIT| +|[arr-diff](https://github.com/jonschlinkert/arr-diff)|MIT| +|[arr-flatten](https://github.com/jonschlinkert/arr-flatten)|MIT| +|[arr-union](https://github.com/jonschlinkert/arr-union)|MIT| +|[array-find-index](https://github.com/sindresorhus/array-find-index)|MIT| +|[array-slice](https://github.com/jonschlinkert/array-slice)|MIT| +|[array-unique](https://github.com/jonschlinkert/array-unique)|MIT| +|[arraybuffer.slice](https://github.com/rase-/arraybuffer.slice)|MIT| +|[asn1](https://github.com/joyent/node-asn1)|MIT| +|[asn1.js](https://github.com/indutny/asn1.js)|MIT| +|[assert](https://github.com/defunctzombie/commonjs-assert)|MIT| +|[assert-plus](https://github.com/mcavage/node-assert-plus)|MIT| +|[assign-symbols](https://github.com/jonschlinkert/assign-symbols)|MIT| +|[async](https://github.com/caolan/async)|MIT| +|[async-each](https://github.com/paulmillr/async-each)|MIT| +|[async-foreach](https://github.com/cowboy/javascript-sync-async-foreach)|MIT| +|[async-limiter](https://github.com/strml/async-limiter)|MIT| +|[asynckit](https://github.com/alexindigo/asynckit)|MIT| +|[atob](https://git.coolaj86.com/coolaj86/atob.js)|(MIT OR Apache-2.0)| +|[autoprefixer](https://github.com/postcss/autoprefixer)|MIT| +|[aws-sign2](https://github.com/mikeal/aws-sign)|Apache-2.0| +|[aws4](https://github.com/mhart/aws4)|MIT| +|[babel-code-frame](https://github.com/babel/babel/tree/master/packages/babel-code-frame)|MIT| +|[babel-runtime](https://github.com/babel/babel/tree/master/packages/babel-runtime)|MIT| +|[backo2](https://github.com/mokesmokes/backo)|MIT| +|[balanced-match](https://github.com/juliangruber/balanced-match)|MIT| +|[base](https://github.com/node-base/base)|MIT| +|[base64-arraybuffer](https://github.com/niklasvh/base64-arraybuffer)|MIT| +|[base64-js](https://github.com/beatgammit/base64-js)|MIT| +|[base64id](https://github.com/faeldt/base64id)|MIT| +|[bcrypt-pbkdf](https://github.com/joyent/node-bcrypt-pbkdf)|BSD-3-Clause| +|[behat/behat](https://github.com/Behat/Behat.git)|MIT| +|[behat/mink](https://github.com/minkphp/Mink.git)|MIT| +|[behat/mink-extension](https://github.com/Behat/MinkExtension.git)|MIT| +|[behat/mink-selenium2-driver](https://github.com/minkphp/MinkSelenium2Driver.git)|MIT| +|[behat/symfony2-extension](https://github.com/Behat/Symfony2Extension.git)|MIT| +|[better-assert](https://github.com/visionmedia/better-assert)|MIT| +|[big.js](https://github.com/MikeMcl/big.js)|MIT| +|[binary-extensions](https://github.com/sindresorhus/binary-extensions)|MIT| +|[blob](https://github.com/webmodules/blob)|MIT| +|[block-stream](https://github.com/isaacs/block-stream)|ISC| +|[bluebird](https://github.com/petkaantonov/bluebird)|MIT| +|[bn.js](https://github.com/indutny/bn.js)|MIT| +|[body-parser](https://github.com/expressjs/body-parser)|MIT| +|[brace-expansion](https://github.com/juliangruber/brace-expansion)|MIT| +|[braces](https://github.com/micromatch/braces)|MIT| +|[brorand](https://github.com/indutny/brorand)|MIT| +|[browserify-aes](https://github.com/crypto-browserify/browserify-aes)|MIT| +|[browserify-cipher](https://github.com/crypto-browserify/browserify-cipher)|MIT| +|[browserify-des](https://github.com/crypto-browserify/browserify-des)|MIT| +|[browserify-rsa](https://github.com/crypto-browserify/browserify-rsa)|MIT| +|[browserify-sign](https://github.com/crypto-browserify/browserify-sign)|ISC| +|[browserify-zlib](https://github.com/devongovett/browserify-zlib)|MIT| +|[browserslist](https://github.com/browserslist/browserslist)|MIT| +|[btoa](https://git.coolaj86.com/coolaj86/btoa.js)|(MIT OR Apache-2.0)| +|[buffer](https://github.com/feross/buffer)|MIT| +|[buffer-alloc](https://github.com/LinusU/buffer-alloc)|MIT| +|[buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe)|MIT| +|[buffer-fill](https://github.com/LinusU/buffer-fill)|MIT| +|[buffer-from](https://github.com/LinusU/buffer-from)|MIT| +|[buffer-xor](https://github.com/crypto-browserify/buffer-xor)|MIT| +|[builtin-status-codes](https://github.com/bendrucker/builtin-status-codes)|MIT| +|[bytes](https://github.com/visionmedia/bytes.js)|MIT| +|[cacache](https://github.com/zkat/cacache)|ISC| +|[cache-base](https://github.com/jonschlinkert/cache-base)|MIT| +|[caller-path](https://github.com/sindresorhus/caller-path)|MIT| +|[callsite](https://npmjs.com/package/callsite)|MIT| +|[callsites](https://github.com/sindresorhus/callsites)|MIT| +|[camelcase](https://github.com/sindresorhus/camelcase)|MIT| +|[camelcase-keys](https://github.com/sindresorhus/camelcase-keys)|MIT| +|[caniuse-api](https://github.com/nyalab/caniuse-api)|MIT| +|[caniuse-db](https://github.com/Fyrd/caniuse)|CC-BY-4.0| +|[caniuse-lite](https://github.com/ben-eb/caniuse-lite)|CC-BY-4.0| +|[caseless](https://github.com/mikeal/caseless)|Apache-2.0| +|[chalk](https://github.com/chalk/chalk)|MIT| +|[chardet](https://github.com/runk/node-chardet)|MIT| +|[chokidar](https://github.com/paulmillr/chokidar)|MIT| +|[chownr](https://github.com/isaacs/chownr)|ISC| +|[chrome-trace-event](https://github.com/samccone/chrome-trace-event)|MIT| +|[cipher-base](https://github.com/crypto-browserify/cipher-base)|MIT| +|[circular-json](https://github.com/WebReflection/circular-json)|MIT| +|[clap](https://github.com/lahmatiy/clap)|MIT| +|[class-utils](https://github.com/jonschlinkert/class-utils)|MIT| +|[cli-cursor](https://github.com/sindresorhus/cli-cursor)|MIT| +|[cli-width](https://github.com/knownasilya/cli-width)|ISC| +|[cliui](https://github.com/yargs/cliui)|ISC| +|[clone](https://github.com/pvorb/node-clone)|MIT| +|[clone-deep](https://github.com/jonschlinkert/clone-deep)|MIT| +|[co](https://github.com/tj/co)|MIT| +|[coa](https://github.com/veged/coa)|MIT| +|[code-point-at](https://github.com/sindresorhus/code-point-at)|MIT| +|[collection-visit](https://github.com/jonschlinkert/collection-visit)|MIT| +|[color](https://github.com/Qix-/color)|MIT| +|[color-convert](https://github.com/Qix-/color-convert)|MIT| +|[color-name](https://github.com/dfcreative/color-name)|MIT| +|[color-string](https://github.com/harthur/color-string)|MIT| +|[colormin](https://github.com/ben-eb/colormin)|MIT| +|[colors](https://github.com/Marak/colors.js)|MIT| +|[combine-lists](https://github.com/sjelin/combine-lists)|MIT| +|[combined-stream](https://github.com/felixge/node-combined-stream)|MIT| +|[commander](https://github.com/tj/commander.js)|MIT| +|[commondir](https://github.com/substack/node-commondir)|MIT| +|[component-bind](https://github.com/component/bind)|MIT| +|[component-emitter](https://github.com/component/emitter)|MIT| +|[component-inherit](https://github.com/component/inherit)|MIT| +|[concat-map](https://github.com/substack/node-concat-map)|MIT| +|[concat-stream](https://github.com/maxogden/concat-stream)|MIT| +|[connect](https://github.com/senchalabs/connect)|MIT| +|[console-browserify](https://github.com/Raynos/console-browserify)|MIT| +|[console-control-strings](https://github.com/iarna/console-control-strings)|ISC| +|[constants-browserify](https://github.com/juliangruber/constants-browserify)|MIT| +|[content-type](https://github.com/jshttp/content-type)|MIT| +|[convert-source-map](https://github.com/thlorenz/convert-source-map)|MIT| +|[cookie](https://github.com/jshttp/cookie)|MIT| +|[copy-concurrently](https://github.com/npm/copy-concurrently)|ISC| +|[copy-descriptor](https://github.com/jonschlinkert/copy-descriptor)|MIT| +|[core-js](https://github.com/zloirock/core-js)|MIT| +|[core-util-is](https://github.com/isaacs/core-util-is)|MIT| +|[cosmiconfig](https://github.com/davidtheclark/cosmiconfig)|MIT| +|[create-ecdh](https://github.com/crypto-browserify/createECDH)|MIT| +|[create-hash](https://github.com/crypto-browserify/createHash)|MIT| +|[create-hmac](https://github.com/crypto-browserify/createHmac)|MIT| +|[cross-spawn](https://github.com/moxystudio/node-cross-spawn)|MIT| +|[crypto-browserify](https://github.com/crypto-browserify/crypto-browserify)|MIT| +|[css](https://github.com/reworkcss/css)|MIT| +|[css-color-names](https://github.com/bahamas10/css-color-names)|MIT| +|[css-loader](https://github.com/webpack-contrib/css-loader)|MIT| +|[css-selector-tokenizer](https://github.com/css-modules/css-selector-tokenizer)|MIT| +|[cssesc](https://github.com/mathiasbynens/cssesc)|MIT| +|[cssnano](https://github.com/ben-eb/cssnano)|MIT| +|[csso](https://github.com/css/csso)|MIT| +|[currently-unhandled](https://github.com/jamestalmage/currently-unhandled)|MIT| +|[custom-event](https://github.com/webmodules/custom-event)|MIT| +|[cyclist](https://github.com/mafintosh/cyclist)|MIT| +|[dashdash](https://github.com/trentm/node-dashdash)|MIT| +|[date-format](https://github.com/nomiddlename/date-format)|MIT| +|[date-now](https://github.com/Colingo/date-now)|MIT| +|[dateformat](https://github.com/felixge/node-dateformat)|MIT| +|[debug](https://github.com/visionmedia/debug)|MIT| +|[decamelize](https://github.com/sindresorhus/decamelize)|MIT| +|[decode-uri-component](https://github.com/SamVerschueren/decode-uri-component)|MIT| +|[deep-extend](https://github.com/unclechu/node-deep-extend)|MIT| +|[deep-is](https://github.com/thlorenz/deep-is)|MIT| +|[deepmerge](https://github.com/KyleAMathews/deepmerge)|MIT| +|[define-property](https://github.com/jonschlinkert/define-property)|MIT| +|[defined](https://github.com/substack/defined)|MIT| +|[delayed-stream](https://github.com/felixge/node-delayed-stream)|MIT| +|[delegates](https://github.com/visionmedia/node-delegates)|MIT| +|[depd](https://github.com/dougwilson/nodejs-depd)|MIT| +|[des.js](https://github.com/indutny/des.js)|MIT| +|[detect-file](https://github.com/doowb/detect-file)|MIT| +|[detect-libc](https://github.com/lovell/detect-libc)|Apache-2.0| +|[di](https://github.com/vojtajina/node-di)|MIT| +|[diffie-hellman](https://github.com/crypto-browserify/diffie-hellman)|MIT| +|[doctrine](https://github.com/eslint/doctrine)|Apache-2.0| +|[dom-serialize](https://github.com/webmodules/dom-serialize)|MIT| +|[domain-browser](https://github.com/bevry/domain-browser)|MIT| +|[duplexify](https://github.com/mafintosh/duplexify)|MIT| +|[ecc-jsbn](https://github.com/quartzjer/ecc-jsbn)|MIT| +|[ee-first](https://github.com/jonathanong/ee-first)|MIT| +|[electron-to-chromium](https://github.com/kilian/electron-to-chromium)|ISC| +|[elliptic](https://github.com/indutny/elliptic)|MIT| +|[emojis-list](https://github.com/kikobeats/emojis-list)|MIT| +|[encodeurl](https://github.com/pillarjs/encodeurl)|MIT| +|[end-of-stream](https://github.com/mafintosh/end-of-stream)|MIT| +|[engine.io](https://github.com/socketio/engine.io)|MIT| +|[engine.io-client](https://github.com/socketio/engine.io-client)|MIT| +|[engine.io-parser](https://github.com/socketio/engine.io-parser)|MIT| +|[enhanced-resolve](https://github.com/webpack/enhanced-resolve)|MIT| +|[ent](https://github.com/substack/node-ent)|MIT| +|[errno](https://github.com/rvagg/node-errno)|MIT| +|[error-ex](https://github.com/qix-/node-error-ex)|MIT| +|[escape-html](https://github.com/component/escape-html)|MIT| +|[escape-string-regexp](https://github.com/sindresorhus/escape-string-regexp)|MIT| +|[escodegen](https://github.com/estools/escodegen)|BSD-2-Clause| +|[eslint](https://github.com/eslint/eslint)|MIT| +|[eslint-config-google](https://github.com/google/eslint-config-google)|Apache-2.0| +|[eslint-plugin-oro](https://github.com/laboro/eslint-plugin-oro)|MIT| +|[eslint-scope](https://github.com/eslint/eslint-scope)|BSD-2-Clause| +|[eslint-visitor-keys](https://github.com/eslint/eslint-visitor-keys)|Apache-2.0| +|[espree](https://github.com/eslint/espree)|BSD-2-Clause| +|[esprima](https://github.com/jquery/esprima)|BSD-2-Clause| +|[esquery](https://github.com/jrfeenst/esquery)|BSD-3-Clause| +|[esrecurse](https://github.com/estools/esrecurse)|BSD-2-Clause| +|[estraverse](https://github.com/estools/estraverse)|BSD-2-Clause| +|[esutils](https://github.com/estools/esutils)|BSD| +|[eventemitter3](https://github.com/primus/eventemitter3)|MIT| +|[events](https://github.com/Gozala/events)|MIT| +|[evp_bytestokey](https://github.com/crypto-browserify/EVP_BytesToKey)|MIT| +|[execa](https://github.com/sindresorhus/execa)|MIT| +|[expand-braces](https://github.com/jonschlinkert/expand-braces)|MIT| +|[expand-brackets](https://github.com/jonschlinkert/expand-brackets)|MIT| +|[expand-range](https://github.com/jonschlinkert/expand-range)|MIT| +|[expand-tilde](https://github.com/jonschlinkert/expand-tilde)|MIT| +|[extend](https://github.com/justmoon/node-extend)|MIT| +|[extend-shallow](https://github.com/jonschlinkert/extend-shallow)|MIT| +|[external-editor](https://github.com/mrkmg/node-external-editor)|MIT| +|[extglob](https://github.com/micromatch/extglob)|MIT| +|[extract-loader](https://github.com/peerigon/extract-loader)|Unlicense| +|[extsprintf](https://github.com/davepacheco/node-extsprintf)|MIT| +|[fast-deep-equal](https://github.com/epoberezkin/fast-deep-equal)|MIT| +|[fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify)|MIT| +|[fast-levenshtein](https://github.com/hiddentao/fast-levenshtein)|MIT| +|[fastparse](https://github.com/webpack/fastparse)|MIT| +|[figgy-pudding](https://github.com/zkat/figgy-pudding)|ISC| +|[figures](https://github.com/sindresorhus/figures)|MIT| +|[file-entry-cache](https://github.com/royriojas/file-entry-cache)|MIT| +|[file-loader](https://github.com/webpack-contrib/file-loader)|MIT| +|[file-match](https://github.com/douzi8/file-match)|ISC| +|[file-system](https://github.com/douzi8/file-system)|ISC| +|[fill-range](https://github.com/jonschlinkert/fill-range)|MIT| +|[finalhandler](https://github.com/pillarjs/finalhandler)|MIT| +|[find-cache-dir](https://github.com/avajs/find-cache-dir)|MIT| +|[find-up](https://github.com/sindresorhus/find-up)|MIT| +|[findup-sync](https://github.com/js-cli/node-findup-sync)|MIT| +|[flat-cache](https://github.com/royriojas/flat-cache)|MIT| +|[flatted](https://github.com/WebReflection/flatted)|ISC| +|[flatten](https://github.com/jesusabdullah/node-flatten)|MIT| +|[flush-write-stream](https://github.com/mafintosh/flush-write-stream)|MIT| +|[follow-redirects](https://github.com/follow-redirects/follow-redirects)|MIT| +|[font-awesome](https://github.com/FortAwesome/Font-Awesome)|(OFL-1.1 AND MIT)| +|[for-in](https://github.com/jonschlinkert/for-in)|MIT| +|[for-own](https://github.com/jonschlinkert/for-own)|MIT| +|[forever-agent](https://github.com/mikeal/forever-agent)|Apache-2.0| +|[form-data](https://github.com/form-data/form-data)|MIT| +|[fragment-cache](https://github.com/jonschlinkert/fragment-cache)|MIT| +|[friendsofphp/php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer.git)|MIT| +|[from2](https://github.com/hughsk/from2)|MIT| +|[fs-access](https://github.com/sindresorhus/fs-access)|MIT| +|[fs-minipass](https://github.com/npm/fs-minipass)|ISC| +|[fs-write-stream-atomic](https://github.com/npm/fs-write-stream-atomic)|ISC| +|[fs.realpath](https://github.com/isaacs/fs.realpath)|ISC| +|[fsevents](https://github.com/strongloop/fsevents)|MIT| +|[fstream](https://github.com/npm/fstream)|ISC| +|[function-bind](https://github.com/Raynos/function-bind)|MIT| +|[functional-red-black-tree](https://github.com/mikolalysenko/functional-red-black-tree)|MIT| +|[gauge](https://github.com/iarna/gauge)|ISC| +|[gaze](https://github.com/shama/gaze)|MIT| +|[get-caller-file](https://github.com/stefanpenner/get-caller-file)|ISC| +|[get-stdin](https://github.com/sindresorhus/get-stdin)|MIT| +|[get-stream](https://github.com/sindresorhus/get-stream)|MIT| +|[get-value](https://github.com/jonschlinkert/get-value)|MIT| +|[getpass](https://github.com/arekinath/node-getpass)|MIT| +|[glob](https://github.com/isaacs/node-glob)|ISC| +|[glob-parent](https://github.com/es128/glob-parent)|ISC| +|[global-modules](https://github.com/jonschlinkert/global-modules)|MIT| +|[global-prefix](https://github.com/jonschlinkert/global-prefix)|MIT| +|[globals](https://github.com/sindresorhus/globals)|MIT| +|[globule](https://github.com/cowboy/node-globule)|MIT| +|[graceful-fs](https://github.com/isaacs/node-graceful-fs)|ISC| +|[handlebars](https://github.com/wycats/handlebars.js)|MIT| +|[har-schema](https://github.com/ahmadnassri/har-schema)|ISC| +|[har-validator](https://github.com/ahmadnassri/node-har-validator)|MIT| +|[has](https://github.com/tarruda/has)|MIT| +|[has-ansi](https://github.com/sindresorhus/has-ansi)|MIT| +|[has-binary2](https://npmjs.com/package/has-binary2)|MIT| +|[has-cors](https://github.com/component/has-cors)|MIT| +|[has-flag](https://github.com/sindresorhus/has-flag)|MIT| +|[has-unicode](https://github.com/iarna/has-unicode)|ISC| +|[has-value](https://github.com/jonschlinkert/has-value)|MIT| +|[has-values](https://github.com/jonschlinkert/has-values)|MIT| +|[hash-base](https://github.com/crypto-browserify/hash-base)|MIT| +|[hash.js](https://github.com/indutny/hash.js)|MIT| +|[hmac-drbg](https://github.com/indutny/hmac-drbg)|MIT| +|[homedir-polyfill](https://github.com/doowb/homedir-polyfill)|MIT| +|[hosted-git-info](https://github.com/npm/hosted-git-info)|ISC| +|[html-comment-regex](https://github.com/stevemao/html-comment-regex)|MIT| +|[http-errors](https://github.com/jshttp/http-errors)|MIT| +|[http-proxy](https://github.com/nodejitsu/node-http-proxy)|MIT| +|[http-signature](https://github.com/joyent/node-http-signature)|MIT| +|[https-browserify](https://github.com/substack/https-browserify)|MIT| +|[iconv-lite](https://github.com/ashtuchkin/iconv-lite)|MIT| +|[icss-replace-symbols](https://github.com/css-modules/icss-replace-symbols)|ISC| +|[icss-utils](https://github.com/css-modules/icss-utils)|ISC| +|[ieee754](https://github.com/feross/ieee754)|BSD-3-Clause| +|[iferr](https://github.com/shesek/iferr)|MIT| +|[ignore](https://github.com/kaelzhang/node-ignore)|MIT| +|[ignore-walk](https://github.com/isaacs/ignore-walk)|ISC| +|[import-cwd](https://github.com/sindresorhus/import-cwd)|MIT| +|[import-from](https://github.com/sindresorhus/import-from)|MIT| +|[import-local](https://github.com/sindresorhus/import-local)|MIT| +|[imurmurhash](https://github.com/jensyt/imurmurhash-js)|MIT| +|[in-publish](https://github.com/iarna/in-publish)|ISC| +|[indent-string](https://github.com/sindresorhus/indent-string)|MIT| +|[indexes-of](https://github.com/dominictarr/indexes-of)|MIT| +|[indexof](https://npmjs.com/package/indexof)|MIT| +|[inflight](https://github.com/npm/inflight)|ISC| +|[inherits](https://github.com/isaacs/inherits)|ISC| +|[ini](https://github.com/isaacs/ini)|ISC| +|[inquirer](https://github.com/SBoudrias/Inquirer.js)|MIT| +|[interpret](https://github.com/gulpjs/interpret)|MIT| +|[invert-kv](https://github.com/sindresorhus/invert-kv)|MIT| +|[is-absolute-url](https://github.com/sindresorhus/is-absolute-url)|MIT| +|[is-accessor-descriptor](https://github.com/jonschlinkert/is-accessor-descriptor)|MIT| +|[is-arrayish](https://github.com/qix-/node-is-arrayish)|MIT| +|[is-binary-path](https://github.com/sindresorhus/is-binary-path)|MIT| +|[is-buffer](https://github.com/feross/is-buffer)|MIT| +|[is-data-descriptor](https://github.com/jonschlinkert/is-data-descriptor)|MIT| +|[is-descriptor](https://github.com/jonschlinkert/is-descriptor)|MIT| +|[is-directory](https://github.com/jonschlinkert/is-directory)|MIT| +|[is-extendable](https://github.com/jonschlinkert/is-extendable)|MIT| +|[is-extglob](https://github.com/jonschlinkert/is-extglob)|MIT| +|[is-finite](https://github.com/sindresorhus/is-finite)|MIT| +|[is-fullwidth-code-point](https://github.com/sindresorhus/is-fullwidth-code-point)|MIT| +|[is-glob](https://github.com/micromatch/is-glob)|MIT| +|[is-number](https://github.com/jonschlinkert/is-number)|MIT| +|[is-plain-obj](https://github.com/sindresorhus/is-plain-obj)|MIT| +|[is-plain-object](https://github.com/jonschlinkert/is-plain-object)|MIT| +|[is-promise](https://github.com/then/is-promise)|MIT| +|[is-resolvable](https://github.com/shinnn/is-resolvable)|ISC| +|[is-stream](https://github.com/sindresorhus/is-stream)|MIT| +|[is-svg](https://github.com/sindresorhus/is-svg)|MIT| +|[is-typedarray](https://github.com/hughsk/is-typedarray)|MIT| +|[is-utf8](https://github.com/wayfind/is-utf8)|MIT| +|[is-windows](https://github.com/jonschlinkert/is-windows)|MIT| +|[isarray](https://github.com/juliangruber/isarray)|MIT| +|[isbinaryfile](https://github.com/gjtorikian/isBinaryFile)|MIT| +|[isexe](https://github.com/isaacs/isexe)|ISC| +|[isobject](https://github.com/jonschlinkert/isobject)|MIT| +|[isstream](https://github.com/rvagg/isstream)|MIT| +|[istanbul](https://github.com/gotwarlost/istanbul)|BSD-3-Clause| +|[jasmine-core](https://github.com/jasmine/jasmine)|MIT| +|[johnkary/phpunit-speedtrap](https://github.com/johnkary/phpunit-speedtrap.git)|MIT| +|[js-base64](https://github.com/dankogai/js-base64)|BSD-3-Clause| +|[js-tokens](https://github.com/lydell/js-tokens)|MIT| +|[js-yaml](https://github.com/nodeca/js-yaml)|MIT| +|[jsbn](https://github.com/andyperlitch/jsbn)|MIT| +|[jsesc](https://github.com/mathiasbynens/jsesc)|MIT| +|[json-parse-better-errors](https://github.com/zkat/json-parse-better-errors)|MIT| +|[json-schema](https://github.com/kriszyp/json-schema)|AFLv2.1, BSD| +|[json-schema-traverse](https://github.com/epoberezkin/json-schema-traverse)|MIT| +|[json-stable-stringify-without-jsonify](https://github.com/samn/json-stable-stringify)|MIT| +|[json-stringify-safe](https://github.com/isaacs/json-stringify-safe)|ISC| +|[json5](https://github.com/json5/json5)|MIT| +|[jsprim](https://github.com/joyent/node-jsprim)|MIT| +|[karma](https://github.com/karma-runner/karma)|MIT| +|[karma-chrome-launcher](https://github.com/karma-runner/karma-chrome-launcher)|MIT| +|[karma-coverage](https://github.com/karma-runner/karma-coverage)|MIT| +|[karma-firefox-launcher](https://github.com/karma-runner/karma-firefox-launcher)|MIT| +|[karma-jasmine](https://github.com/karma-runner/karma-jasmine)|MIT| +|[karma-junit-reporter](https://github.com/karma-runner/karma-junit-reporter)|MIT| +|[karma-requirejs](https://github.com/karma-runner/karma-requirejs)|MIT| +|[karma-requirejs-exposure](https://github.com/laboro/karma-exposure-preprocessor)|MIT| +|[kind-of](https://github.com/jonschlinkert/kind-of)|MIT| +|[last-call-webpack-plugin](https://github.com/NMFR/last-call-webpack-plugin)|MIT| +|[lcid](https://github.com/sindresorhus/lcid)|MIT| +|[levn](https://github.com/gkz/levn)|MIT| +|[load-json-file](https://github.com/sindresorhus/load-json-file)|MIT| +|[loader-runner](https://github.com/webpack/loader-runner)|MIT| +|[loader-utils](https://github.com/webpack/loader-utils)|MIT| +|[locate-path](https://github.com/sindresorhus/locate-path)|MIT| +|[lodash](https://github.com/lodash/lodash)|MIT| +|[lodash._baseassign](https://github.com/lodash/lodash)|MIT| +|[lodash._basecopy](https://github.com/lodash/lodash)|MIT| +|[lodash._bindcallback](https://github.com/lodash/lodash)|MIT| +|[lodash._createassigner](https://github.com/lodash/lodash)|MIT| +|[lodash._getnative](https://github.com/lodash/lodash)|MIT| +|[lodash._isiterateecall](https://github.com/lodash/lodash)|MIT| +|[lodash.assign](https://github.com/lodash/lodash)|MIT| +|[lodash.defaults](https://github.com/lodash/lodash)|MIT| +|[lodash.isarguments](https://github.com/lodash/lodash)|MIT| +|[lodash.isarray](https://github.com/lodash/lodash)|MIT| +|[lodash.keys](https://github.com/lodash/lodash)|MIT| +|[lodash.memoize](https://github.com/lodash/lodash)|MIT| +|[lodash.restparam](https://github.com/lodash/lodash)|MIT| +|[lodash.tail](https://github.com/lodash/lodash)|MIT| +|[lodash.uniq](https://github.com/lodash/lodash)|MIT| +|[log4js](https://github.com/log4js-node/log4js-node)|Apache-2.0| +|[loud-rejection](https://github.com/sindresorhus/loud-rejection)|MIT| +|[lru-cache](https://github.com/isaacs/node-lru-cache)|ISC| +|[make-dir](https://github.com/sindresorhus/make-dir)|MIT| +|[mamacro](https://npmjs.com/package/mamacro)|MIT| +|[map-age-cleaner](https://github.com/SamVerschueren/map-age-cleaner)|MIT| +|[map-cache](https://github.com/jonschlinkert/map-cache)|MIT| +|[map-obj](https://github.com/sindresorhus/map-obj)|MIT| +|[map-visit](https://github.com/jonschlinkert/map-visit)|MIT| +|[math-expression-evaluator](https://github.com/redhivesoftware/math-expression-evaluator.git#readme)|MIT| +|[md5.js](https://github.com/crypto-browserify/md5.js)|MIT| +|[media-typer](https://github.com/jshttp/media-typer)|MIT| +|[mem](https://github.com/sindresorhus/mem)|MIT| +|[memory-fs](https://github.com/webpack/memory-fs)|MIT| +|[meow](https://github.com/sindresorhus/meow)|MIT| +|[micromatch](https://github.com/micromatch/micromatch)|MIT| +|[miller-rabin](https://github.com/indutny/miller-rabin)|MIT| +|[mime](https://github.com/broofa/node-mime)|MIT| +|[mime-db](https://github.com/jshttp/mime-db)|MIT| +|[mime-types](https://github.com/jshttp/mime-types)|MIT| +|[mimic-fn](https://github.com/sindresorhus/mimic-fn)|MIT| +|[mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin)|MIT| +|[minimalistic-assert](https://github.com/calvinmetcalf/minimalistic-assert)|ISC| +|[minimalistic-crypto-utils](https://github.com/indutny/minimalistic-crypto-utils)|MIT| +|[minimatch](https://github.com/isaacs/minimatch)|ISC| +|[minimist](https://github.com/substack/minimist)|MIT| +|[minipass](https://github.com/isaacs/minipass)|ISC| +|[minizlib](https://github.com/isaacs/minizlib)|MIT| +|[mississippi](https://github.com/maxogden/mississippi)|BSD-2-Clause| +|[mixin-deep](https://github.com/jonschlinkert/mixin-deep)|MIT| +|[mixin-object](https://github.com/jonschlinkert/mixin-object)|MIT| +|[mkdirp](https://github.com/substack/node-mkdirp)|MIT| +|[move-concurrently](https://github.com/npm/move-concurrently)|ISC| +|[ms](https://github.com/zeit/ms)|MIT| +|[mute-stream](https://github.com/isaacs/mute-stream)|ISC| +|[mybuilder/phpunit-accelerator](https://github.com/mybuilder/phpunit-accelerator.git)|MIT| +|[nan](https://github.com/nodejs/nan)|MIT| +|[nanomatch](https://github.com/micromatch/nanomatch)|MIT| +|[natural-compare](https://github.com/litejs/natural-compare-lite)|MIT| +|[needle](https://github.com/tomas/needle)|MIT| +|[negotiator](https://github.com/jshttp/negotiator)|MIT| +|[nelmio/alice](https://github.com/nelmio/alice.git)|MIT| +|[neo-async](https://github.com/suguru03/neo-async)|MIT| +|[nice-try](https://github.com/electerious/nice-try)|MIT| +|[node-gyp](https://github.com/nodejs/node-gyp)|MIT| +|[node-libs-browser](https://github.com/webpack/node-libs-browser)|MIT| +|[node-pre-gyp](https://github.com/mapbox/node-pre-gyp)|BSD-3-Clause| +|[node-releases](https://github.com/chicoxyzzy/node-releases)|MIT| +|[node-sass](https://github.com/sass/node-sass)|MIT| +|[nopt](https://github.com/npm/nopt)|ISC| +|[normalize-package-data](https://github.com/npm/normalize-package-data)|BSD-2-Clause| +|[normalize-path](https://github.com/jonschlinkert/normalize-path)|MIT| +|[normalize-range](https://github.com/jamestalmage/normalize-range)|MIT| +|[normalize-url](https://github.com/sindresorhus/normalize-url)|MIT| +|[npm-bundled](https://github.com/npm/npm-bundled)|ISC| +|[npm-packlist](https://github.com/npm/npm-packlist)|ISC| +|[npm-run-path](https://github.com/sindresorhus/npm-run-path)|MIT| +|[npmlog](https://github.com/npm/npmlog)|ISC| +|[null-check](https://github.com/sindresorhus/null-check)|MIT| +|[num2fraction](https://github.com/yisibl/num2fraction)|MIT| +|[number-is-nan](https://github.com/sindresorhus/number-is-nan)|MIT| +|[oauth-sign](https://github.com/mikeal/oauth-sign)|Apache-2.0| +|[object-assign](https://github.com/sindresorhus/object-assign)|MIT| +|[object-component](https://npmjs.com/package/object-component)|MIT| +|[object-copy](https://github.com/jonschlinkert/object-copy)|MIT| +|[object-path](https://github.com/mariocasciaro/object-path)|MIT| +|[object-visit](https://github.com/jonschlinkert/object-visit)|MIT| +|[object.pick](https://github.com/jonschlinkert/object.pick)|MIT| +|[on-finished](https://github.com/jshttp/on-finished)|MIT| +|[once](https://github.com/isaacs/once)|ISC| +|[onetime](https://github.com/sindresorhus/onetime)|MIT| +|[optimist](https://github.com/substack/node-optimist)|MIT| +|[optimize-css-assets-webpack-plugin](https://github.com/NMFR/optimize-css-assets-webpack-plugin)|MIT| +|[optionator](https://github.com/gkz/optionator)|MIT| +|[os-browserify](https://github.com/CoderPuppy/os-browserify)|MIT| +|[os-homedir](https://github.com/sindresorhus/os-homedir)|MIT| +|[os-locale](https://github.com/sindresorhus/os-locale)|MIT| +|[os-tmpdir](https://github.com/sindresorhus/os-tmpdir)|MIT| +|[osenv](https://github.com/npm/osenv)|ISC| +|[p-defer](https://github.com/sindresorhus/p-defer)|MIT| +|[p-finally](https://github.com/sindresorhus/p-finally)|MIT| +|[p-is-promise](https://github.com/sindresorhus/p-is-promise)|MIT| +|[p-limit](https://github.com/sindresorhus/p-limit)|MIT| +|[p-locate](https://github.com/sindresorhus/p-locate)|MIT| +|[p-try](https://github.com/sindresorhus/p-try)|MIT| +|[pako](https://github.com/nodeca/pako)|(MIT AND Zlib)| +|[parallel-transform](https://github.com/mafintosh/parallel-transform)|MIT| +|[parse-asn1](https://github.com/crypto-browserify/parse-asn1)|ISC| +|[parse-json](https://github.com/sindresorhus/parse-json)|MIT| +|[parse-passwd](https://github.com/doowb/parse-passwd)|MIT| +|[parseqs](https://github.com/get/querystring)|MIT| +|[parseuri](https://github.com/get/parseuri)|MIT| +|[parseurl](https://github.com/pillarjs/parseurl)|MIT| +|[pascalcase](https://github.com/jonschlinkert/pascalcase)|MIT| +|[path](https://github.com/jinder/path)|MIT| +|[path-browserify](https://github.com/substack/path-browserify)|MIT| +|[path-dirname](https://github.com/es128/path-dirname)|MIT| +|[path-exists](https://github.com/sindresorhus/path-exists)|MIT| +|[path-is-absolute](https://github.com/sindresorhus/path-is-absolute)|MIT| +|[path-is-inside](https://github.com/domenic/path-is-inside)|(WTFPL OR MIT)| +|[path-key](https://github.com/sindresorhus/path-key)|MIT| +|[path-parse](https://github.com/jbgutierrez/path-parse)|MIT| +|[path-type](https://github.com/sindresorhus/path-type)|MIT| +|[pbkdf2](https://github.com/crypto-browserify/pbkdf2)|MIT| +|[performance-now](https://github.com/braveg1rl/performance-now)|MIT| +|[phpmd/phpmd](https://github.com/phpmd/phpmd.git)|BSD-3-Clause| +|[phpspec/prophecy](https://github.com/phpspec/prophecy.git)|MIT| +|[phpunit/phpcov](https://github.com/sebastianbergmann/phpcov.git)|BSD-3-Clause| +|[phpunit/phpunit](https://github.com/sebastianbergmann/phpunit.git)|BSD-3-Clause| +|[phpunit/phpunit-mock-objects](https://github.com/sebastianbergmann/phpunit-mock-objects.git)|BSD-3-Clause| +|[pify](https://github.com/sindresorhus/pify)|MIT| +|[pinkie](https://github.com/floatdrop/pinkie)|MIT| +|[pinkie-promise](https://github.com/floatdrop/pinkie-promise)|MIT| +|[pkg-dir](https://github.com/sindresorhus/pkg-dir)|MIT| +|[pluralize](https://github.com/blakeembrey/pluralize)|MIT| +|[posix-character-classes](https://github.com/jonschlinkert/posix-character-classes)|MIT| +|[postcss](https://github.com/postcss/postcss)|MIT| +|[postcss-calc](https://github.com/postcss/postcss-calc)|MIT| +|[postcss-colormin](https://github.com/ben-eb/postcss-colormin)|MIT| +|[postcss-convert-values](https://github.com/ben-eb/postcss-convert-values)|MIT| +|[postcss-discard-comments](https://github.com/ben-eb/postcss-discard-comments)|MIT| +|[postcss-discard-duplicates](https://github.com/ben-eb/postcss-discard-duplicates)|MIT| +|[postcss-discard-empty](https://github.com/ben-eb/postcss-discard-empty)|MIT| +|[postcss-discard-overridden](https://github.com/Justineo/postcss-discard-overridden)|MIT| +|[postcss-discard-unused](https://github.com/ben-eb/postcss-discard-unused)|MIT| +|[postcss-filter-plugins](https://github.com/postcss/postcss-filter-plugins)|MIT| +|[postcss-load-config](https://github.com/michael-ciniawsky/postcss-load-config)|MIT| +|[postcss-loader](https://github.com/postcss/postcss-loader)|MIT| +|[postcss-merge-idents](https://github.com/ben-eb/postcss-merge-idents)|MIT| +|[postcss-merge-longhand](https://github.com/ben-eb/postcss-merge-longhand)|MIT| +|[postcss-merge-rules](https://github.com/ben-eb/postcss-merge-rules)|MIT| +|[postcss-message-helpers](https://github.com/MoOx/postcss-message-helpers)|MIT| +|[postcss-minify-font-values](https://github.com/TrySound/postcss-minify-font-values)|MIT| +|[postcss-minify-gradients](https://github.com/ben-eb/postcss-minify-gradients)|MIT| +|[postcss-minify-params](https://github.com/ben-eb/postcss-minify-params)|MIT| +|[postcss-minify-selectors](https://github.com/ben-eb/postcss-minify-selectors)|MIT| +|[postcss-modules-extract-imports](https://github.com/css-modules/postcss-modules-extract-imports)|ISC| +|[postcss-modules-local-by-default](https://github.com/css-modules/postcss-modules-local-by-default)|MIT| +|[postcss-modules-scope](https://github.com/css-modules/postcss-modules-scope)|ISC| +|[postcss-modules-values](https://github.com/css-modules/postcss-modules-values)|ISC| +|[postcss-normalize-charset](https://github.com/ben-eb/postcss-charset)|MIT| +|[postcss-normalize-url](https://github.com/ben-eb/postcss-normalize-url)|MIT| +|[postcss-ordered-values](https://github.com/ben-eb/postcss-ordered-values)|MIT| +|[postcss-reduce-idents](https://github.com/ben-eb/postcss-reduce-idents)|MIT| +|[postcss-reduce-initial](https://github.com/ben-eb/postcss-reduce-initial)|MIT| +|[postcss-reduce-transforms](https://github.com/ben-eb/postcss-reduce-transforms)|MIT| +|[postcss-selector-parser](https://github.com/postcss/postcss-selector-parser)|MIT| +|[postcss-svgo](https://github.com/ben-eb/postcss-svgo)|MIT| +|[postcss-unique-selectors](https://github.com/ben-eb/postcss-unique-selectors)|MIT| +|[postcss-value-parser](https://github.com/TrySound/postcss-value-parser)|MIT| +|[postcss-zindex](https://github.com/ben-eb/postcss-zindex)|MIT| +|[prelude-ls](https://github.com/gkz/prelude-ls)|MIT| +|[prepend-http](https://github.com/sindresorhus/prepend-http)|MIT| +|[process](https://github.com/shtylman/node-process)|MIT| +|[process-nextick-args](https://github.com/calvinmetcalf/process-nextick-args)|MIT| +|[progress](https://github.com/visionmedia/node-progress)|MIT| +|[promise-inflight](https://github.com/iarna/promise-inflight)|ISC| +|[prr](https://github.com/rvagg/prr)|MIT| +|[pseudomap](https://github.com/isaacs/pseudomap)|ISC| +|[psl](https://github.com/wrangr/psl)|MIT| +|[public-encrypt](https://github.com/crypto-browserify/publicEncrypt)|MIT| +|[pump](https://github.com/mafintosh/pump)|MIT| +|[pumpify](https://github.com/mafintosh/pumpify)|MIT| +|[punycode](https://github.com/bestiejs/punycode.js)|MIT| +|[q](https://github.com/kriskowal/q)|MIT| +|[qjobs](https://github.com/franck34/qjobs)|MIT| +|[qs](https://github.com/ljharb/qs)|BSD-3-Clause| +|[query-string](https://github.com/sindresorhus/query-string)|MIT| +|[querystring](https://github.com/Gozala/querystring)|MIT| +|[querystring-es3](https://github.com/mike-spainhower/querystring)|MIT| +|[randombytes](https://github.com/crypto-browserify/randombytes)|MIT| +|[randomfill](https://github.com/crypto-browserify/randomfill)|MIT| +|[range-parser](https://github.com/jshttp/range-parser)|MIT| +|[raw-body](https://github.com/stream-utils/raw-body)|MIT| +|[rc](https://github.com/dominictarr/rc)|(BSD-2-Clause OR MIT OR Apache-2.0)| +|[read-pkg](https://github.com/sindresorhus/read-pkg)|MIT| +|[read-pkg-up](https://github.com/sindresorhus/read-pkg-up)|MIT| +|[readable-stream](https://github.com/nodejs/readable-stream)|MIT| +|[readdirp](https://github.com/paulmillr/readdirp)|MIT| +|[redent](https://github.com/sindresorhus/redent)|MIT| +|[reduce-css-calc](https://github.com/MoOx/reduce-css-calc)|MIT| +|[reduce-function-call](https://github.com/MoOx/reduce-function-call)|MIT| +|[regenerate](https://github.com/mathiasbynens/regenerate)|MIT| +|[regenerator-runtime](https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime)|MIT| +|[regex-not](https://github.com/jonschlinkert/regex-not)|MIT| +|[regex-parser](https://github.com/IonicaBizau/regex-parser.js)|MIT| +|[regexpp](https://github.com/mysticatea/regexpp)|MIT| +|[regexpu-core](https://github.com/mathiasbynens/regexpu-core)|MIT| +|[regjsgen](https://github.com/d10/regjsgen)|MIT| +|[regjsparser](https://github.com/jviereck/regjsparser)|BSD| +|[remove-trailing-separator](https://github.com/darsain/remove-trailing-separator)|ISC| +|[repeat-element](https://github.com/jonschlinkert/repeat-element)|MIT| +|[repeat-string](https://github.com/jonschlinkert/repeat-string)|MIT| +|[repeating](https://github.com/sindresorhus/repeating)|MIT| +|[request](https://github.com/request/request)|Apache-2.0| +|[require-directory](https://github.com/troygoode/node-require-directory)|MIT| +|[require-from-string](https://github.com/floatdrop/require-from-string)|MIT| +|[require-main-filename](https://github.com/yargs/require-main-filename)|ISC| +|[require-uncached](https://github.com/sindresorhus/require-uncached)|MIT| +|[requirejs](https://github.com/jrburke/r.js)|MIT| +|[requires-port](https://github.com/unshiftio/requires-port)|MIT| +|[resolve](https://github.com/browserify/resolve)|MIT| +|[resolve-cwd](https://github.com/sindresorhus/resolve-cwd)|MIT| +|[resolve-dir](https://github.com/jonschlinkert/resolve-dir)|MIT| +|[resolve-from](https://github.com/sindresorhus/resolve-from)|MIT| +|[resolve-url](https://github.com/lydell/resolve-url)|MIT| +|[resolve-url-loader](https://github.com/bholloway/resolve-url-loader)|MIT| +|[restore-cursor](https://github.com/sindresorhus/restore-cursor)|MIT| +|[ret](https://github.com/fent/ret.js)|MIT| +|[rework](https://github.com/reworkcss/rework)|MIT| +|[rework-visit](https://npmjs.com/package/rework-visit)|MIT| +|[rfdc](https://github.com/davidmarkclements/rfdc)|MIT| +|[rimraf](https://github.com/isaacs/rimraf)|ISC| +|[ripemd160](https://github.com/crypto-browserify/ripemd160)|MIT| +|[run-async](https://github.com/SBoudrias/run-async)|MIT| +|[run-queue](https://github.com/iarna/run-queue)|ISC| +|[rx-lite](https://github.com/Reactive-Extensions/RxJS)|Apache License, Version 2.0| +|[rx-lite-aggregates](https://github.com/Reactive-Extensions/RxJS)|Apache License, Version 2.0| +|[safe-buffer](https://github.com/feross/safe-buffer)|MIT| +|[safe-regex](https://github.com/substack/safe-regex)|MIT| +|[safer-buffer](https://github.com/ChALkeR/safer-buffer)|MIT| +|[sass-graph](https://github.com/xzyfer/sass-graph)|MIT| +|[sass-loader](https://github.com/webpack-contrib/sass-loader)|MIT| +|[sax](https://github.com/isaacs/sax-js)|ISC| +|[schema-utils](https://github.com/webpack-contrib/schema-utils)|MIT| +|[scss-tokenizer](https://github.com/sasstools/scss-tokenizer)|MIT| +|[sebastian/phpcpd](https://github.com/sebastianbergmann/phpcpd.git)|BSD-3-Clause| +|[semver](https://github.com/npm/node-semver)|ISC| +|[sensio/generator-bundle](https://github.com/sensiolabs/SensioGeneratorBundle.git)|MIT| +|[serialize-javascript](https://github.com/yahoo/serialize-javascript)|BSD-3-Clause| +|[set-blocking](https://github.com/yargs/set-blocking)|ISC| +|[set-value](https://github.com/jonschlinkert/set-value)|MIT| +|[setimmediate](https://github.com/YuzuJS/setImmediate)|MIT| +|[setprototypeof](https://github.com/wesleytodd/setprototypeof)|ISC| +|[sha.js](https://github.com/crypto-browserify/sha.js)|(MIT AND BSD-3-Clause)| +|[shallow-clone](https://github.com/jonschlinkert/shallow-clone)|MIT| +|[shebang-command](https://github.com/kevva/shebang-command)|MIT| +|[shebang-regex](https://github.com/sindresorhus/shebang-regex)|MIT| +|[signal-exit](https://github.com/tapjs/signal-exit)|ISC| +|[slice-ansi](https://github.com/chalk/slice-ansi)|MIT| +|[snapdragon](https://github.com/jonschlinkert/snapdragon)|MIT| +|[snapdragon-node](https://github.com/jonschlinkert/snapdragon-node)|MIT| +|[snapdragon-util](https://github.com/jonschlinkert/snapdragon-util)|MIT| +|[socket.io](https://github.com/socketio/socket.io)|MIT| +|[socket.io-adapter](https://github.com/socketio/socket.io-adapter)|MIT| +|[socket.io-client](https://github.com/Automattic/socket.io-client)|MIT| +|[socket.io-parser](https://github.com/Automattic/socket.io-parser)|MIT| +|[sort-keys](https://github.com/sindresorhus/sort-keys)|MIT| +|[source-list-map](https://github.com/webpack/source-list-map)|MIT| +|[source-map](https://github.com/mozilla/source-map)|BSD-3-Clause| +|[source-map-resolve](https://github.com/lydell/source-map-resolve)|MIT| +|[source-map-support](https://github.com/evanw/node-source-map-support)|MIT| +|[source-map-url](https://github.com/lydell/source-map-url)|MIT| +|[spdx-correct](https://github.com/jslicense/spdx-correct.js)|Apache-2.0| +|[spdx-exceptions](https://github.com/kemitchell/spdx-exceptions.json)|CC-BY-3.0| +|[spdx-expression-parse](https://github.com/jslicense/spdx-expression-parse.js)|MIT| +|[spdx-license-ids](https://github.com/shinnn/spdx-license-ids)|CC0-1.0| +|[split-string](https://github.com/jonschlinkert/split-string)|MIT| +|[sprintf-js](https://github.com/alexei/sprintf.js)|BSD-3-Clause| +|[squizlabs/php_codesniffer](https://github.com/squizlabs/PHP_CodeSniffer.git)|BSD-3-Clause| +|[sshpk](https://github.com/joyent/node-sshpk)|MIT| +|[ssri](https://github.com/zkat/ssri)|ISC| +|[static-extend](https://github.com/jonschlinkert/static-extend)|MIT| +|[statuses](https://github.com/jshttp/statuses)|MIT| +|[stdout-stream](https://github.com/mafintosh/stdout-stream)|MIT| +|[stream-browserify](https://github.com/browserify/stream-browserify)|MIT| +|[stream-each](https://github.com/mafintosh/stream-each)|MIT| +|[stream-http](https://github.com/jhiesey/stream-http)|MIT| +|[stream-shift](https://github.com/mafintosh/stream-shift)|MIT| +|[streamroller](https://github.com/nomiddlename/streamroller)|MIT| +|[strict-uri-encode](https://github.com/kevva/strict-uri-encode)|MIT| +|[string-width](https://github.com/sindresorhus/string-width)|MIT| +|[string_decoder](https://github.com/nodejs/string_decoder)|MIT| +|[strip-ansi](https://github.com/chalk/strip-ansi)|MIT| +|[strip-bom](https://github.com/sindresorhus/strip-bom)|MIT| +|[strip-eof](https://github.com/sindresorhus/strip-eof)|MIT| +|[strip-indent](https://github.com/sindresorhus/strip-indent)|MIT| +|[strip-json-comments](https://github.com/sindresorhus/strip-json-comments)|MIT| +|[style-loader](https://github.com/webpack-contrib/style-loader)|MIT| +|[supports-color](https://github.com/chalk/supports-color)|MIT| +|[svgo](https://github.com/svg/svgo)|MIT| +|[symfony/phpunit-bridge](https://github.com/symfony/phpunit-bridge.git)|MIT| +|[table](https://github.com/gajus/table)|BSD-3-Clause| +|[tapable](https://github.com/webpack/tapable)|MIT| +|[tar](https://github.com/npm/node-tar)|ISC| +|[terser](https://github.com/fabiosantoscode/terser)|BSD-2-Clause| +|[terser-webpack-plugin](https://github.com/webpack-contrib/terser-webpack-plugin)|MIT| +|[text-loader](https://github.com/dfenstermaker/text-loader)|ISC| +|[text-table](https://github.com/substack/text-table)|MIT| +|[through](https://github.com/dominictarr/through)|MIT| +|[through2](https://github.com/rvagg/through2)|MIT| +|[timers-browserify](https://github.com/jryans/timers-browserify)|MIT| +|[tmp](https://github.com/raszi/node-tmp)|MIT| +|[to-array](https://github.com/Raynos/to-array)|MIT| +|[to-arraybuffer](https://github.com/jhiesey/to-arraybuffer)|MIT| +|[to-object-path](https://github.com/jonschlinkert/to-object-path)|MIT| +|[to-regex](https://github.com/jonschlinkert/to-regex)|MIT| +|[to-regex-range](https://github.com/micromatch/to-regex-range)|MIT| +|[toidentifier](https://github.com/component/toidentifier)|MIT| +|[tough-cookie](https://github.com/salesforce/tough-cookie)|BSD-3-Clause| +|[trim-newlines](https://github.com/sindresorhus/trim-newlines)|MIT| +|[true-case-path](https://github.com/barsh/true-case-path)|Apache-2.0| +|[tslib](https://github.com/Microsoft/tslib)|Apache-2.0| +|[tty-browserify](https://github.com/substack/tty-browserify)|MIT| +|[tunnel-agent](https://github.com/mikeal/tunnel-agent)|Apache-2.0| +|[tweetnacl](https://github.com/dchest/tweetnacl-js)|Unlicense| +|[type-check](https://github.com/gkz/type-check)|MIT| +|[type-is](https://github.com/jshttp/type-is)|MIT| +|[typedarray](https://github.com/substack/typedarray)|MIT| +|[uglify-js](https://github.com/mishoo/UglifyJS2)|BSD-2-Clause| +|[ultron](https://github.com/unshiftio/ultron)|MIT| +|[union-value](https://github.com/jonschlinkert/union-value)|MIT| +|[uniq](https://github.com/mikolalysenko/uniq)|MIT| +|[uniqs](https://github.com/fgnass/uniqs)|MIT| +|[unique-filename](https://github.com/iarna/unique-filename)|ISC| +|[unique-slug](https://github.com/iarna/unique-slug)|ISC| +|[unpipe](https://github.com/stream-utils/unpipe)|MIT| +|[unset-value](https://github.com/jonschlinkert/unset-value)|MIT| +|[upath](https://github.com/anodynos/upath)|MIT| +|[uri-js](https://github.com/garycourt/uri-js)|BSD-2-Clause| +|[urix](https://github.com/lydell/urix)|MIT| +|[url](https://github.com/defunctzombie/node-url)|MIT| +|[url-loader](https://github.com/webpack-contrib/url-loader)|MIT| +|[use](https://github.com/jonschlinkert/use)|MIT| +|[useragent](https://github.com/3rd-Eden/useragent)|MIT| +|[util](https://github.com/defunctzombie/node-util)|MIT| +|[util-deprecate](https://github.com/TooTallNate/util-deprecate)|MIT| +|[utils-extend](https://github.com/douzi8/utils-extend)|ISC| +|[utils-merge](https://github.com/jaredhanson/utils-merge)|MIT| +|[uuid](https://github.com/kelektiv/node-uuid)|MIT| +|[v8-compile-cache](https://npmjs.com/package/v8-compile-cache)|MIT| +|[validate-npm-package-license](https://github.com/kemitchell/validate-npm-package-license.js)|Apache-2.0| +|[vendors](https://github.com/wooorm/vendors)|MIT| +|[verror](https://github.com/davepacheco/node-verror)|MIT| +|[vm-browserify](https://github.com/substack/vm-browserify)|MIT| +|[void-elements](https://github.com/hemanth/void-elements)|MIT| +|[watchpack](https://github.com/webpack/watchpack)|MIT| +|[webpack](https://github.com/webpack/webpack)|MIT| +|[webpack-cli](https://github.com/webpack/webpack-cli)|MIT| +|[webpack-merge](https://github.com/survivejs/webpack-merge)|MIT| +|[webpack-sources](https://github.com/webpack/webpack-sources)|MIT| +|[whet.extend](https://github.com/Meettya/whet.extend)|MIT| +|[which](https://github.com/isaacs/node-which)|ISC| +|[which-module](https://github.com/nexdrew/which-module)|ISC| +|[wide-align](https://github.com/iarna/wide-align)|ISC| +|[wordwrap](https://github.com/substack/node-wordwrap)|MIT| +|[worker-farm](https://github.com/rvagg/node-worker-farm)|MIT| +|[wrap-ansi](https://github.com/chalk/wrap-ansi)|MIT| +|[wrappy](https://github.com/npm/wrappy)|ISC| +|[write](https://github.com/jonschlinkert/write)|MIT| +|[ws](https://github.com/websockets/ws)|MIT| +|[xmlbuilder](https://github.com/oozcitak/xmlbuilder-js)|MIT| +|[xmlhttprequest-ssl](https://github.com/mjwwit/node-XMLHttpRequest)|MIT| +|[xtend](https://github.com/Raynos/xtend)|MIT| +|[y18n](https://github.com/yargs/y18n)|ISC| +|[yallist](https://github.com/isaacs/yallist)|ISC| +|[yargs](https://github.com/yargs/yargs)|MIT| +|[yargs-parser](https://github.com/yargs/yargs-parser)|ISC| +|[yeast](https://github.com/unshiftio/yeast)|MIT| + diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 000000000..1ff5009cb --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,326 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# Use this Vagrant configuration file for local installation of the Oro application. +# Please, refer to the Oro Applications installation guides for the detailed instructions: +# https://oroinc.com/orocrm/doc/current/install-upgrade/one-step-automated-installation/vagrant + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure("2") do |config| + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + # Every Vagrant development environment requires a box. You can search for + # boxes at https://vagrantcloud.com/search. + config.vm.box = "centos/7" + + # Disable automatic box update checking. If you disable this, then + # boxes will only be checked for updates when the user runs + # `vagrant box outdated`. This is not recommended. + # config.vm.box_check_update = false + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine. In the example below, + # accessing "localhost:8080" will access port 80 on the guest machine. + # NOTE: This will enable public access to the opened port + config.vm.network "forwarded_port", guest: 80, host: 8000 + + # Create a forwarded port mapping which allows access to a specific port + # within the machine from a port on the host machine and only allow access + # via 127.0.0.1 to disable public access + # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" + + # Create a private network, which allows host-only access to the machine + # using a specific IP. + config.vm.network "private_network", ip: "192.168.33.10" + + # Create a public network, which generally matched to bridged network. + # Bridged networks make the machine appear as another physical device on + # your network. + # config.vm.network "public_network" + + # Share an additional folder to the guest VM. The first argument is + # the path on the host to the actual folder. The second argument is + # the path on the guest to mount the folder. And the optional third + # argument is a set of non-required options. + # config.vm.synced_folder "../data", "/vagrant_data" + + # Provider-specific configuration so you can fine-tune various + # backing providers for Vagrant. These expose provider-specific options. + # + config.vm.provider "virtualbox" do |vb| + # Display the VirtualBox GUI when booting the machine + # vb.gui = true + + # Customize the amount of memory on the VM: + vb.memory = 2048 + vb.cpus = 2 + end + # + # View the documentation for the provider you are using for more + # information on available options. + + # Enable provisioning with a shell script. Additional provisioners such as + # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the + # documentation for more information about their specific syntax and use. + config.vm.provision "shell", inline: <<-SHELL + + echo "\n*****************************************************" + echo "************* Provision process started *************" + echo "*****************************************************\n" + + # --------------------- Provision configuration --------------------- + + # --- VM settings --- + + FORWARDED_PORT=8000 + + # --- Database settings --- + + DB_USER="dbuser" + DB_PASSWORD="DBP@ssword123" + DB_NAME="oro" + + # --- Oro application settings --- + + APP_HOST="localhost" + APP_USER="admin" + APP_PASSWORD="adminpass" + APP_LOAD_DEMO_DATA="y" # y | n + + echo "\n*******************************************************" + echo "************** Step 1: Environment Setup **************" + echo "*******************************************************\n" + + echo "\n~~~~~~~~~~~~~~ Enable Required Package Repositories ~~~~~~~~~~~~~~\n" + + yum install -y epel-release + yum update -y + + echo "\n~~~~~~~~~~~~~~ Install Nginx, NodeJS, Git, Supervisor, and Wget ~~~~~~~~~~~~~~\n" + + yum install -y nginx wget git nodejs supervisor yum-utils + + echo "\n~~~~~~~~~~~~~~ Install MySQL ~~~~~~~~~~~~~~\n" + + wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm && rpm -ivh mysql80-community-release-el7-1.noarch.rpm + yum-config-manager --disable mysql80-community + yum-config-manager --enable mysql57-community + + yum install -y mysql-community-server + + echo "\n~~~~~~~~~~~~~~ Install PHP ~~~~~~~~~~~~~~\n" + + wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm && rpm -Uvh remi-release-7.rpm + yum-config-manager --enable remi-php71 + yum update -y + + yum install -y php-fpm php-cli php-pdo php-mysqlnd php-xml php-soap php-gd php-mbstring php-zip php-intl php-mcrypt php-opcache + + echo "\n~~~~~~~~~~~~~~ Install Composer ~~~~~~~~~~~~~~\n" + + php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php + php -r "unlink('composer-setup.php');" + mv composer.phar /usr/bin/composer + + echo "\n~~~~~~~~~~~~~~ Enable Installed Services ~~~~~~~~~~~~~~\n" + + systemctl start mysqld php-fpm nginx supervisord + systemctl enable mysqld php-fpm nginx supervisord + + echo "********************************************************************************" + echo "************** Step 2: Pre-installation Environment Configuration **************" + echo "********************************************************************************" + + echo "\n~~~~~~~~~~~~~~ Perform Security Configuration ~~~~~~~~~~~~~~\n" + + sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config + setenforce permissive + + echo "\n~~~~~~~~~~~~~~ Prepare MySQL Database ~~~~~~~~~~~~~~\n" + + # --- Change the MySQL Server Configuration --- + + echo "[client]" >> /etc/my.cnf + echo "default-character-set = utf8mb4" >> /etc/my.cnf + echo "" >> /etc/my.cnf + echo "[mysql]" >> /etc/my.cnf + echo "default-character-set = utf8mb4" >> /etc/my.cnf + echo "" >> /etc/my.cnf + echo "[mysqld]" >> /etc/my.cnf + echo "innodb_file_per_table = 0" >> /etc/my.cnf + echo "wait_timeout = 28800" >> /etc/my.cnf + echo "character-set-server = utf8mb4" >> /etc/my.cnf + echo "collation-server = utf8mb4_unicode_ci" >> /etc/my.cnf + + systemctl restart mysqld + + # --- Change the Default MySQL Password for Root User --- + + MYSQL_INSTALLED_TMP_ROOT_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') + mysqladmin --user=root --password=$MYSQL_INSTALLED_TMP_ROOT_PASSWORD password $DB_PASSWORD + + # --- Create a Database for OroPlatform Community Edition Application and a Dedicated Database User --- + + mysql -uroot -p$DB_PASSWORD -e "CREATE DATABASE $DB_NAME" + mysql -uroot -p$DB_PASSWORD -e "GRANT ALL PRIVILEGES ON $DB_NAME.* to '$DB_USER'@'localhost' identified by '$DB_PASSWORD'" + mysql -uroot -p$DB_PASSWORD -e "FLUSH PRIVILEGES" + + echo "\n~~~~~~~~~~~~~~ Configure Web Server ~~~~~~~~~~~~~~\n" + + cat > /etc/nginx/conf.d/default.conf <<____NGINXCONFIGTEMPLATE +server { + server_name $APP_HOST www.$APP_HOST; + root /usr/share/nginx/html/oroapp/public; + + index index.php; + + gzip on; + gzip_proxied any; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; + gzip_vary on; + + location / { + # try to serve file directly, fallback to index.php + try_files \\$uri /index.php\\$is_args\\$args; + } + + location ~ ^/(index|index_dev|config|install)\\.php(/|$) { + fastcgi_pass 127.0.0.1:9000; + # or + # fastcgi_pass unix:/var/run/php/php7-fpm.sock; + fastcgi_split_path_info ^(.+\\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME \\$document_root\\$fastcgi_script_name; + fastcgi_param HTTPS off; + fastcgi_buffers 64 64k; + fastcgi_buffer_size 128k; + } + + location ~* ^[^(\\.php)]+\\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ { + access_log off; + expires 1h; + add_header Cache-Control public; + } + + error_log /var/log/nginx/${APP_HOST}_error.log; + access_log /var/log/nginx/${APP_HOST}_access.log; +} +____NGINXCONFIGTEMPLATE + + systemctl restart nginx + + echo "\n~~~~~~~~~~~~~~ Configure PHP ~~~~~~~~~~~~~~\n" + + sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf + sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf + sed -i 's/;catch_workers_output/catch_workers_output/g' /etc/php-fpm.d/www.conf + + sed -i 's/memory_limit = [0-9MG]*/memory_limit = 1G/g' /etc/php.ini + sed -i 's/;realpath_cache_size = [0-9MGk]*/realpath_cache_size = 4M/g' /etc/php.ini + sed -i 's/;realpath_cache_ttl = [0-9]*/realpath_cache_ttl = 600/g' /etc/php.ini + + sed -i 's/opcache.enable=[0-1]/opcache.enable=1/g' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.enable_cli=[0-1]/opcache.enable_cli=0/g' /etc/php.d/10-opcache.ini + sed -i 's/opcache.memory_consumption=[0-9]*/opcache.memory_consumption=512/g' /etc/php.d/10-opcache.ini + sed -i 's/opcache.interned_strings_buffer=[0-9]*/opcache.interned_strings_buffer=32/g' /etc/php.d/10-opcache.ini + sed -i 's/opcache.max_accelerated_files=[0-9]*/opcache.max_accelerated_files=32531/g' /etc/php.d/10-opcache.ini + sed -i 's/;opcache.save_comments=[0-1]/opcache.save_comments=1/g' /etc/php.d/10-opcache.ini + + systemctl restart php-fpm + + echo "********************************************************************************************" + echo "************** Step 3: OroPlatform Community Edition Application Installation **************" + echo "********************************************************************************************" + + echo "\n~~~~~~~~~~~~~~ Get Application Source Code ~~~~~~~~~~~~~~\n" + + # --- Copy application source code from the current host folder to the nginx web folder --- + + cd /usr/share/nginx/html + mkdir oroapp && cd oroapp + cp -r /vagrant/* . + + echo "\n~~~~~~~~~~~~~~ Install Application Dependencies ~~~~~~~~~~~~~~\n" + + # --- Configure config/parameters.yml (to prevent composer interactive dialog) --- + + cp ./config/parameters.yml.dist ./config/parameters.yml + sed -i "s/database_user:[ ]*root/database_user: $DB_USER/g" ./config/parameters.yml + sed -i "s/database_password:[ ]*~/database_password: '$DB_PASSWORD'/g" ./config/parameters.yml + sed -i "s/database_name:[ ]*[a-zA-Z0-9_]*/database_name: $DB_NAME/g" ./config/parameters.yml + + composer install --prefer-dist --no-dev + + echo "\n~~~~~~~~~~~~~~ Install OroPlatform Community Edition Application ~~~~~~~~~~~~~~\n" + + # --- Configure DBAL parameters before installation --- + + cat >> ./config/config.yml <<____DOCTRINECONFIG + +doctrine: + dbal: + charset: utf8mb4 + default_table_options: + charset: utf8mb4 + collate: utf8mb4_unicode_ci + +____DOCTRINECONFIG + + # --- Run the installation command --- + + php ./bin/console oro:install --env=prod --timeout=900 --no-debug --application-url="http://$APP_HOST/" --organization-name="Oro Inc" --user-name="$APP_USER" --user-email="admin@example.com" --user-firstname="Bob" --user-lastname="Dylan" --user-password="$APP_PASSWORD" --sample-data=$APP_LOAD_DEMO_DATA --language=en --formatting-code=en_US + + echo "\n~~~~~~~~~~~~~~ Add Required Permissions for the nginx User ~~~~~~~~~~~~~~\n" + + setfacl -b -R ./ + cd /usr/share/nginx/html/oroapp + find . -type f -exec chmod 0644 {} \\; + find . -type d -exec chmod 0755 {} \\; + chown -R nginx:nginx ./var/{sessions,attachment,cache,import_export,logs} + chown -R nginx:nginx ./public/{media,uploads,js} + + echo "\n*********************************************************************************" + echo "************** Step 4: Post-installation Environment Configuration **************" + echo "*********************************************************************************\n" + + echo "\n~~~~~~~~~~~~~~ Schedule Periodical Command Execution ~~~~~~~~~~~~~~\n" + + echo "*/1 * * * * php /usr/share/nginx/html/oroapp/bin/console oro:cron --env=prod > /dev/null" > /var/spool/cron/nginx + + echo "\n~~~~~~~~~~~~~~ Configure and Run Required Background Processes ~~~~~~~~~~~~~~\n" + + cat >> /etc/supervisord.conf <<____SUPERVISORDTEMPLATE +[program:oro_web_socket] +command=php ./bin/console clank:server --env=prod +numprocs=1 +autostart=true +autorestart=true +directory=/usr/share/nginx/html/oroapp +user=nginx +redirect_stderr=true + +[program:oro_message_consumer] +command=php ./bin/console oro:message-queue:consume --env=prod +process_name=%(program_name)s_%(process_num)02d +numprocs=5 +autostart=true +autorestart=true +directory=/usr/share/nginx/html/oroapp +user=nginx +redirect_stderr=true +____SUPERVISORDTEMPLATE + + systemctl restart supervisord + + echo "\n**********************************************************************************************************************" + echo "************** Congratulations! You’ve Successfully Installed OroPlatform Application **********************************" + echo "**********************************************************************************************************************\n" + echo "\n************** You should now be able to open the homepage http://$APP_HOST:$FORWARDED_PORT/ and use the application. **************\n" + SHELL +end + diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 8f4b38dbf..000000000 --- a/app/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/bootstrap.php.cache -/phpunit.xml -/karma.conf.js -/attachment/*.* diff --git a/app/.htaccess b/app/.htaccess deleted file mode 100644 index fb1de45bd..000000000 --- a/app/.htaccess +++ /dev/null @@ -1,7 +0,0 @@ - - Require all denied - - - Order deny,allow - Deny from all - diff --git a/app/AppKernel.php b/app/AppKernel.php deleted file mode 100644 index d55c3cccf..000000000 --- a/app/AppKernel.php +++ /dev/null @@ -1,36 +0,0 @@ -getEnvironment(), array('dev', 'test'))) { - $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); - $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); - } - - if ('dev' === $this->getEnvironment() - && class_exists('Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle') - ) { - $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); - } - - if ('test' === $this->getEnvironment()) { - $bundles[] = new Oro\Bundle\TestFrameworkBundle\OroTestFrameworkBundle(); - } - -// $bundles[] = new JMS\JobQueueBundle\JMSJobQueueBundle(); - - return array_merge(parent::registerBundles(), $bundles); - } - - public function registerContainerConfiguration(LoaderInterface $loader) - { - $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); - } -} diff --git a/app/Resources/DoctrineBundle/views/Collector/db.html.twig b/app/Resources/DoctrineBundle/views/Collector/db.html.twig deleted file mode 100644 index 75f02da00..000000000 --- a/app/Resources/DoctrineBundle/views/Collector/db.html.twig +++ /dev/null @@ -1,296 +0,0 @@ -{% extends app.request.isXmlHttpRequest ? 'WebProfilerBundle:Profiler:ajax_layout.html.twig' : 'WebProfilerBundle:Profiler:layout.html.twig' %} - -{% block toolbar %} - {% set icon %} - Database - - {{ collector.querycount }} - {% if collector.querycount > 0 %} - in {{ '%0.2f'|format(collector.time * 1000) }} ms - {% endif %} - {% if collector.invalidEntityCount > 0 %} - - {% endif %} - {% endset %} - {% set text %} -
- DB Queries - {{ collector.querycount }} -
-
- Query time - {{ '%0.2f'|format(collector.time * 1000) }} ms -
-
- Invalid entities - {{ collector.invalidEntityCount }} -
- {% endset %} - {% include 'WebProfilerBundle:Profiler:toolbar_item.html.twig' with { 'link': profiler_url } %} -{% endblock %} - -{% block menu %} - - - Doctrine - - {{ collector.querycount }} - {{ '%0.0f'|format(collector.time * 1000) }} ms - - -{% endblock %} - -{% block panel %} - {% if 'explain' == page %} - {{ render(controller('DoctrineBundle:Profiler:explain', { - 'token': token, - 'panel': 'db', - 'connectionName': app.request.query.get('connection'), - 'query': app.request.query.get('query') - })) }} - {% else %} - {{ block('queries') }} - {% endif %} -{% endblock %} - -{% block queries %} -

Queries

- - {% for connection, queries in collector.queries %} -

Connection {{ connection }}

- {% if queries is empty %} -

- No queries. -

- {% else %} -

- -

- - {% endif %} - {% endfor %} - -

Database Connections

- - {% if collector.connections %} - {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.connections} only %} - {% else %} -

- No connections. -

- {% endif %} - -

Entity Managers

- - {% if collector.managers %} - {% include 'WebProfilerBundle:Profiler:table.html.twig' with {data: collector.managers} only %} - {% else %} -

- No entity managers. -

- {% endif %} - -

Mapping

- - {% for manager, classes in collector.entities %} -

Manager {{ manager }}

- {% if classes is empty %} -

No loaded entities.

- {% else %} - - - - - - - - - {% for class in classes %} - - - - - {% endfor %} - -
ClassMapping errors
{{ class }} - {% if collector.mappingErrors[manager][class] is defined %} -
    - {% for error in collector.mappingErrors[manager][class] %} -
  • {{ error }}
  • - {% endfor %} -
- {% else %} - Valid - {% endif %} -
- {% endif %} - {% endfor %} - - - - -{% endblock %} diff --git a/app/Resources/OroUIBundle/views/Default/help.html.twig b/app/Resources/OroUIBundle/views/Default/help.html.twig deleted file mode 100644 index 1c5779ac2..000000000 --- a/app/Resources/OroUIBundle/views/Default/help.html.twig +++ /dev/null @@ -1 +0,0 @@ -
  • diff --git a/app/Resources/OroUIBundle/views/Default/index.html.twig b/app/Resources/OroUIBundle/views/Default/index.html.twig deleted file mode 100644 index efb3597aa..000000000 --- a/app/Resources/OroUIBundle/views/Default/index.html.twig +++ /dev/null @@ -1,236 +0,0 @@ -{% if not oro_is_hash_navigation() %} - - - - {% block head %} - {% trans %}Loading...{% endtrans %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - {% block head_style %} - {% placeholder head_style %} - {% endblock %} - - {% block script %} - {% block scripts_before %} - {% placeholder scripts_before %} - {% endblock %} - {% set requirejs_config_extend %} - {%- placeholder requirejs_config_extend -%} - {% endset %} - {% include 'OroRequireJSBundle::scripts.html.twig' with { - compressed: not app.debug, - config_extend: requirejs_config_extend - } %} - {% block application %} - - {% endblock %} - - {% placeholder scripts_after %} - {% block head_script %} - {% endblock %} - {% endblock %} - {% endblock %} - - - {% placeholder after_body_start %} -
    -

    {% trans %}Loading...{% endtrans %}

    -
    -
    -
    -
    - - {% placeholder before_body_end %} - - -{% else %} - {# Title should be generated as least once in order to pass data to title service #} - {% set title = oro_title_render() %} - {# Template for hash tag navigation#} - {% use 'OroUIBundle:Default/navbar:blocks.html.twig' %} - {% include 'OroNavigationBundle:HashNav:hashNavAjax.html.twig' - with { - 'data': { - 'scripts': block('head_script'), - 'content': block('page_container'), - 'breadcrumb': block('breadcrumb')|trim, - 'beforeContentAddition': block('before_content_addition') - } - } - %} -{% endif %} diff --git a/app/Resources/OroUserBundle/views/layout.html.twig b/app/Resources/OroUserBundle/views/layout.html.twig deleted file mode 100644 index 1ed4ec1ff..000000000 --- a/app/Resources/OroUserBundle/views/layout.html.twig +++ /dev/null @@ -1,72 +0,0 @@ - - - - {% block head %} - {{ oro_title_render() }} - - - - - - - - - - - - - - - - - - - - - - - {% placeholder head_style %} - - {% include 'OroRequireJSBundle::scripts.html.twig' with {compressed: not app.debug} %} - - {% endblock %} - {% placeholder scripts_after %} - - -
    -
    - {% set messagesContent %} - {% if app.session.flashbag.peekAll|length > 0 %} - {% for type, messages in app.session.flashbag.all %} - {% for message in messages %} -
    - {{ message|trans|raw }} -
    - {% endfor %} - {% endfor %} - {% endif %} - {% endset %} - - {% block messages %} - {{ messagesContent }} - {% endblock %} - - {% block header %} - {% endblock header %} - - {% block main %} - {% block content %} - {% endblock content %} - {% endblock main %} -
    -
    - - diff --git a/app/Resources/SecurityBundle/views/Collector/security.html.twig b/app/Resources/SecurityBundle/views/Collector/security.html.twig deleted file mode 100644 index 23f17f8a1..000000000 --- a/app/Resources/SecurityBundle/views/Collector/security.html.twig +++ /dev/null @@ -1,87 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% block toolbar %} - {% if collector.user %} - {% set color_code = (collector.enabled and collector.authenticated) ? 'green' : 'yellow' %} - {% set authentication_color_code = (collector.enabled and collector.authenticated) ? 'green' : 'red' %} - {% set authentication_color_text = (collector.enabled and collector.authenticated) ? 'Yes' : 'No' %} - {% else %} - {% set color_code = collector.enabled ? 'red' : 'black' %} - {% endif %} - {% set text %} - {% if collector.user %} -
    - Logged in as - {{ collector.user }} -
    -
    - Authenticated - {{ authentication_color_text }} -
    - {% if collector.tokenClass != null %} -
    - Token class - {{ collector.tokenClass|abbr_class }} -
    - {% endif %} - {% elseif collector.enabled %} - You are not authenticated. - {% else %} - The security is disabled. - {% endif %} - {% endset %} - {% set icon %} - Security - - - {% if collector.user %}
    {{ collector.user }}
    {% endif %} - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %} -{% endblock %} - -{% block menu %} - - - Security - -{% endblock %} - -{% block panel %} -

    Security

    - {% if collector.user %} - - - - - - - - - - - - - - {% if collector.tokenClass != null %} - - - - - {% endif %} -
    Username{{ collector.user }}
    Authenticated? - {% if collector.authenticated %} - yes - {% else %} - no {% if not collector.roles|length %}(probably because the user has no roles){% endif %} - {% endif %} -
    Roles{{ collector.roles|yaml_encode }}
    Token class{{ collector.tokenClass }}
    - {% elseif collector.enabled %} -

    - No token -

    - {% else %} -

    - The security component is disabled -

    - {% endif %} -{% endblock %} diff --git a/app/Resources/SwiftmailerBundle/views/Collector/swiftmailer.html.twig b/app/Resources/SwiftmailerBundle/views/Collector/swiftmailer.html.twig deleted file mode 100644 index f6af7abe6..000000000 --- a/app/Resources/SwiftmailerBundle/views/Collector/swiftmailer.html.twig +++ /dev/null @@ -1,98 +0,0 @@ -{% extends 'WebProfilerBundle:Profiler:layout.html.twig' %} - -{% block toolbar %} - {% if collector.messageCount %} - {% set icon %} - Swiftmailer - - {{ collector.messageCount }} - {% endset %} - {% set text %} -
    - Messages - {{ collector.messageCount }} -
    - {% for name in collector.mailers %} -
    -
    - {{ name }} - {{ collector.messageCount(name) }} -
    -
    - Is spooled ? - {{ collector.isSpool(name) ? 'yes' : 'no' }} -
    - {% endfor %} - - {% endset %} - {% include 'WebProfilerBundle:Profiler:toolbar_item.html.twig' with { 'link': profiler_url } %} - {% endif %} -{% endblock %} - -{% block menu %} - - Configuration - E-Mails - - {{ collector.messageCount }} - - -{% endblock %} - -{% block panel %} -

    Messages

    - - - - - - - - - - {% for name in collector.mailers %} - - - - - {% endfor %} - -
    MailerMessages
    {{ name }}{{ collector.isDefaultMailer(name) ? ' (default mailer)' : '' }}{{ collector.messageCount(name) }} {{ collector.isSpool(name) ? 'spooled' : 'sent' }}
    - - {% for name in collector.mailers %} -

    Mailer {{ name }}{{ collector.isDefaultMailer(name) ? ' (default mailer)' : '' }}

    - - {% if not collector.messages(name) %} -

    - No message sent. -

    - {% else %} - - {% endif %} - {% endfor %} -{% endblock %} diff --git a/app/Resources/TwigBundle/views/Exception/error.html.twig b/app/Resources/TwigBundle/views/Exception/error.html.twig deleted file mode 100644 index 2e0fbe287..000000000 --- a/app/Resources/TwigBundle/views/Exception/error.html.twig +++ /dev/null @@ -1,71 +0,0 @@ -{% extends 'OroUIBundle:Default:index.html.twig' %} -{% oro_title_set({titleTemplate : "%code% - %status%" , params: {'%code%': status_code, '%status%' :status_text }, force : true}) %} -{% block head %} - - {{ parent() }} -{% endblock %} -{% block bodyClass %}error-page{% endblock %} - -{% block header %} - - {% block breadcrumb %} - {% endblock %} - - {% if app.user is not null %} - {{ parent() }} - {% if status_code == 503 %} - {% block navbar %}{% endblock %} - {% endif %} - {% else %} - - {% endif %} -{% endblock %} - -{% block before_content %} -{% endblock %} - -{% block scripts_before %} - {% if app.user is not null %} - {{ parent() }} - {% endif %} -{% endblock %} - -{% block right_panel %} -{% endblock right_panel %} -{% block left_panel %} -{% endblock left_panel %} - -{% block content %} - -{% endblock %} - -{% block head_script %} - {{ parent() }} - -{% endblock %} diff --git a/app/Resources/WebProfilerBundle/views/Collector/config.html.twig b/app/Resources/WebProfilerBundle/views/Collector/config.html.twig deleted file mode 100644 index 092f2388e..000000000 --- a/app/Resources/WebProfilerBundle/views/Collector/config.html.twig +++ /dev/null @@ -1,207 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% block toolbar %} - {# Symfony Logo #} - {% set icon %} - - Symfony - - - {% if collector.applicationname %} - {{ collector.applicationname }} {{ collector.applicationversion }} - {% else %} - {{ collector.symfonyversion }} - {% endif %} - - - {% endset %} - {% set text %} - {% if collector.applicationname %} -
    - {{ collector.applicationname }} {{ collector.applicationversion }} -
    - {% endif %} -
    - Symfony {{ collector.symfonyversion }} -
    -
    - Symfony Documentation -
    - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %} - - {# PHP Information #} - {% set icon %} - - PHP - - - {% endset %} - {% set text %} - {% spaceless %} -
    - PHP - {{ collector.phpversion }} -
    -
    - PHP Extensions - xdebug - accel -
    -
    - PHP SAPI - {{ collector.sapiName }} -
    - {% endspaceless %} - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %} - - {# Environment #} - {% set debug_status_class %}sf-toolbar-status sf-toolbar-status-{{ collector.debug ? 'green' : 'red' }}{% endset %} - {% set icon %} - Environment - - - {{ token }} - {% if 'n/a' != collector.appname or 'n/a' != collector.env %} - - {{ collector.appname }} - {{ collector.env }} - - {% endif %} - {% endset %} - {% set text %} - {% spaceless %} - {% if 'n/a' != collector.appname %} -
    - Name - {{ collector.appname }} -
    - {% endif %} - {% if 'n/a' != collector.env %} -
    - Environment - {{ collector.env }} -
    - {% endif %} - {% if 'n/a' != collector.debug %} -
    - Debug - {{ collector.debug ? 'en' : 'dis' }}abled -
    - {% endif %} -
    - Token - - {% if profiler_url %} - {{ collector.token }} - {% else %} - {{ collector.token }} - {% endif %} - -
    - {% endspaceless %} - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %} -{% endblock %} - -{% block menu %} - - Configuration - Config - -{% endblock %} - -{% block panel %} -

    Project Configuration

    - - - - - - - {% if collector.applicationname %} - - - {% else %} - - - {% endif %} - - {% if 'n/a' != collector.appname %} - - - - - {% endif %} - {% if 'n/a' != collector.env %} - - - - - {% endif %} - {% if 'n/a' != collector.debug %} - - - - - {% endif %} -
    KeyValue
    Application{{ collector.applicationname }} {{ collector.applicationversion }} (on Symfony {{ collector.symfonyversion }})Symfony version{{ collector.symfonyversion }}
    Application name{{ collector.appname }}
    Environment{{ collector.env }}
    Debug{{ collector.debug ? 'enabled' : 'disabled' }}
    - -

    PHP configuration

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyValue
    PHP version{{ collector.phpversion }}
    Xdebug{{ collector.hasxdebug ? 'enabled' : 'disabled' }}
    PHP acceleration{{ collector.hasaccelerator ? 'enabled' : 'disabled' }}
    XCache{{ collector.hasxcache ? 'enabled' : 'disabled' }}
    APC{{ collector.hasapc ? 'enabled' : 'disabled' }}
    Zend OPcache{{ collector.haszendopcache ? 'enabled' : 'disabled' }}
    EAccelerator{{ collector.haseaccelerator ? 'enabled' : 'disabled' }}
    Full PHP configurationphpinfo
    - - {% if collector.bundles %} -

    Active bundles

    - - - - - - {% set bundles = collector.bundles %} - {% for name in bundles|keys|sort %} - - - - - {% endfor %} -
    NamePath
    {{ name }}{{ bundles[name] }}
    - {% endif %} -{% endblock %} diff --git a/app/Resources/WebProfilerBundle/views/Collector/logger.html.twig b/app/Resources/WebProfilerBundle/views/Collector/logger.html.twig deleted file mode 100644 index 5d6c2d97e..000000000 --- a/app/Resources/WebProfilerBundle/views/Collector/logger.html.twig +++ /dev/null @@ -1,128 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% import _self as logger %} - -{% block toolbar %} - {% if collector.counterrors or collector.countdeprecations %} - {% set icon %} - Logs - - {% if collector.counterrors %} - {% set status_color = "red" %} - {% else %} - {% set status_color = "yellow" %} - {% endif %} - {% set error_count = collector.counterrors + collector.countdeprecations %} - {{ error_count }} - {% endset %} - {% set text %} - {% if collector.counterrors %} -
    - Exception - {{ collector.counterrors }} -
    - {% endif %} - {% if collector.countdeprecations %} -
    - Deprecated Calls - {{ collector.countdeprecations }} -
    - {% endif %} - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %} - {% endif %} -{% endblock %} - -{% block menu %} - - Logger - Logs - {% if collector.counterrors or collector.countdeprecations %} - {% set error_count = collector.counterrors + collector.countdeprecations %} - - {{ error_count }} - - {% endif %} - -{% endblock %} - -{% block panel %} -

    Logs

    - - {% set priority = request.query.get('priority', 0) %} - - - - - - -
    Filter -
    - - - - -
    -
    - - {% if collector.logs %} - - {% else %} -

    - No logs available. -

    - {% endif %} -{% endblock %} - - -{% macro display_message(log_index, log) %} - {% if constant('Symfony\\Component\\HttpKernel\\Debug\\ErrorHandler::TYPE_DEPRECATION') == log.context.type|default(0) %} - DEPRECATION - {{ log.message }} - {% set id = 'sf-call-stack-' ~ log_index %} - - - + - - {% for index, call in log.context.stack if index > 1 %} - {% if index == 2 %} - ' : '' }} - {% endfor %} - {% else %} - {{ log.priorityName }} - {{ log.message }} - {% if log.context is defined and log.context is not empty %} -
    - - Context: {{ log.context|json_encode(64 b-or 256) }} - - {% endif %} - {% endif %} -{% endmacro %} diff --git a/app/Resources/WebProfilerBundle/views/Collector/memory.html.twig b/app/Resources/WebProfilerBundle/views/Collector/memory.html.twig deleted file mode 100644 index 1c678adc0..000000000 --- a/app/Resources/WebProfilerBundle/views/Collector/memory.html.twig +++ /dev/null @@ -1,18 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% block toolbar %} - {% set icon %} - - Memory Usage - - {{ '%.1f'|format(collector.memory / 1024 / 1024) }} MB - - {% endset %} - {% set text %} -
    - Memory usage - {{ '%.1f'|format(collector.memory / 1024 / 1024) }} / {{ collector.memoryLimit == -1 ? '∞' : '%.1f'|format(collector.memoryLimit / 1024 / 1024)|escape }} MB -
    - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': false } %} -{% endblock %} diff --git a/app/Resources/WebProfilerBundle/views/Collector/request.html.twig b/app/Resources/WebProfilerBundle/views/Collector/request.html.twig deleted file mode 100644 index f78129800..000000000 --- a/app/Resources/WebProfilerBundle/views/Collector/request.html.twig +++ /dev/null @@ -1,162 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% block toolbar %} - {% set request_handler %} - {% if collector.controller.class is defined %} - {% set link = collector.controller.file|file_link(collector.controller.line) %} - {{ collector.controller.class|abbr_class }} - - {{ collector.controller.method }} - - {% else %} - {{ collector.controller }} - {% endif %} - {% endset %} - {% set request_status_code_color = (400 > collector.statuscode) ? ((200 == collector.statuscode) ? 'green' : 'yellow') : 'red'%} - {% set request_route = collector.route ? collector.route : 'NONE' %} - {% set icon %} - Request - - {{ collector.statuscode }} - {{ request_handler }} - on {{ request_route }} - {% endset %} - {% set text %} - {% spaceless %} -
    - Status - {{ collector.statuscode }} {{ collector.statustext }} -
    -
    - Controller - {{ request_handler }} -
    -
    - Route name - {{ request_route }} -
    -
    - Has session - {% if collector.sessionmetadata|length %}yes{% else %}no{% endif %} -
    - {% endspaceless %} - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %} -{% endblock %} - -{% block menu %} - - Request - Request - -{% endblock %} - -{% block panel %} -

    Request GET Parameters

    - - {% if collector.requestquery.all|length %} - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestquery } only %} - {% else %} -

    - No GET parameters -

    - {% endif %} - -

    Request POST Parameters

    - - {% if collector.requestrequest.all|length %} - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestrequest } only %} - {% else %} -

    - No POST parameters -

    - {% endif %} - -

    Request Attributes

    - - {% if collector.requestattributes.all|length %} - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestattributes } only %} - {% else %} -

    - No attributes -

    - {% endif %} - -

    Request Cookies

    - - {% if collector.requestcookies.all|length %} - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestcookies } only %} - {% else %} -

    - No cookies -

    - {% endif %} - -

    Request Headers

    - - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestheaders } only %} - -

    Request Content

    - - {% if collector.content == false %} -

    Request content not available (it was retrieved as a resource).

    - {% elseif collector.content %} -
    {{ collector.content }}
    - {% else %} -

    No content

    - {% endif %} - -

    Request Server Parameters

    - - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.requestserver } only %} - -

    Response Headers

    - - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': collector.responseheaders } only %} - -

    Session Metadata

    - - {% if collector.sessionmetadata|length %} - {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.sessionmetadata } only %} - {% else %} -

    - No session metadata -

    - {% endif %} - -

    Session Attributes

    - - {% if collector.sessionattributes|length %} - {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.sessionattributes } only %} - {% else %} -

    - No session attributes -

    - {% endif %} - -

    Flashes

    - - {% if collector.flashes|length %} - {% include '@WebProfiler/Profiler/table.html.twig' with { 'data': collector.flashes } only %} - {% else %} -

    - No flashes -

    - {% endif %} - - {% if profile.parent %} -

    Parent request: {{ profile.parent.token }}

    - - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': profile.parent.getcollector('request').requestattributes } only %} - {% endif %} - - {% if profile.children|length %} -

    Sub requests

    - - {% for child in profile.children %} -

    {{ child.token }}

    - {% include '@WebProfiler/Profiler/bag.html.twig' with { 'bag': child.getcollector('request').requestattributes } only %} - {% endfor %} - {% endif %} - -{% endblock %} diff --git a/app/Resources/WebProfilerBundle/views/Collector/time.html.twig b/app/Resources/WebProfilerBundle/views/Collector/time.html.twig deleted file mode 100644 index c506ad27d..000000000 --- a/app/Resources/WebProfilerBundle/views/Collector/time.html.twig +++ /dev/null @@ -1,491 +0,0 @@ -{% extends '@WebProfiler/Profiler/layout.html.twig' %} - -{% from _self import display_timeline, dump_request_data %} - -{% if colors is not defined %} - {% set colors = { - 'default': '#aacd4e', - 'section': '#666', - 'event_listener': '#3dd', - 'event_listener_loading': '#add', - 'template': '#dd3', - 'doctrine': '#d3d', - 'propel': '#f4d', - 'child_sections': '#eed', - } %} -{% endif %} - -{% block toolbar %} - {% set duration = collector.events|length ? '%.0f ms'|format(collector.duration) : 'n/a' %} - {% set icon %} - Time - - {{ duration }} - {% endset %} - {% set text %} -
    - Total time - {{ duration }} -
    - {% endset %} - {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with { 'link': profiler_url } %} -{% endblock %} - -{% block menu %} - - Timeline - Timeline - -{% endblock %} - -{% block panel %} -

    Timeline

    - {% if collector.events|length %} - {{ block('panelContent') }} - {% else %} -

    - No timing events have been recorded. Are you sure that debugging is enabled in the kernel? -

    - {% endif %} -{% endblock %} - -{% block panelContent %} -
    - - - - - - - - - - - - - - -
    Total time{{ '%.0f'|format(collector.duration) }} ms
    Initialization time{{ '%.0f'|format(collector.inittime) }} ms
    Threshold ms
    -
    - -

    - {{ profile.parent ? "Request" : "Main Request" }} - - - {{ collector.events.__section__.duration }} ms - {% if profile.parent %} - - parent - {% endif %} - -

    - - {{ display_timeline('timeline_' ~ token, collector.events, colors) }} - - {% if profile.children|length %} - {% for child in profile.children %} - {% set events = child.getcollector('time').events %} -

    - Sub-request "{{ child.getcollector('request').requestattributes.get('_controller') }}" - - {{ events.__section__.duration }} ms -

    - - {{ display_timeline('timeline_' ~ child.token, events, colors) }} - {% endfor %} - {% endif %} - - -{% endblock %} - -{% macro dump_request_data(token, profile, events, origin) %} -{% from _self import dump_events %} - { - "id": "{{ token }}", - "left": {{ "%F"|format(events.__section__.origin - origin) }}, - "events": [ -{{ dump_events(events) }} - ] - } -{% endmacro %} - -{% macro dump_events(events) %} -{% for name, event in events %} -{% if '__section__' != name %} - { - "name": "{{ name|replace({"\\": "\\\\"}) }}", - "category": "{{ event.category }}", - "origin": {{ "%F"|format(event.origin) }}, - "starttime": {{ "%F"|format(event.starttime) }}, - "endtime": {{ "%F"|format(event.endtime) }}, - "duration": {{ "%F"|format(event.duration) }}, - "memory": {{ "%.1F"|format(event.memory / 1024 / 1024) }}, - "periods": [ - {%- for period in event.periods -%} - {"start": {{ "%F"|format(period.starttime) }}, "end": {{ "%F"|format(period.endtime) }}}{{ loop.last ? '' : ', ' }} - {%- endfor -%} - ] - }{{ loop.last ? '' : ',' }} -{% endif %} -{% endfor %} -{% endmacro %} - -{% macro display_timeline(id, events, colors) %} -
    -
    - {% for category, color in colors %} - {{ category }} - {% endfor %} -
    - -
    -{% endmacro %} diff --git a/app/Resources/php/cssmin-v3.0.1.php b/app/Resources/php/cssmin-v3.0.1.php deleted file mode 100644 index 9b5fd2ff2..000000000 --- a/app/Resources/php/cssmin-v3.0.1.php +++ /dev/null @@ -1,5098 +0,0 @@ - - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * -- - * - * @package CssMin - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -/** - * Abstract definition of a CSS token class. - * - * Every token has to extend this class. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssToken - { - /** - * Returns the token as string. - * - * @return string - */ - abstract public function __toString(); - } - -/** - * Abstract definition of a for a ruleset start token. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssRulesetStartToken extends aCssToken - { - - } - -/** - * Abstract definition of a for ruleset end token. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssRulesetEndToken extends aCssToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "}"; - } - } - -/** - * Abstract definition of a parser plugin. - * - * Every parser plugin have to extend this class. A parser plugin contains the logic to parse one or aspects of a - * stylesheet. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssParserPlugin - { - /** - * Plugin configuration. - * - * @var array - */ - protected $configuration = array(); - /** - * The CssParser of the plugin. - * - * @var CssParser - */ - protected $parser = null; - /** - * Plugin buffer. - * - * @var string - */ - protected $buffer = ""; - /** - * Constructor. - * - * @param CssParser $parser The CssParser object of this plugin. - * @param array $configuration Plugin configuration [optional] - * @return void - */ - public function __construct(CssParser $parser, array $configuration = null) - { - $this->configuration = $configuration; - $this->parser = $parser; - } - /** - * Returns the array of chars triggering the parser plugin. - * - * @return array - */ - abstract public function getTriggerChars(); - /** - * Returns the array of states triggering the parser plugin or FALSE if every state will trigger the parser plugin. - * - * @return array - */ - abstract public function getTriggerStates(); - /** - * Parser routine of the plugin. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - abstract public function parse($index, $char, $previousChar, $state); - } - -/** - * Abstract definition of a minifier plugin class. - * - * Minifier plugin process the parsed tokens one by one to apply changes to the token. Every minifier plugin has to - * extend this class. - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssMinifierPlugin - { - /** - * Plugin configuration. - * - * @var array - */ - protected $configuration = array(); - /** - * The CssMinifier of the plugin. - * - * @var CssMinifier - */ - protected $minifier = null; - /** - * Constructor. - * - * @param CssMinifier $minifier The CssMinifier object of this plugin. - * @param array $configuration Plugin configuration [optional] - * @return void - */ - public function __construct(CssMinifier $minifier, array $configuration = array()) - { - $this->configuration = $configuration; - $this->minifier = $minifier; - } - /** - * Apply the plugin to the token. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - abstract public function apply(aCssToken &$token); - /** - * -- - * - * @return array - */ - abstract public function getTriggerTokens(); - } - -/** - * Abstract definition of a minifier filter class. - * - * Minifier filters allows a pre-processing of the parsed token to add, edit or delete tokens. Every minifier filter - * has to extend this class. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssMinifierFilter - { - /** - * Filter configuration. - * - * @var array - */ - protected $configuration = array(); - /** - * The CssMinifier of the filter. - * - * @var CssMinifier - */ - protected $minifier = null; - /** - * Constructor. - * - * @param CssMinifier $minifier The CssMinifier object of this plugin. - * @param array $configuration Filter configuration [optional] - * @return void - */ - public function __construct(CssMinifier $minifier, array $configuration = array()) - { - $this->configuration = $configuration; - $this->minifier = $minifier; - } - /** - * Filter the tokens. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - abstract public function apply(array &$tokens); - } - -/** - * Abstract formatter definition. - * - * Every formatter have to extend this class. - * - * @package CssMin/Formatter - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssFormatter - { - /** - * Indent string. - * - * @var string - */ - protected $indent = " "; - /** - * Declaration padding. - * - * @var integer - */ - protected $padding = 0; - /** - * Tokens. - * - * @var array - */ - protected $tokens = array(); - /** - * Constructor. - * - * @param array $tokens Array of CssToken - * @param string $indent Indent string [optional] - * @param integer $padding Declaration value padding [optional] - */ - public function __construct(array $tokens, $indent = null, $padding = null) - { - $this->tokens = $tokens; - $this->indent = !is_null($indent) ? $indent : $this->indent; - $this->padding = !is_null($padding) ? $padding : $this->padding; - } - /** - * Returns the array of aCssToken as formatted string. - * - * @return string - */ - abstract public function __toString(); - } - -/** - * Abstract definition of a ruleset declaration token. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssDeclarationToken extends aCssToken - { - /** - * Is the declaration flagged as important? - * - * @var boolean - */ - public $IsImportant = false; - /** - * Is the declaration flagged as last one of the ruleset? - * - * @var boolean - */ - public $IsLast = false; - /** - * Property name of the declaration. - * - * @var string - */ - public $Property = ""; - /** - * Value of the declaration. - * - * @var string - */ - public $Value = ""; - /** - * Set the properties of the @font-face declaration. - * - * @param string $property Property of the declaration - * @param string $value Value of the declaration - * @param boolean $isImportant Is the !important flag is set? - * @param boolean $IsLast Is the declaration the last one of the block? - * @return void - */ - public function __construct($property, $value, $isImportant = false, $isLast = false) - { - $this->Property = $property; - $this->Value = $value; - $this->IsImportant = $isImportant; - $this->IsLast = $isLast; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return $this->Property . ":" . $this->Value . ($this->IsImportant ? " !important" : "") . ($this->IsLast ? "" : ";"); - } - } - -/** - * Abstract definition of a for at-rule block start token. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssAtBlockStartToken extends aCssToken - { - - } - -/** - * Abstract definition of a for at-rule block end token. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -abstract class aCssAtBlockEndToken extends aCssToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "}"; - } - } - -/** - * {@link aCssFromatter Formatter} returning the CSS source in {@link http://goo.gl/etzLs Whitesmiths indent style}. - * - * @package CssMin/Formatter - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssWhitesmithsFormatter extends aCssFormatter - { - /** - * Implements {@link aCssFormatter::__toString()}. - * - * @return string - */ - public function __toString() - { - $r = array(); - $level = 0; - for ($i = 0, $l = count($this->tokens); $i < $l; $i++) - { - $token = $this->tokens[$i]; - $class = get_class($token); - $indent = str_repeat($this->indent, $level); - if ($class === "CssCommentToken") - { - $lines = array_map("trim", explode("\n", $token->Comment)); - for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) - { - $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; - } - } - elseif ($class === "CssAtCharsetToken") - { - $r[] = $indent . "@charset " . $token->Charset . ";"; - } - elseif ($class === "CssAtFontFaceStartToken") - { - $r[] = $indent . "@font-face"; - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class === "CssAtImportToken") - { - $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; - } - elseif ($class === "CssAtKeyframesStartToken") - { - $r[] = $indent . "@keyframes \"" . $token->Name . "\""; - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class === "CssAtMediaStartToken") - { - $r[] = $indent . "@media " . implode(", ", $token->MediaTypes); - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class === "CssAtPageStartToken") - { - $r[] = $indent . "@page"; - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class === "CssAtVariablesStartToken") - { - $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes); - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") - { - $r[] = $indent . implode(", ", $token->Selectors); - $r[] = $this->indent . $indent . "{"; - $level++; - } - elseif ($class == "CssAtFontFaceDeclarationToken" - || $class === "CssAtKeyframesRulesetDeclarationToken" - || $class === "CssAtPageDeclarationToken" - || $class == "CssAtVariablesDeclarationToken" - || $class === "CssRulesetDeclarationToken" - ) - { - $declaration = $indent . $token->Property . ": "; - if ($this->padding) - { - $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); - } - $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; - } - elseif ($class === "CssAtFontFaceEndToken" - || $class === "CssAtMediaEndToken" - || $class === "CssAtKeyframesEndToken" - || $class === "CssAtKeyframesRulesetEndToken" - || $class === "CssAtPageEndToken" - || $class === "CssAtVariablesEndToken" - || $class === "CssRulesetEndToken" - ) - { - $r[] = $indent . "}"; - $level--; - } - } - return implode("\n", $r); - } - } - -/** - * This {@link aCssMinifierPlugin} will process var-statement and sets the declaration value to the variable value. - * - * This plugin only apply the variable values. The variable values itself will get parsed by the - * {@link CssVariablesMinifierFilter}. - * - * Example: - * - * @variables - * { - * defaultColor: black; - * } - * color: var(defaultColor); - * - * - * Will get converted to: - * - * color:black; - * - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssVariablesMinifierPlugin extends aCssMinifierPlugin - { - /** - * Regular expression matching a value. - * - * @var string - */ - private $reMatch = "/var\((.+)\)/iSU"; - /** - * Parsed variables. - * - * @var array - */ - private $variables = null; - /** - * Returns the variables. - * - * @return array - */ - public function getVariables() - { - return $this->variables; - } - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (stripos($token->Value, "var") !== false && preg_match_all($this->reMatch, $token->Value, $m)) - { - $mediaTypes = $token->MediaTypes; - if (!in_array("all", $mediaTypes)) - { - $mediaTypes[] = "all"; - } - for ($i = 0, $l = count($m[0]); $i < $l; $i++) - { - $variable = trim($m[1][$i]); - foreach ($mediaTypes as $mediaType) - { - if (isset($this->variables[$mediaType], $this->variables[$mediaType][$variable])) - { - // Variable value found => set the declaration value to the variable value and return - $token->Value = str_replace($m[0][$i], $this->variables[$mediaType][$variable], $token->Value); - continue 2; - } - } - // If no value was found trigger an error and replace the token with a CssNullToken - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": No value found for variable " . $variable . " in media types " . implode(", ", $mediaTypes) . "", (string) $token)); - $token = new CssNullToken(); - return true; - } - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - /** - * Sets the variables. - * - * @param array $variables Variables to set - * @return void - */ - public function setVariables(array $variables) - { - $this->variables = $variables; - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} will parse the variable declarations out of @variables at-rule - * blocks. The variables will get store in the {@link CssVariablesMinifierPlugin} that will apply the variables to - * declaration. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssVariablesMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $variables = array(); - $defaultMediaTypes = array("all"); - $mediaTypes = array(); - $remove = array(); - for($i = 0, $l = count($tokens); $i < $l; $i++) - { - // @variables at-rule block found - if (get_class($tokens[$i]) === "CssAtVariablesStartToken") - { - $remove[] = $i; - $mediaTypes = (count($tokens[$i]->MediaTypes) == 0 ? $defaultMediaTypes : $tokens[$i]->MediaTypes); - foreach ($mediaTypes as $mediaType) - { - if (!isset($variables[$mediaType])) - { - $variables[$mediaType] = array(); - } - } - // Read the variable declaration tokens - for($i = $i; $i < $l; $i++) - { - // Found a variable declaration => read the variable values - if (get_class($tokens[$i]) === "CssAtVariablesDeclarationToken") - { - foreach ($mediaTypes as $mediaType) - { - $variables[$mediaType][$tokens[$i]->Property] = $tokens[$i]->Value; - } - $remove[] = $i; - } - // Found the variables end token => break; - elseif (get_class($tokens[$i]) === "CssAtVariablesEndToken") - { - $remove[] = $i; - break; - } - } - } - } - // Variables in @variables at-rule blocks - foreach($variables as $mediaType => $null) - { - foreach($variables[$mediaType] as $variable => $value) - { - // If a var() statement in a variable value found... - if (stripos($value, "var") !== false && preg_match_all("/var\((.+)\)/iSU", $value, $m)) - { - // ... then replace the var() statement with the variable values. - for ($i = 0, $l = count($m[0]); $i < $l; $i++) - { - $variables[$mediaType][$variable] = str_replace($m[0][$i], (isset($variables[$mediaType][$m[1][$i]]) ? $variables[$mediaType][$m[1][$i]] : ""), $variables[$mediaType][$variable]); - } - } - } - } - // Remove the complete @variables at-rule block - foreach ($remove as $i) - { - $tokens[$i] = null; - } - if (!($plugin = $this->minifier->getPlugin("CssVariablesMinifierPlugin"))) - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin CssVariablesMinifierPlugin was not found but is required for " . __CLASS__ . "")); - } - else - { - $plugin->setVariables($variables); - } - return count($remove); - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for preserve parsing url() values. - * - * This plugin return no {@link aCssToken CssToken} but ensures that url() values will get parsed properly. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssUrlParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("(", ")"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return false; - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of string - if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 3, 4)) === "url(" && $state !== "T_URL") - { - $this->parser->pushState("T_URL"); - $this->parser->setExclusive(__CLASS__); - } - // Escaped LF in url => remove escape backslash and LF - elseif ($char === "\n" && $previousChar === "\\" && $state === "T_URL") - { - $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); - } - // Parse error: Unescaped LF in string literal - elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_URL") - { - $line = $this->parser->getBuffer(); - $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . ")"); // Replace the LF with the url string delimiter - $this->parser->popState(); - $this->parser->unsetExclusive(); - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); - } - // End of string - elseif ($char === ")" && $state === "T_URL") - { - $this->parser->popState(); - $this->parser->unsetExclusive(); - } - else - { - return false; - } - return true; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for preserve parsing string values. - * - * This plugin return no {@link aCssToken CssToken} but ensures that string values will get parsed properly. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssStringParserPlugin extends aCssParserPlugin - { - /** - * Current string delimiter char. - * - * @var string - */ - private $delimiterChar = null; - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("\"", "'", "\n"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return false; - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of string - if (($char === "\"" || $char === "'") && $state !== "T_STRING") - { - $this->delimiterChar = $char; - $this->parser->pushState("T_STRING"); - $this->parser->setExclusive(__CLASS__); - } - // Escaped LF in string => remove escape backslash and LF - elseif ($char === "\n" && $previousChar === "\\" && $state === "T_STRING") - { - $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); - } - // Parse error: Unescaped LF in string literal - elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_STRING") - { - $line = $this->parser->getBuffer(); - $this->parser->popState(); - $this->parser->unsetExclusive(); - $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . $this->delimiterChar); // Replace the LF with the current string char - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); - $this->delimiterChar = null; - } - // End of string - elseif ($char === $this->delimiterChar && $state === "T_STRING") - { - // If the Previous char is a escape char count the amount of the previous escape chars. If the amount of - // escape chars is uneven do not end the string - if ($previousChar == "\\") - { - $source = $this->parser->getSource(); - $c = 1; - $i = $index - 2; - while (substr($source, $i, 1) === "\\") - { - $c++; $i--; - } - if ($c % 2) - { - return false; - } - } - $this->parser->popState(); - $this->parser->unsetExclusive(); - $this->delimiterChar = null; - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} sorts the ruleset declarations of a ruleset by name. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Rowan Beentje - * @copyright Rowan Beentje - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssSortRulesetPropertiesMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value larger than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - // Only look for ruleset start rules - if (get_class($tokens[$i]) !== "CssRulesetStartToken") { continue; } - // Look for the corresponding ruleset end - $endIndex = false; - for ($ii = $i + 1; $ii < $l; $ii++) - { - if (get_class($tokens[$ii]) !== "CssRulesetEndToken") { continue; } - $endIndex = $ii; - break; - } - if (!$endIndex) { break; } - $startIndex = $i; - $i = $endIndex; - // Skip if there's only one token in this ruleset - if ($endIndex - $startIndex <= 2) { continue; } - // Ensure that everything between the start and end is a declaration token, for safety - for ($ii = $startIndex + 1; $ii < $endIndex; $ii++) - { - if (get_class($tokens[$ii]) !== "CssRulesetDeclarationToken") { continue(2); } - } - $declarations = array_slice($tokens, $startIndex + 1, $endIndex - $startIndex - 1); - // Check whether a sort is required - $sortRequired = $lastPropertyName = false; - foreach ($declarations as $declaration) - { - if ($lastPropertyName) - { - if (strcmp($lastPropertyName, $declaration->Property) > 0) - { - $sortRequired = true; - break; - } - } - $lastPropertyName = $declaration->Property; - } - if (!$sortRequired) { continue; } - // Arrange the declarations alphabetically by name - usort($declarations, array(__CLASS__, "userDefinedSort1")); - // Update "IsLast" property - for ($ii = 0, $ll = count($declarations) - 1; $ii <= $ll; $ii++) - { - if ($ii == $ll) - { - $declarations[$ii]->IsLast = true; - } - else - { - $declarations[$ii]->IsLast = false; - } - } - // Splice back into the array. - array_splice($tokens, $startIndex + 1, $endIndex - $startIndex - 1, $declarations); - $r += $endIndex - $startIndex - 1; - } - return $r; - } - /** - * User defined sort function. - * - * @return integer - */ - public static function userDefinedSort1($a, $b) - { - return strcmp($a->Property, $b->Property); - } - } - -/** - * This {@link aCssToken CSS token} represents the start of a ruleset. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRulesetStartToken extends aCssRulesetStartToken - { - /** - * Array of selectors. - * - * @var array - */ - public $Selectors = array(); - /** - * Set the properties of a ruleset token. - * - * @param array $selectors Selectors of the ruleset - * @return void - */ - public function __construct(array $selectors = array()) - { - $this->Selectors = $selectors; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return implode(",", $this->Selectors) . "{"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing ruleset block with including declarations. - * - * Found rulesets will add a {@link CssRulesetStartToken} and {@link CssRulesetEndToken} to the - * parser; including declarations as {@link CssRulesetDeclarationToken}. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRulesetParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array(",", "{", "}", ":", ";"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_MEDIA", "T_RULESET::SELECTORS", "T_RULESET", "T_RULESET_DECLARATION"); - } - /** - * Selectors. - * - * @var array - */ - private $selectors = array(); - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of Ruleset and selectors - if ($char === "," && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) - { - if ($state !== "T_RULESET::SELECTORS") - { - $this->parser->pushState("T_RULESET::SELECTORS"); - } - $this->selectors[] = $this->parser->getAndClearBuffer(",{"); - } - // End of selectors and start of declarations - elseif ($char === "{" && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) - { - if ($this->parser->getBuffer() !== "") - { - $this->selectors[] = $this->parser->getAndClearBuffer(",{"); - if ($state == "T_RULESET::SELECTORS") - { - $this->parser->popState(); - } - $this->parser->pushState("T_RULESET"); - $this->parser->appendToken(new CssRulesetStartToken($this->selectors)); - $this->selectors = array(); - } - } - // Start of declaration - elseif ($char === ":" && $state === "T_RULESET") - { - $this->parser->pushState("T_RULESET_DECLARATION"); - $this->buffer = $this->parser->getAndClearBuffer(":;", true); - } - // Unterminated ruleset declaration - elseif ($char === ":" && $state === "T_RULESET_DECLARATION") - { - // Ignore Internet Explorer filter declarations - if ($this->buffer === "filter") - { - return false; - } - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); - } - // End of declaration - elseif (($char === ";" || $char === "}") && $state === "T_RULESET_DECLARATION") - { - $value = $this->parser->getAndClearBuffer(";}"); - if (strtolower(substr($value, -10, 10)) === "!important") - { - $value = trim(substr($value, 0, -10)); - $isImportant = true; - } - else - { - $isImportant = false; - } - $this->parser->popState(); - $this->parser->appendToken(new CssRulesetDeclarationToken($this->buffer, $value, $this->parser->getMediaTypes(), $isImportant)); - // Declaration ends with a right curly brace; so we have to end the ruleset - if ($char === "}") - { - $this->parser->appendToken(new CssRulesetEndToken()); - $this->parser->popState(); - } - $this->buffer = ""; - } - // End of ruleset - elseif ($char === "}" && $state === "T_RULESET") - { - $this->parser->popState(); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssRulesetEndToken()); - $this->buffer = ""; - $this->selectors = array(); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a ruleset. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRulesetEndToken extends aCssRulesetEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a ruleset declaration. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRulesetDeclarationToken extends aCssDeclarationToken - { - /** - * Media types of the declaration. - * - * @var array - */ - public $MediaTypes = array("all"); - /** - * Set the properties of a ddocument- or at-rule @media level declaration. - * - * @param string $property Property of the declaration - * @param string $value Value of the declaration - * @param mixed $mediaTypes Media types of the declaration - * @param boolean $isImportant Is the !important flag is set - * @param boolean $isLast Is the declaration the last one of the ruleset - * @return void - */ - public function __construct($property, $value, $mediaTypes = null, $isImportant = false, $isLast = false) - { - parent::__construct($property, $value, $isImportant, $isLast); - $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} sets the IsLast property of any last declaration in a ruleset, - * @font-face at-rule or @page at-rule block. If the property IsLast is TRUE the decrations will get stringified - * without tailing semicolon. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRemoveLastDelarationSemiColonMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - $current = get_class($tokens[$i]); - $next = isset($tokens[$i+1]) ? get_class($tokens[$i+1]) : false; - if (($current === "CssRulesetDeclarationToken" && $next === "CssRulesetEndToken") || - ($current === "CssAtFontFaceDeclarationToken" && $next === "CssAtFontFaceEndToken") || - ($current === "CssAtPageDeclarationToken" && $next === "CssAtPageEndToken")) - { - $tokens[$i]->IsLast = true; - } - } - return 0; - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} will remove any empty rulesets (including @keyframes at-rule block - * rulesets). - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRemoveEmptyRulesetsMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - $current = get_class($tokens[$i]); - $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; - if (($current === "CssRulesetStartToken" && $next === "CssRulesetEndToken") || - ($current === "CssAtKeyframesRulesetStartToken" && $next === "CssAtKeyframesRulesetEndToken" && !array_intersect(array("from", "0%", "to", "100%"), array_map("strtolower", $tokens[$i]->Selectors))) - ) - { - $tokens[$i] = null; - $tokens[$i + 1] = null; - $i++; - $r = $r + 2; - } - } - return $r; - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} will remove any empty @font-face, @keyframes, @media and @page - * at-rule blocks. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRemoveEmptyAtBlocksMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - $current = get_class($tokens[$i]); - $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; - if (($current === "CssAtFontFaceStartToken" && $next === "CssAtFontFaceEndToken") || - ($current === "CssAtKeyframesStartToken" && $next === "CssAtKeyframesEndToken") || - ($current === "CssAtPageStartToken" && $next === "CssAtPageEndToken") || - ($current === "CssAtMediaStartToken" && $next === "CssAtMediaEndToken")) - { - $tokens[$i] = null; - $tokens[$i + 1] = null; - $i++; - $r = $r + 2; - } - } - return $r; - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} will remove any comments from the array of parsed tokens. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssRemoveCommentsMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - if (get_class($tokens[$i]) === "CssCommentToken") - { - $tokens[$i] = null; - $r++; - } - } - return $r; - } - } - -/** - * CSS Parser. - * - * @package CssMin/Parser - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssParser - { - /** - * Parse buffer. - * - * @var string - */ - private $buffer = ""; - /** - * {@link aCssParserPlugin Plugins}. - * - * @var array - */ - private $plugins = array(); - /** - * Source to parse. - * - * @var string - */ - private $source = ""; - /** - * Current state. - * - * @var integer - */ - private $state = "T_DOCUMENT"; - /** - * Exclusive state. - * - * @var string - */ - private $stateExclusive = false; - /** - * Media types state. - * - * @var mixed - */ - private $stateMediaTypes = false; - /** - * State stack. - * - * @var array - */ - private $states = array("T_DOCUMENT"); - /** - * Parsed tokens. - * - * @var array - */ - private $tokens = array(); - /** - * Constructer. - * - * Create instances of the used {@link aCssParserPlugin plugins}. - * - * @param string $source CSS source [optional] - * @param array $plugins Plugin configuration [optional] - * @return void - */ - public function __construct($source = null, array $plugins = null) - { - $plugins = array_merge(array - ( - "Comment" => true, - "String" => true, - "Url" => true, - "Expression" => true, - "Ruleset" => true, - "AtCharset" => true, - "AtFontFace" => true, - "AtImport" => true, - "AtKeyframes" => true, - "AtMedia" => true, - "AtPage" => true, - "AtVariables" => true - ), is_array($plugins) ? $plugins : array()); - // Create plugin instances - foreach ($plugins as $name => $config) - { - if ($config !== false) - { - $class = "Css" . $name . "ParserPlugin"; - $config = is_array($config) ? $config : array(); - if (class_exists($class)) - { - $this->plugins[] = new $class($this, $config); - } - else - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin " . $name . " with the class name " . $class . " was not found")); - } - } - } - if (!is_null($source)) - { - $this->parse($source); - } - } - /** - * Append a token to the array of tokens. - * - * @param aCssToken $token Token to append - * @return void - */ - public function appendToken(aCssToken $token) - { - $this->tokens[] = $token; - } - /** - * Clears the current buffer. - * - * @return void - */ - public function clearBuffer() - { - $this->buffer = ""; - } - /** - * Returns and clear the current buffer. - * - * @param string $trim Chars to use to trim the returned buffer - * @param boolean $tolower if TRUE the returned buffer will get converted to lower case - * @return string - */ - public function getAndClearBuffer($trim = "", $tolower = false) - { - $r = $this->getBuffer($trim, $tolower); - $this->buffer = ""; - return $r; - } - /** - * Returns the current buffer. - * - * @param string $trim Chars to use to trim the returned buffer - * @param boolean $tolower if TRUE the returned buffer will get converted to lower case - * @return string - */ - public function getBuffer($trim = "", $tolower = false) - { - $r = $this->buffer; - if ($trim) - { - $r = trim($r, " \t\n\r\0\x0B" . $trim); - } - if ($tolower) - { - $r = strtolower($r); - } - return $r; - } - /** - * Returns the current media types state. - * - * @return array - */ - public function getMediaTypes() - { - return $this->stateMediaTypes; - } - /** - * Returns the CSS source. - * - * @return string - */ - public function getSource() - { - return $this->source; - } - /** - * Returns the current state. - * - * @return integer The current state - */ - public function getState() - { - return $this->state; - } - /** - * Returns a plugin by class name. - * - * @param string $name Class name of the plugin - * @return aCssParserPlugin - */ - public function getPlugin($class) - { - static $index = null; - if (is_null($index)) - { - $index = array(); - for ($i = 0, $l = count($this->plugins); $i < $l; $i++) - { - $index[get_class($this->plugins[$i])] = $i; - } - } - return isset($index[$class]) ? $this->plugins[$index[$class]] : false; - } - /** - * Returns the parsed tokens. - * - * @return array - */ - public function getTokens() - { - return $this->tokens; - } - /** - * Returns if the current state equals the passed state. - * - * @param integer $state State to compare with the current state - * @return boolean TRUE is the state equals to the passed state; FALSE if not - */ - public function isState($state) - { - return ($this->state == $state); - } - /** - * Parse the CSS source and return a array with parsed tokens. - * - * @param string $source CSS source - * @return array Array with tokens - */ - public function parse($source) - { - // Reset - $this->source = ""; - $this->tokens = array(); - // Create a global and plugin lookup table for trigger chars; set array of plugins as local variable and create - // several helper variables for plugin handling - $globalTriggerChars = ""; - $plugins = $this->plugins; - $pluginCount = count($plugins); - $pluginIndex = array(); - $pluginTriggerStates = array(); - $pluginTriggerChars = array(); - for ($i = 0, $l = count($plugins); $i < $l; $i++) - { - $tPluginClassName = get_class($plugins[$i]); - $pluginTriggerChars[$i] = implode("", $plugins[$i]->getTriggerChars()); - $tPluginTriggerStates = $plugins[$i]->getTriggerStates(); - $pluginTriggerStates[$i] = $tPluginTriggerStates === false ? false : "|" . implode("|", $tPluginTriggerStates) . "|"; - $pluginIndex[$tPluginClassName] = $i; - for ($ii = 0, $ll = strlen($pluginTriggerChars[$i]); $ii < $ll; $ii++) - { - $c = substr($pluginTriggerChars[$i], $ii, 1); - if (strpos($globalTriggerChars, $c) === false) - { - $globalTriggerChars .= $c; - } - } - } - // Normalise line endings - $source = str_replace("\r\n", "\n", $source); // Windows to Unix line endings - $source = str_replace("\r", "\n", $source); // Mac to Unix line endings - $this->source = $source; - // Variables - $buffer = &$this->buffer; - $exclusive = &$this->stateExclusive; - $state = &$this->state; - $c = $p = null; - // -- - for ($i = 0, $l = strlen($source); $i < $l; $i++) - { - // Set the current Char - $c = $source[$i]; // Is faster than: $c = substr($source, $i, 1); - // Normalize and filter double whitespace characters - if ($exclusive === false) - { - if ($c === "\n" || $c === "\t") - { - $c = " "; - } - if ($c === " " && $p === " ") - { - continue; - } - } - $buffer .= $c; - // Extended processing only if the current char is a global trigger char - if (strpos($globalTriggerChars, $c) !== false) - { - // Exclusive state is set; process with the exclusive plugin - if ($exclusive) - { - $tPluginIndex = $pluginIndex[$exclusive]; - if (strpos($pluginTriggerChars[$tPluginIndex], $c) !== false && ($pluginTriggerStates[$tPluginIndex] === false || strpos($pluginTriggerStates[$tPluginIndex], $state) !== false)) - { - $r = $plugins[$tPluginIndex]->parse($i, $c, $p, $state); - // Return value is TRUE => continue with next char - if ($r === true) - { - continue; - } - // Return value is numeric => set new index and continue with next char - elseif ($r !== false && $r != $i) - { - $i = $r; - continue; - } - } - } - // Else iterate through the plugins - else - { - $triggerState = "|" . $state . "|"; - for ($ii = 0, $ll = $pluginCount; $ii < $ll; $ii++) - { - // Only process if the current char is one of the plugin trigger chars - if (strpos($pluginTriggerChars[$ii], $c) !== false && ($pluginTriggerStates[$ii] === false || strpos($pluginTriggerStates[$ii], $triggerState) !== false)) - { - // Process with the plugin - $r = $plugins[$ii]->parse($i, $c, $p, $state); - // Return value is TRUE => break the plugin loop and and continue with next char - if ($r === true) - { - break; - } - // Return value is numeric => set new index, break the plugin loop and and continue with next char - elseif ($r !== false && $r != $i) - { - $i = $r; - break; - } - } - } - } - } - $p = $c; // Set the parent char - } - return $this->tokens; - } - /** - * Remove the last state of the state stack and return the removed stack value. - * - * @return integer Removed state value - */ - public function popState() - { - $r = array_pop($this->states); - $this->state = $this->states[count($this->states) - 1]; - return $r; - } - /** - * Adds a new state onto the state stack. - * - * @param integer $state State to add onto the state stack. - * @return integer The index of the added state in the state stacks - */ - public function pushState($state) - { - $r = array_push($this->states, $state); - $this->state = $this->states[count($this->states) - 1]; - return $r; - } - /** - * Sets/restores the buffer. - * - * @param string $buffer Buffer to set - * @return void - */ - public function setBuffer($buffer) - { - $this->buffer = $buffer; - } - /** - * Set the exclusive state. - * - * @param string $exclusive Exclusive state - * @return void - */ - public function setExclusive($exclusive) - { - $this->stateExclusive = $exclusive; - } - /** - * Set the media types state. - * - * @param array $mediaTypes Media types state - * @return void - */ - public function setMediaTypes(array $mediaTypes) - { - $this->stateMediaTypes = $mediaTypes; - } - /** - * Sets the current state in the state stack; equals to {@link CssParser::popState()} + {@link CssParser::pushState()}. - * - * @param integer $state State to set - * @return integer - */ - public function setState($state) - { - $r = array_pop($this->states); - array_push($this->states, $state); - $this->state = $this->states[count($this->states) - 1]; - return $r; - } - /** - * Removes the exclusive state. - * - * @return void - */ - public function unsetExclusive() - { - $this->stateExclusive = false; - } - /** - * Removes the media types state. - * - * @return void - */ - public function unsetMediaTypes() - { - $this->stateMediaTypes = false; - } - } - -/** - * {@link aCssFromatter Formatter} returning the CSS source in {@link http://goo.gl/j4XdU OTBS indent style} (The One True Brace Style). - * - * @package CssMin/Formatter - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssOtbsFormatter extends aCssFormatter - { - /** - * Implements {@link aCssFormatter::__toString()}. - * - * @return string - */ - public function __toString() - { - $r = array(); - $level = 0; - for ($i = 0, $l = count($this->tokens); $i < $l; $i++) - { - $token = $this->tokens[$i]; - $class = get_class($token); - $indent = str_repeat($this->indent, $level); - if ($class === "CssCommentToken") - { - $lines = array_map("trim", explode("\n", $token->Comment)); - for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) - { - $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; - } - } - elseif ($class === "CssAtCharsetToken") - { - $r[] = $indent . "@charset " . $token->Charset . ";"; - } - elseif ($class === "CssAtFontFaceStartToken") - { - $r[] = $indent . "@font-face {"; - $level++; - } - elseif ($class === "CssAtImportToken") - { - $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; - } - elseif ($class === "CssAtKeyframesStartToken") - { - $r[] = $indent . "@keyframes \"" . $token->Name . "\" {"; - $level++; - } - elseif ($class === "CssAtMediaStartToken") - { - $r[] = $indent . "@media " . implode(", ", $token->MediaTypes) . " {"; - $level++; - } - elseif ($class === "CssAtPageStartToken") - { - $r[] = $indent . "@page {"; - $level++; - } - elseif ($class === "CssAtVariablesStartToken") - { - $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes) . " {"; - $level++; - } - elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") - { - $r[] = $indent . implode(", ", $token->Selectors) . " {"; - $level++; - } - elseif ($class == "CssAtFontFaceDeclarationToken" - || $class === "CssAtKeyframesRulesetDeclarationToken" - || $class === "CssAtPageDeclarationToken" - || $class == "CssAtVariablesDeclarationToken" - || $class === "CssRulesetDeclarationToken" - ) - { - $declaration = $indent . $token->Property . ": "; - if ($this->padding) - { - $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); - } - $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; - } - elseif ($class === "CssAtFontFaceEndToken" - || $class === "CssAtMediaEndToken" - || $class === "CssAtKeyframesEndToken" - || $class === "CssAtKeyframesRulesetEndToken" - || $class === "CssAtPageEndToken" - || $class === "CssAtVariablesEndToken" - || $class === "CssRulesetEndToken" - ) - { - $level--; - $r[] = str_repeat($indent, $level) . "}"; - } - } - return implode("\n", $r); - } - } - -/** - * This {@link aCssToken CSS token} is a utility token that extends {@link aNullToken} and returns only a empty string. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssNullToken extends aCssToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return ""; - } - } - -/** - * CSS Minifier. - * - * @package CssMin/Minifier - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssMinifier - { - /** - * {@link aCssMinifierFilter Filters}. - * - * @var array - */ - private $filters = array(); - /** - * {@link aCssMinifierPlugin Plugins}. - * - * @var array - */ - private $plugins = array(); - /** - * Minified source. - * - * @var string - */ - private $minified = ""; - /** - * Constructer. - * - * Creates instances of {@link aCssMinifierFilter filters} and {@link aCssMinifierPlugin plugins}. - * - * @param string $source CSS source [optional] - * @param array $filters Filter configuration [optional] - * @param array $plugins Plugin configuration [optional] - * @return void - */ - public function __construct($source = null, array $filters = null, array $plugins = null) - { - $filters = array_merge(array - ( - "ImportImports" => false, - "RemoveComments" => true, - "RemoveEmptyRulesets" => true, - "RemoveEmptyAtBlocks" => true, - "ConvertLevel3Properties" => false, - "ConvertLevel3AtKeyframes" => false, - "Variables" => true, - "RemoveLastDelarationSemiColon" => true - ), is_array($filters) ? $filters : array()); - $plugins = array_merge(array - ( - "Variables" => true, - "ConvertFontWeight" => false, - "ConvertHslColors" => false, - "ConvertRgbColors" => false, - "ConvertNamedColors" => false, - "CompressColorValues" => false, - "CompressUnitValues" => false, - "CompressExpressionValues" => false - ), is_array($plugins) ? $plugins : array()); - // Filters - foreach ($filters as $name => $config) - { - if ($config !== false) - { - $class = "Css" . $name . "MinifierFilter"; - $config = is_array($config) ? $config : array(); - if (class_exists($class)) - { - $this->filters[] = new $class($this, $config); - } - else - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The filter " . $name . " with the class name " . $class . " was not found")); - } - } - } - // Plugins - foreach ($plugins as $name => $config) - { - if ($config !== false) - { - $class = "Css" . $name . "MinifierPlugin"; - $config = is_array($config) ? $config : array(); - if (class_exists($class)) - { - $this->plugins[] = new $class($this, $config); - } - else - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin " . $name . " with the class name " . $class . " was not found")); - } - } - } - // -- - if (!is_null($source)) - { - $this->minify($source); - } - } - /** - * Returns the minified Source. - * - * @return string - */ - public function getMinified() - { - return $this->minified; - } - /** - * Returns a plugin by class name. - * - * @param string $name Class name of the plugin - * @return aCssMinifierPlugin - */ - public function getPlugin($class) - { - static $index = null; - if (is_null($index)) - { - $index = array(); - for ($i = 0, $l = count($this->plugins); $i < $l; $i++) - { - $index[get_class($this->plugins[$i])] = $i; - } - } - return isset($index[$class]) ? $this->plugins[$index[$class]] : false; - } - /** - * Minifies the CSS source. - * - * @param string $source CSS source - * @return string - */ - public function minify($source) - { - // Variables - $r = ""; - $parser = new CssParser($source); - $tokens = $parser->getTokens(); - $filters = $this->filters; - $filterCount = count($this->filters); - $plugins = $this->plugins; - $pluginCount = count($plugins); - $pluginIndex = array(); - $pluginTriggerTokens = array(); - $globalTriggerTokens = array(); - for ($i = 0, $l = count($plugins); $i < $l; $i++) - { - $tPluginClassName = get_class($plugins[$i]); - $pluginTriggerTokens[$i] = $plugins[$i]->getTriggerTokens(); - foreach ($pluginTriggerTokens[$i] as $v) - { - if (!in_array($v, $globalTriggerTokens)) - { - $globalTriggerTokens[] = $v; - } - } - $pluginTriggerTokens[$i] = "|" . implode("|", $pluginTriggerTokens[$i]) . "|"; - $pluginIndex[$tPluginClassName] = $i; - } - $globalTriggerTokens = "|" . implode("|", $globalTriggerTokens) . "|"; - /* - * Apply filters - */ - for($i = 0; $i < $filterCount; $i++) - { - // Apply the filter; if the return value is larger than 0... - if ($filters[$i]->apply($tokens) > 0) - { - // ...then filter null values and rebuild the token array - $tokens = array_values(array_filter($tokens)); - } - } - $tokenCount = count($tokens); - /* - * Apply plugins - */ - for($i = 0; $i < $tokenCount; $i++) - { - $triggerToken = "|" . get_class($tokens[$i]) . "|"; - if (strpos($globalTriggerTokens, $triggerToken) !== false) - { - for($ii = 0; $ii < $pluginCount; $ii++) - { - if (strpos($pluginTriggerTokens[$ii], $triggerToken) !== false || $pluginTriggerTokens[$ii] === false) - { - // Apply the plugin; if the return value is TRUE continue to the next token - if ($plugins[$ii]->apply($tokens[$i]) === true) - { - continue 2; - } - } - } - } - } - // Stringify the tokens - for($i = 0; $i < $tokenCount; $i++) - { - $r .= (string) $tokens[$i]; - } - $this->minified = $r; - return $r; - } - } - -/** - * CssMin - A (simple) css minifier with benefits - * - * -- - * Copyright (c) 2011 Joe Scylla - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * -- - * - * @package CssMin - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssMin - { - /** - * Index of classes - * - * @var array - */ - private static $classIndex = array(); - /** - * Parse/minify errors - * - * @var array - */ - private static $errors = array(); - /** - * Verbose output. - * - * @var boolean - */ - private static $isVerbose = false; - /** - * {@link http://goo.gl/JrW54 Autoload} function of CssMin. - * - * @param string $class Name of the class - * @return void - */ - public static function autoload($class) - { - if (isset(self::$classIndex[$class])) - { - require(self::$classIndex[$class]); - } - } - /** - * Return errors - * - * @return array of {CssError}. - */ - public static function getErrors() - { - return self::$errors; - } - /** - * Returns if there were errors. - * - * @return boolean - */ - public static function hasErrors() - { - return count(self::$errors) > 0; - } - /** - * Initialises CssMin. - * - * @return void - */ - public static function initialise() - { - // Create the class index for autoloading or including - $paths = array(dirname(__FILE__)); - while (list($i, $path) = each($paths)) - { - $subDirectorys = glob($path . "*", GLOB_MARK | GLOB_ONLYDIR | GLOB_NOSORT); - if (is_array($subDirectorys)) - { - foreach ($subDirectorys as $subDirectory) - { - $paths[] = $subDirectory; - } - } - $files = glob($path . "*.php", 0); - if (is_array($files)) - { - foreach ($files as $file) - { - $class = substr(basename($file), 0, -4); - self::$classIndex[$class] = $file; - } - } - } - krsort(self::$classIndex); - // Only use autoloading if spl_autoload_register() is available and no __autoload() is defined (because - // __autoload() breaks if spl_autoload_register() is used. - if (function_exists("spl_autoload_register") && !is_callable("__autoload")) - { - spl_autoload_register(array(__CLASS__, "autoload")); - } - // Otherwise include all class files - else - { - foreach (self::$classIndex as $class => $file) - { - if (!class_exists($class)) - { - require_once($file); - } - } - } - } - /** - * Minifies CSS source. - * - * @param string $source CSS source - * @param array $filters Filter configuration [optional] - * @param array $plugins Plugin configuration [optional] - * @return string Minified CSS - */ - public static function minify($source, array $filters = null, array $plugins = null) - { - self::$errors = array(); - $minifier = new CssMinifier($source, $filters, $plugins); - return $minifier->getMinified(); - } - /** - * Parse the CSS source. - * - * @param string $source CSS source - * @param array $plugins Plugin configuration [optional] - * @return array Array of aCssToken - */ - public static function parse($source, array $plugins = null) - { - self::$errors = array(); - $parser = new CssParser($source, $plugins); - return $parser->getTokens(); - } - /** - * -- - * - * @param boolean $to - * @return boolean - */ - public static function setVerbose($to) - { - self::$isVerbose = (boolean) $to; - return self::$isVerbose; - } - /** - * -- - * - * @param CssError $error - * @return void - */ - public static function triggerError(CssError $error) - { - self::$errors[] = $error; - if (self::$isVerbose) - { - trigger_error((string) $error, E_USER_WARNING); - } - } - } -// Initialises CssMin -CssMin::initialise(); - -/** - * This {@link aCssMinifierFilter minifier filter} import external css files defined with the @import at-rule into the - * current stylesheet. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssImportImportsMinifierFilter extends aCssMinifierFilter - { - /** - * Array with already imported external stylesheets. - * - * @var array - */ - private $imported = array(); - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - if (!isset($this->configuration["BasePath"]) || !is_dir($this->configuration["BasePath"])) - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Base path " . ($this->configuration["BasePath"] ? $this->configuration["BasePath"] : "null"). " is not a directory")); - return 0; - } - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - if (get_class($tokens[$i]) === "CssAtImportToken") - { - $import = $this->configuration["BasePath"] . "/" . $tokens[$i]->Import; - // Import file was not found/is not a file - if (!is_file($import)) - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file " . $import. " was not found.", (string) $tokens[$i])); - } - // Import file already imported; remove this @import at-rule to prevent recursions - elseif (in_array($import, $this->imported)) - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file " . $import. " was already imported.", (string) $tokens[$i])); - $tokens[$i] = null; - } - else - { - $this->imported[] = $import; - $parser = new CssParser(file_get_contents($import)); - $import = $parser->getTokens(); - // The @import at-rule has media types defined requiring special handling - if (count($tokens[$i]->MediaTypes) > 0 && !(count($tokens[$i]->MediaTypes) == 1 && $tokens[$i]->MediaTypes[0] == "all")) - { - $blocks = array(); - /* - * Filter or set media types of @import at-rule or remove the @import at-rule if no media type is matching the parent @import at-rule - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - if (get_class($import[$ii]) === "CssAtImportToken") - { - // @import at-rule defines no media type or only the "all" media type; set the media types to the one defined in the parent @import at-rule - if (count($import[$ii]->MediaTypes) == 0 || (count($import[$ii]->MediaTypes) == 1 && $import[$ii]->MediaTypes[0] == "all")) - { - $import[$ii]->MediaTypes = $tokens[$i]->MediaTypes; - } - // @import at-rule defineds one or more media types; filter out media types not matching with the parent @import at-rule - elseif (count($import[$ii]->MediaTypes > 0)) - { - foreach ($import[$ii]->MediaTypes as $index => $mediaType) - { - if (!in_array($mediaType, $tokens[$i]->MediaTypes)) - { - unset($import[$ii]->MediaTypes[$index]); - } - } - $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); - // If there are no media types left in the @import at-rule remove the @import at-rule - if (count($import[$ii]->MediaTypes) == 0) - { - $import[$ii] = null; - } - } - } - } - /* - * Remove media types of @media at-rule block not defined in the @import at-rule - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - if (get_class($import[$ii]) === "CssAtMediaStartToken") - { - foreach ($import[$ii]->MediaTypes as $index => $mediaType) - { - if (!in_array($mediaType, $tokens[$i]->MediaTypes)) - { - unset($import[$ii]->MediaTypes[$index]); - } - $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); - } - } - } - /* - * If no media types left of the @media at-rule block remove the complete block - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - if (get_class($import[$ii]) === "CssAtMediaStartToken") - { - if (count($import[$ii]->MediaTypes) === 0) - { - for ($iii = $ii; $iii < $ll; $iii++) - { - if (get_class($import[$iii]) === "CssAtMediaEndToken") - { - break; - } - } - if (get_class($import[$iii]) === "CssAtMediaEndToken") - { - array_splice($import, $ii, $iii - $ii + 1, array()); - $ll = count($import); - } - } - } - } - /* - * If the media types of the @media at-rule equals the media types defined in the @import - * at-rule remove the CssAtMediaStartToken and CssAtMediaEndToken token - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - if (get_class($import[$ii]) === "CssAtMediaStartToken" && count(array_diff($tokens[$i]->MediaTypes, $import[$ii]->MediaTypes)) === 0) - { - for ($iii = $ii; $iii < $ll; $iii++) - { - if (get_class($import[$iii]) == "CssAtMediaEndToken") - { - break; - } - } - if (get_class($import[$iii]) == "CssAtMediaEndToken") - { - unset($import[$ii]); - unset($import[$iii]); - $import = array_values($import); - $ll = count($import); - } - } - } - /** - * Extract CssAtImportToken and CssAtCharsetToken tokens - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - $class = get_class($import[$ii]); - if ($class === "CssAtImportToken" || $class === "CssAtCharsetToken") - { - $blocks = array_merge($blocks, array_splice($import, $ii, 1, array())); - $ll = count($import); - } - } - /* - * Extract the @font-face, @media and @page at-rule block - */ - for($ii = 0, $ll = count($import); $ii < $ll; $ii++) - { - $class = get_class($import[$ii]); - if ($class === "CssAtFontFaceStartToken" || $class === "CssAtMediaStartToken" || $class === "CssAtPageStartToken" || $class === "CssAtVariablesStartToken") - { - for ($iii = $ii; $iii < $ll; $iii++) - { - $class = get_class($import[$iii]); - if ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken") - { - break; - } - } - $class = get_class($import[$iii]); - if (isset($import[$iii]) && ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken")) - { - $blocks = array_merge($blocks, array_splice($import, $ii, $iii - $ii + 1, array())); - $ll = count($import); - } - } - } - // Create the import array with extracted tokens and the rulesets wrapped into a @media at-rule block - $import = array_merge($blocks, array(new CssAtMediaStartToken($tokens[$i]->MediaTypes)), $import, array(new CssAtMediaEndToken())); - } - // Insert the imported tokens - array_splice($tokens, $i, 1, $import); - // Modify parameters of the for-loop - $i--; - $l = count($tokens); - } - } - } - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for preserve parsing expression() declaration values. - * - * This plugin return no {@link aCssToken CssToken} but ensures that expression() declaration values will get parsed - * properly. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssExpressionParserPlugin extends aCssParserPlugin - { - /** - * Count of left braces. - * - * @var integer - */ - private $leftBraces = 0; - /** - * Count of right braces. - * - * @var integer - */ - private $rightBraces = 0; - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("(", ")", ";", "}"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return false; - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of expression - if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 10, 11)) === "expression(" && $state !== "T_EXPRESSION") - { - $this->parser->pushState("T_EXPRESSION"); - $this->leftBraces++; - } - // Count left braces - elseif ($char === "(" && $state === "T_EXPRESSION") - { - $this->leftBraces++; - } - // Count right braces - elseif ($char === ")" && $state === "T_EXPRESSION") - { - $this->rightBraces++; - } - // Possible end of expression; if left and right braces are equal the expressen ends - elseif (($char === ";" || $char === "}") && $state === "T_EXPRESSION" && $this->leftBraces === $this->rightBraces) - { - $this->leftBraces = $this->rightBraces = 0; - $this->parser->popState(); - return $index - 1; - } - else - { - return false; - } - return true; - } - } - -/** - * CSS Error. - * - * @package CssMin - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssError - { - /** - * File. - * - * @var string - */ - public $File = ""; - /** - * Line. - * - * @var integer - */ - public $Line = 0; - /** - * Error message. - * - * @var string - */ - public $Message = ""; - /** - * Source. - * - * @var string - */ - public $Source = ""; - /** - * Constructor triggering the error. - * - * @param string $message Error message - * @param string $source Corresponding line [optional] - * @return void - */ - public function __construct($file, $line, $message, $source = "") - { - $this->File = $file; - $this->Line = $line; - $this->Message = $message; - $this->Source = $source; - } - /** - * Returns the error as formatted string. - * - * @return string - */ - public function __toString() - { - return $this->Message . ($this->Source ? ":
    " . $this->Source . "": "") . "
    in file " . $this->File . " at line " . $this->Line; - } - } - -/** - * This {@link aCssMinifierPlugin} will convert a color value in rgb notation to hexadecimal notation. - * - * Example: - * - * color: rgb(200,60%,5); - * - * - * Will get converted to: - * - * color:#c89905; - * - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertRgbColorsMinifierPlugin extends aCssMinifierPlugin - { - /** - * Regular expression matching the value. - * - * @var string - */ - private $reMatch = "/rgb\s*\(\s*([0-9%]+)\s*,\s*([0-9%]+)\s*,\s*([0-9%]+)\s*\)/iS"; - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (stripos($token->Value, "rgb") !== false && preg_match($this->reMatch, $token->Value, $m)) - { - for ($i = 1, $l = count($m); $i < $l; $i++) - { - if (strpos("%", $m[$i]) !== false) - { - $m[$i] = substr($m[$i], 0, -1); - $m[$i] = (int) (256 * ($m[$i] / 100)); - } - $m[$i] = str_pad(dechex($m[$i]), 2, "0", STR_PAD_LEFT); - } - $token->Value = str_replace($m[0], "#" . $m[1] . $m[2] . $m[3], $token->Value); - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssMinifierPlugin} will convert named color values to hexadecimal notation. - * - * Example: - * - * color: black; - * border: 1px solid indigo; - * - * - * Will get converted to: - * - * color:#000; - * border:1px solid #4b0082; - * - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertNamedColorsMinifierPlugin extends aCssMinifierPlugin - { - - /** - * Regular expression matching the value. - * - * @var string - */ - private $reMatch = null; - /** - * Regular expression replacing the value. - * - * @var string - */ - private $reReplace = "\"\${1}\" . \$this->transformation[strtolower(\"\${2}\")] . \"\${3}\""; - /** - * Transformation table used by the {@link CssConvertNamedColorsMinifierPlugin::$reReplace replace regular expression}. - * - * @var array - */ - private $transformation = array - ( - "aliceblue" => "#f0f8ff", - "antiquewhite" => "#faebd7", - "aqua" => "#0ff", - "aquamarine" => "#7fffd4", - "azure" => "#f0ffff", - "beige" => "#f5f5dc", - "black" => "#000", - "blue" => "#00f", - "blueviolet" => "#8a2be2", - "brown" => "#a52a2a", - "burlywood" => "#deb887", - "cadetblue" => "#5f9ea0", - "chartreuse" => "#7fff00", - "chocolate" => "#d2691e", - "coral" => "#ff7f50", - "cornflowerblue" => "#6495ed", - "cornsilk" => "#fff8dc", - "crimson" => "#dc143c", - "darkblue" => "#00008b", - "darkcyan" => "#008b8b", - "darkgoldenrod" => "#b8860b", - "darkgray" => "#a9a9a9", - "darkgreen" => "#006400", - "darkkhaki" => "#bdb76b", - "darkmagenta" => "#8b008b", - "darkolivegreen" => "#556b2f", - "darkorange" => "#ff8c00", - "darkorchid" => "#9932cc", - "darkred" => "#8b0000", - "darksalmon" => "#e9967a", - "darkseagreen" => "#8fbc8f", - "darkslateblue" => "#483d8b", - "darkslategray" => "#2f4f4f", - "darkturquoise" => "#00ced1", - "darkviolet" => "#9400d3", - "deeppink" => "#ff1493", - "deepskyblue" => "#00bfff", - "dimgray" => "#696969", - "dodgerblue" => "#1e90ff", - "firebrick" => "#b22222", - "floralwhite" => "#fffaf0", - "forestgreen" => "#228b22", - "fuchsia" => "#f0f", - "gainsboro" => "#dcdcdc", - "ghostwhite" => "#f8f8ff", - "gold" => "#ffd700", - "goldenrod" => "#daa520", - "gray" => "#808080", - "green" => "#008000", - "greenyellow" => "#adff2f", - "honeydew" => "#f0fff0", - "hotpink" => "#ff69b4", - "indianred" => "#cd5c5c", - "indigo" => "#4b0082", - "ivory" => "#fffff0", - "khaki" => "#f0e68c", - "lavender" => "#e6e6fa", - "lavenderblush" => "#fff0f5", - "lawngreen" => "#7cfc00", - "lemonchiffon" => "#fffacd", - "lightblue" => "#add8e6", - "lightcoral" => "#f08080", - "lightcyan" => "#e0ffff", - "lightgoldenrodyellow" => "#fafad2", - "lightgreen" => "#90ee90", - "lightgrey" => "#d3d3d3", - "lightpink" => "#ffb6c1", - "lightsalmon" => "#ffa07a", - "lightseagreen" => "#20b2aa", - "lightskyblue" => "#87cefa", - "lightslategray" => "#789", - "lightsteelblue" => "#b0c4de", - "lightyellow" => "#ffffe0", - "lime" => "#0f0", - "limegreen" => "#32cd32", - "linen" => "#faf0e6", - "maroon" => "#800000", - "mediumaquamarine" => "#66cdaa", - "mediumblue" => "#0000cd", - "mediumorchid" => "#ba55d3", - "mediumpurple" => "#9370db", - "mediumseagreen" => "#3cb371", - "mediumslateblue" => "#7b68ee", - "mediumspringgreen" => "#00fa9a", - "mediumturquoise" => "#48d1cc", - "mediumvioletred" => "#c71585", - "midnightblue" => "#191970", - "mintcream" => "#f5fffa", - "mistyrose" => "#ffe4e1", - "moccasin" => "#ffe4b5", - "navajowhite" => "#ffdead", - "navy" => "#000080", - "oldlace" => "#fdf5e6", - "olive" => "#808000", - "olivedrab" => "#6b8e23", - "orange" => "#ffa500", - "orangered" => "#ff4500", - "orchid" => "#da70d6", - "palegoldenrod" => "#eee8aa", - "palegreen" => "#98fb98", - "paleturquoise" => "#afeeee", - "palevioletred" => "#db7093", - "papayawhip" => "#ffefd5", - "peachpuff" => "#ffdab9", - "peru" => "#cd853f", - "pink" => "#ffc0cb", - "plum" => "#dda0dd", - "powderblue" => "#b0e0e6", - "purple" => "#800080", - "red" => "#f00", - "rosybrown" => "#bc8f8f", - "royalblue" => "#4169e1", - "saddlebrown" => "#8b4513", - "salmon" => "#fa8072", - "sandybrown" => "#f4a460", - "seagreen" => "#2e8b57", - "seashell" => "#fff5ee", - "sienna" => "#a0522d", - "silver" => "#c0c0c0", - "skyblue" => "#87ceeb", - "slateblue" => "#6a5acd", - "slategray" => "#708090", - "snow" => "#fffafa", - "springgreen" => "#00ff7f", - "steelblue" => "#4682b4", - "tan" => "#d2b48c", - "teal" => "#008080", - "thistle" => "#d8bfd8", - "tomato" => "#ff6347", - "turquoise" => "#40e0d0", - "violet" => "#ee82ee", - "wheat" => "#f5deb3", - "white" => "#fff", - "whitesmoke" => "#f5f5f5", - "yellow" => "#ff0", - "yellowgreen" => "#9acd32" - ); - /** - * Overwrites {@link aCssMinifierPlugin::__construct()}. - * - * The constructor will create the {@link CssConvertNamedColorsMinifierPlugin::$reReplace replace regular expression} - * based on the {@link CssConvertNamedColorsMinifierPlugin::$transformation transformation table}. - * - * @param CssMinifier $minifier The CssMinifier object of this plugin. - * @param array $configuration Plugin configuration [optional] - * @return void - */ - public function __construct(CssMinifier $minifier, array $configuration = array()) - { - $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)) . ")(\s|$)+/eiS"; - parent::__construct($minifier, $configuration); - } - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - $lcValue = strtolower($token->Value); - // Declaration value equals a value in the transformation table => simple replace - if (isset($this->transformation[$lcValue])) - { - $token->Value = $this->transformation[$lcValue]; - } - // Declaration value contains a value in the transformation table => regular expression replace - elseif (preg_match($this->reMatch, $token->Value)) - { - $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} triggers on CSS Level 3 properties and will add declaration tokens - * with browser-specific properties. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertLevel3PropertiesMinifierFilter extends aCssMinifierFilter - { - /** - * Css property transformations table. Used to convert CSS3 and proprietary properties to the browser-specific - * counterparts. - * - * @var array - */ - private $transformations = array - ( - // Property Array(Mozilla, Webkit, Opera, Internet Explorer); NULL values are placeholders and will get ignored - "animation" => array(null, "-webkit-animation", null, null), - "animation-delay" => array(null, "-webkit-animation-delay", null, null), - "animation-direction" => array(null, "-webkit-animation-direction", null, null), - "animation-duration" => array(null, "-webkit-animation-duration", null, null), - "animation-fill-mode" => array(null, "-webkit-animation-fill-mode", null, null), - "animation-iteration-count" => array(null, "-webkit-animation-iteration-count", null, null), - "animation-name" => array(null, "-webkit-animation-name", null, null), - "animation-play-state" => array(null, "-webkit-animation-play-state", null, null), - "animation-timing-function" => array(null, "-webkit-animation-timing-function", null, null), - "appearance" => array("-moz-appearance", "-webkit-appearance", null, null), - "backface-visibility" => array(null, "-webkit-backface-visibility", null, null), - "background-clip" => array(null, "-webkit-background-clip", null, null), - "background-composite" => array(null, "-webkit-background-composite", null, null), - "background-inline-policy" => array("-moz-background-inline-policy", null, null, null), - "background-origin" => array(null, "-webkit-background-origin", null, null), - "background-position-x" => array(null, null, null, "-ms-background-position-x"), - "background-position-y" => array(null, null, null, "-ms-background-position-y"), - "background-size" => array(null, "-webkit-background-size", null, null), - "behavior" => array(null, null, null, "-ms-behavior"), - "binding" => array("-moz-binding", null, null, null), - "border-after" => array(null, "-webkit-border-after", null, null), - "border-after-color" => array(null, "-webkit-border-after-color", null, null), - "border-after-style" => array(null, "-webkit-border-after-style", null, null), - "border-after-width" => array(null, "-webkit-border-after-width", null, null), - "border-before" => array(null, "-webkit-border-before", null, null), - "border-before-color" => array(null, "-webkit-border-before-color", null, null), - "border-before-style" => array(null, "-webkit-border-before-style", null, null), - "border-before-width" => array(null, "-webkit-border-before-width", null, null), - "border-border-bottom-colors" => array("-moz-border-bottom-colors", null, null, null), - "border-bottom-left-radius" => array("-moz-border-radius-bottomleft", "-webkit-border-bottom-left-radius", null, null), - "border-bottom-right-radius" => array("-moz-border-radius-bottomright", "-webkit-border-bottom-right-radius", null, null), - "border-end" => array("-moz-border-end", "-webkit-border-end", null, null), - "border-end-color" => array("-moz-border-end-color", "-webkit-border-end-color", null, null), - "border-end-style" => array("-moz-border-end-style", "-webkit-border-end-style", null, null), - "border-end-width" => array("-moz-border-end-width", "-webkit-border-end-width", null, null), - "border-fit" => array(null, "-webkit-border-fit", null, null), - "border-horizontal-spacing" => array(null, "-webkit-border-horizontal-spacing", null, null), - "border-image" => array("-moz-border-image", "-webkit-border-image", null, null), - "border-left-colors" => array("-moz-border-left-colors", null, null, null), - "border-radius" => array("-moz-border-radius", "-webkit-border-radius", null, null), - "border-border-right-colors" => array("-moz-border-right-colors", null, null, null), - "border-start" => array("-moz-border-start", "-webkit-border-start", null, null), - "border-start-color" => array("-moz-border-start-color", "-webkit-border-start-color", null, null), - "border-start-style" => array("-moz-border-start-style", "-webkit-border-start-style", null, null), - "border-start-width" => array("-moz-border-start-width", "-webkit-border-start-width", null, null), - "border-top-colors" => array("-moz-border-top-colors", null, null, null), - "border-top-left-radius" => array("-moz-border-radius-topleft", "-webkit-border-top-left-radius", null, null), - "border-top-right-radius" => array("-moz-border-radius-topright", "-webkit-border-top-right-radius", null, null), - "border-vertical-spacing" => array(null, "-webkit-border-vertical-spacing", null, null), - "box-align" => array("-moz-box-align", "-webkit-box-align", null, null), - "box-direction" => array("-moz-box-direction", "-webkit-box-direction", null, null), - "box-flex" => array("-moz-box-flex", "-webkit-box-flex", null, null), - "box-flex-group" => array(null, "-webkit-box-flex-group", null, null), - "box-flex-lines" => array(null, "-webkit-box-flex-lines", null, null), - "box-ordinal-group" => array("-moz-box-ordinal-group", "-webkit-box-ordinal-group", null, null), - "box-orient" => array("-moz-box-orient", "-webkit-box-orient", null, null), - "box-pack" => array("-moz-box-pack", "-webkit-box-pack", null, null), - "box-reflect" => array(null, "-webkit-box-reflect", null, null), - "box-shadow" => array("-moz-box-shadow", "-webkit-box-shadow", null, null), - "box-sizing" => array("-moz-box-sizing", null, null, null), - "color-correction" => array(null, "-webkit-color-correction", null, null), - "column-break-after" => array(null, "-webkit-column-break-after", null, null), - "column-break-before" => array(null, "-webkit-column-break-before", null, null), - "column-break-inside" => array(null, "-webkit-column-break-inside", null, null), - "column-count" => array("-moz-column-count", "-webkit-column-count", null, null), - "column-gap" => array("-moz-column-gap", "-webkit-column-gap", null, null), - "column-rule" => array("-moz-column-rule", "-webkit-column-rule", null, null), - "column-rule-color" => array("-moz-column-rule-color", "-webkit-column-rule-color", null, null), - "column-rule-style" => array("-moz-column-rule-style", "-webkit-column-rule-style", null, null), - "column-rule-width" => array("-moz-column-rule-width", "-webkit-column-rule-width", null, null), - "column-span" => array(null, "-webkit-column-span", null, null), - "column-width" => array("-moz-column-width", "-webkit-column-width", null, null), - "columns" => array(null, "-webkit-columns", null, null), - "filter" => array(__CLASS__, "filter"), - "float-edge" => array("-moz-float-edge", null, null, null), - "font-feature-settings" => array("-moz-font-feature-settings", null, null, null), - "font-language-override" => array("-moz-font-language-override", null, null, null), - "font-size-delta" => array(null, "-webkit-font-size-delta", null, null), - "font-smoothing" => array(null, "-webkit-font-smoothing", null, null), - "force-broken-image-icon" => array("-moz-force-broken-image-icon", null, null, null), - "highlight" => array(null, "-webkit-highlight", null, null), - "hyphenate-character" => array(null, "-webkit-hyphenate-character", null, null), - "hyphenate-locale" => array(null, "-webkit-hyphenate-locale", null, null), - "hyphens" => array(null, "-webkit-hyphens", null, null), - "force-broken-image-icon" => array("-moz-image-region", null, null, null), - "ime-mode" => array(null, null, null, "-ms-ime-mode"), - "interpolation-mode" => array(null, null, null, "-ms-interpolation-mode"), - "layout-flow" => array(null, null, null, "-ms-layout-flow"), - "layout-grid" => array(null, null, null, "-ms-layout-grid"), - "layout-grid-char" => array(null, null, null, "-ms-layout-grid-char"), - "layout-grid-line" => array(null, null, null, "-ms-layout-grid-line"), - "layout-grid-mode" => array(null, null, null, "-ms-layout-grid-mode"), - "layout-grid-type" => array(null, null, null, "-ms-layout-grid-type"), - "line-break" => array(null, "-webkit-line-break", null, "-ms-line-break"), - "line-clamp" => array(null, "-webkit-line-clamp", null, null), - "line-grid-mode" => array(null, null, null, "-ms-line-grid-mode"), - "logical-height" => array(null, "-webkit-logical-height", null, null), - "logical-width" => array(null, "-webkit-logical-width", null, null), - "margin-after" => array(null, "-webkit-margin-after", null, null), - "margin-after-collapse" => array(null, "-webkit-margin-after-collapse", null, null), - "margin-before" => array(null, "-webkit-margin-before", null, null), - "margin-before-collapse" => array(null, "-webkit-margin-before-collapse", null, null), - "margin-bottom-collapse" => array(null, "-webkit-margin-bottom-collapse", null, null), - "margin-collapse" => array(null, "-webkit-margin-collapse", null, null), - "margin-end" => array("-moz-margin-end", "-webkit-margin-end", null, null), - "margin-start" => array("-moz-margin-start", "-webkit-margin-start", null, null), - "margin-top-collapse" => array(null, "-webkit-margin-top-collapse", null, null), - "marquee " => array(null, "-webkit-marquee", null, null), - "marquee-direction" => array(null, "-webkit-marquee-direction", null, null), - "marquee-increment" => array(null, "-webkit-marquee-increment", null, null), - "marquee-repetition" => array(null, "-webkit-marquee-repetition", null, null), - "marquee-speed" => array(null, "-webkit-marquee-speed", null, null), - "marquee-style" => array(null, "-webkit-marquee-style", null, null), - "mask" => array(null, "-webkit-mask", null, null), - "mask-attachment" => array(null, "-webkit-mask-attachment", null, null), - "mask-box-image" => array(null, "-webkit-mask-box-image", null, null), - "mask-clip" => array(null, "-webkit-mask-clip", null, null), - "mask-composite" => array(null, "-webkit-mask-composite", null, null), - "mask-image" => array(null, "-webkit-mask-image", null, null), - "mask-origin" => array(null, "-webkit-mask-origin", null, null), - "mask-position" => array(null, "-webkit-mask-position", null, null), - "mask-position-x" => array(null, "-webkit-mask-position-x", null, null), - "mask-position-y" => array(null, "-webkit-mask-position-y", null, null), - "mask-repeat" => array(null, "-webkit-mask-repeat", null, null), - "mask-repeat-x" => array(null, "-webkit-mask-repeat-x", null, null), - "mask-repeat-y" => array(null, "-webkit-mask-repeat-y", null, null), - "mask-size" => array(null, "-webkit-mask-size", null, null), - "match-nearest-mail-blockquote-color" => array(null, "-webkit-match-nearest-mail-blockquote-color", null, null), - "max-logical-height" => array(null, "-webkit-max-logical-height", null, null), - "max-logical-width" => array(null, "-webkit-max-logical-width", null, null), - "min-logical-height" => array(null, "-webkit-min-logical-height", null, null), - "min-logical-width" => array(null, "-webkit-min-logical-width", null, null), - "object-fit" => array(null, null, "-o-object-fit", null), - "object-position" => array(null, null, "-o-object-position", null), - "opacity" => array(__CLASS__, "opacity"), - "outline-radius" => array("-moz-outline-radius", null, null, null), - "outline-bottom-left-radius" => array("-moz-outline-radius-bottomleft", null, null, null), - "outline-bottom-right-radius" => array("-moz-outline-radius-bottomright", null, null, null), - "outline-top-left-radius" => array("-moz-outline-radius-topleft", null, null, null), - "outline-top-right-radius" => array("-moz-outline-radius-topright", null, null, null), - "padding-after" => array(null, "-webkit-padding-after", null, null), - "padding-before" => array(null, "-webkit-padding-before", null, null), - "padding-end" => array("-moz-padding-end", "-webkit-padding-end", null, null), - "padding-start" => array("-moz-padding-start", "-webkit-padding-start", null, null), - "perspective" => array(null, "-webkit-perspective", null, null), - "perspective-origin" => array(null, "-webkit-perspective-origin", null, null), - "perspective-origin-x" => array(null, "-webkit-perspective-origin-x", null, null), - "perspective-origin-y" => array(null, "-webkit-perspective-origin-y", null, null), - "rtl-ordering" => array(null, "-webkit-rtl-ordering", null, null), - "scrollbar-3dlight-color" => array(null, null, null, "-ms-scrollbar-3dlight-color"), - "scrollbar-arrow-color" => array(null, null, null, "-ms-scrollbar-arrow-color"), - "scrollbar-base-color" => array(null, null, null, "-ms-scrollbar-base-color"), - "scrollbar-darkshadow-color" => array(null, null, null, "-ms-scrollbar-darkshadow-color"), - "scrollbar-face-color" => array(null, null, null, "-ms-scrollbar-face-color"), - "scrollbar-highlight-color" => array(null, null, null, "-ms-scrollbar-highlight-color"), - "scrollbar-shadow-color" => array(null, null, null, "-ms-scrollbar-shadow-color"), - "scrollbar-track-color" => array(null, null, null, "-ms-scrollbar-track-color"), - "stack-sizing" => array("-moz-stack-sizing", null, null, null), - "svg-shadow" => array(null, "-webkit-svg-shadow", null, null), - "tab-size" => array("-moz-tab-size", null, "-o-tab-size", null), - "table-baseline" => array(null, null, "-o-table-baseline", null), - "text-align-last" => array(null, null, null, "-ms-text-align-last"), - "text-autospace" => array(null, null, null, "-ms-text-autospace"), - "text-combine" => array(null, "-webkit-text-combine", null, null), - "text-decorations-in-effect" => array(null, "-webkit-text-decorations-in-effect", null, null), - "text-emphasis" => array(null, "-webkit-text-emphasis", null, null), - "text-emphasis-color" => array(null, "-webkit-text-emphasis-color", null, null), - "text-emphasis-position" => array(null, "-webkit-text-emphasis-position", null, null), - "text-emphasis-style" => array(null, "-webkit-text-emphasis-style", null, null), - "text-fill-color" => array(null, "-webkit-text-fill-color", null, null), - "text-justify" => array(null, null, null, "-ms-text-justify"), - "text-kashida-space" => array(null, null, null, "-ms-text-kashida-space"), - "text-overflow" => array(null, null, "-o-text-overflow", "-ms-text-overflow"), - "text-security" => array(null, "-webkit-text-security", null, null), - "text-size-adjust" => array(null, "-webkit-text-size-adjust", null, "-ms-text-size-adjust"), - "text-stroke" => array(null, "-webkit-text-stroke", null, null), - "text-stroke-color" => array(null, "-webkit-text-stroke-color", null, null), - "text-stroke-width" => array(null, "-webkit-text-stroke-width", null, null), - "text-underline-position" => array(null, null, null, "-ms-text-underline-position"), - "transform" => array("-moz-transform", "-webkit-transform", "-o-transform", null), - "transform-origin" => array("-moz-transform-origin", "-webkit-transform-origin", "-o-transform-origin", null), - "transform-origin-x" => array(null, "-webkit-transform-origin-x", null, null), - "transform-origin-y" => array(null, "-webkit-transform-origin-y", null, null), - "transform-origin-z" => array(null, "-webkit-transform-origin-z", null, null), - "transform-style" => array(null, "-webkit-transform-style", null, null), - "transition" => array("-moz-transition", "-webkit-transition", "-o-transition", null), - "transition-delay" => array("-moz-transition-delay", "-webkit-transition-delay", "-o-transition-delay", null), - "transition-duration" => array("-moz-transition-duration", "-webkit-transition-duration", "-o-transition-duration", null), - "transition-property" => array("-moz-transition-property", "-webkit-transition-property", "-o-transition-property", null), - "transition-timing-function" => array("-moz-transition-timing-function", "-webkit-transition-timing-function", "-o-transition-timing-function", null), - "user-drag" => array(null, "-webkit-user-drag", null, null), - "user-focus" => array("-moz-user-focus", null, null, null), - "user-input" => array("-moz-user-input", null, null, null), - "user-modify" => array("-moz-user-modify", "-webkit-user-modify", null, null), - "user-select" => array("-moz-user-select", "-webkit-user-select", null, null), - "white-space" => array(__CLASS__, "whiteSpace"), - "window-shadow" => array("-moz-window-shadow", null, null, null), - "word-break" => array(null, null, null, "-ms-word-break"), - "word-wrap" => array(null, null, null, "-ms-word-wrap"), - "writing-mode" => array(null, "-webkit-writing-mode", null, "-ms-writing-mode"), - "zoom" => array(null, null, null, "-ms-zoom") - ); - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value large than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - $transformations = &$this->transformations; - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - if (get_class($tokens[$i]) === "CssRulesetDeclarationToken") - { - $tProperty = $tokens[$i]->Property; - if (isset($transformations[$tProperty])) - { - $result = array(); - if (is_callable($transformations[$tProperty])) - { - $result = call_user_func_array($transformations[$tProperty], array($tokens[$i])); - if (!is_array($result) && is_object($result)) - { - $result = array($result); - } - } - else - { - $tValue = $tokens[$i]->Value; - $tMediaTypes = $tokens[$i]->MediaTypes; - foreach ($transformations[$tProperty] as $property) - { - if ($property !== null) - { - $result[] = new CssRulesetDeclarationToken($property, $tValue, $tMediaTypes); - } - } - } - if (count($result) > 0) - { - array_splice($tokens, $i + 1, 0, $result); - $i += count($result); - $l += count($result); - } - } - } - } - return $r; - } - /** - * Transforms the Internet Explorer specific declaration property "filter" to Internet Explorer 8+ compatible - * declaratiopn property "-ms-filter". - * - * @param aCssToken $token - * @return array - */ - private static function filter($token) - { - $r = array - ( - new CssRulesetDeclarationToken("-ms-filter", "\"" . $token->Value . "\"", $token->MediaTypes), - ); - return $r; - } - /** - * Transforms "opacity: {value}" into browser specific counterparts. - * - * @param aCssToken $token - * @return array - */ - private static function opacity($token) - { - // Calculate the value for Internet Explorer filter statement - $ieValue = (int) ((float) $token->Value * 100); - $r = array - ( - // Internet Explorer >= 8 - new CssRulesetDeclarationToken("-ms-filter", "\"alpha(opacity=" . $ieValue . ")\"", $token->MediaTypes), - // Internet Explorer >= 4 <= 7 - new CssRulesetDeclarationToken("filter", "alpha(opacity=" . $ieValue . ")", $token->MediaTypes), - new CssRulesetDeclarationToken("zoom", "1", $token->MediaTypes) - ); - return $r; - } - /** - * Transforms "white-space: pre-wrap" into browser specific counterparts. - * - * @param aCssToken $token - * @return array - */ - private static function whiteSpace($token) - { - if (strtolower($token->Value) === "pre-wrap") - { - $r = array - ( - // Firefox < 3 - new CssRulesetDeclarationToken("white-space", "-moz-pre-wrap", $token->MediaTypes), - // Webkit - new CssRulesetDeclarationToken("white-space", "-webkit-pre-wrap", $token->MediaTypes), - // Opera >= 4 <= 6 - new CssRulesetDeclarationToken("white-space", "-pre-wrap", $token->MediaTypes), - // Opera >= 7 - new CssRulesetDeclarationToken("white-space", "-o-pre-wrap", $token->MediaTypes), - // Internet Explorer >= 5.5 - new CssRulesetDeclarationToken("word-wrap", "break-word", $token->MediaTypes) - ); - return $r; - } - else - { - return array(); - } - } - } - -/** - * This {@link aCssMinifierFilter minifier filter} will convert @keyframes at-rule block to browser specific counterparts. - * - * @package CssMin/Minifier/Filters - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertLevel3AtKeyframesMinifierFilter extends aCssMinifierFilter - { - /** - * Implements {@link aCssMinifierFilter::filter()}. - * - * @param array $tokens Array of objects of type aCssToken - * @return integer Count of added, changed or removed tokens; a return value larger than 0 will rebuild the array - */ - public function apply(array &$tokens) - { - $r = 0; - $transformations = array("-moz-keyframes", "-webkit-keyframes", "-ms-keyframes", "-o-keyframes"); - for ($i = 0, $l = count($tokens); $i < $l; $i++) - { - if (get_class($tokens[$i]) === "CssAtKeyframesStartToken") - { - for ($ii = $i; $ii < $l; $ii++) - { - if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") - { - break; - } - } - if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") - { - $add = array(); - $source = array(); - for ($iii = $i; $iii <= $ii; $iii++) - { - $source[] = clone($tokens[$iii]); - } - foreach ($transformations as $transformation) - { - $t = array(); - foreach ($source as $token) - { - $t[] = clone($token); - } - $t[0]->AtRuleName = $transformation; - $add = array_merge($add, $t); - } - if (isset($this->configuration["RemoveSource"]) && $this->configuration["RemoveSource"] === true) - { - array_splice($tokens, $i, $ii - $i + 1, $add); - } - else - { - array_splice($tokens, $ii + 1, 0, $add); - } - $l = count($tokens); - $i = $ii + count($add); - $r += count($add); - } - } - } - return $r; - } - } - -/** - * This {@link aCssMinifierPlugin} will convert a color value in hsl notation to hexadecimal notation. - * - * Example: - * - * color: hsl(232,36%,48%); - * - * - * Will get converted to: - * - * color:#4e5aa7; - * - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertHslColorsMinifierPlugin extends aCssMinifierPlugin - { - /** - * Regular expression matching the value. - * - * @var string - */ - private $reMatch = "/^hsl\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*%\s*,\s*([0-9]+)\s*%\s*\)/iS"; - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (stripos($token->Value, "hsl") !== false && preg_match($this->reMatch, $token->Value, $m)) - { - $token->Value = str_replace($m[0], $this->hsl2hex($m[1], $m[2], $m[3]), $token->Value); - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - /** - * Convert a HSL value to hexadecimal notation. - * - * Based on: {@link http://www.easyrgb.com/index.php?X=MATH&H=19#text19}. - * - * @param integer $hue Hue - * @param integer $saturation Saturation - * @param integer $lightness Lightnesss - * @return string - */ - private function hsl2hex($hue, $saturation, $lightness) - { - $hue = $hue / 360; - $saturation = $saturation / 100; - $lightness = $lightness / 100; - if ($saturation == 0) - { - $red = $lightness * 255; - $green = $lightness * 255; - $blue = $lightness * 255; - } - else - { - if ($lightness < 0.5 ) - { - $v2 = $lightness * (1 + $saturation); - } - else - { - $v2 = ($lightness + $saturation) - ($saturation * $lightness); - } - $v1 = 2 * $lightness - $v2; - $red = 255 * self::hue2rgb($v1, $v2, $hue + (1 / 3)); - $green = 255 * self::hue2rgb($v1, $v2, $hue); - $blue = 255 * self::hue2rgb($v1, $v2, $hue - (1 / 3)); - } - return "#" . str_pad(dechex(round($red)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($green)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($blue)), 2, "0", STR_PAD_LEFT); - } - /** - * Apply hue to a rgb color value. - * - * @param integer $v1 Value 1 - * @param integer $v2 Value 2 - * @param integer $hue Hue - * @return integer - */ - private function hue2rgb($v1, $v2, $hue) - { - if ($hue < 0) - { - $hue += 1; - } - if ($hue > 1) - { - $hue -= 1; - } - if ((6 * $hue) < 1) - { - return ($v1 + ($v2 - $v1) * 6 * $hue); - } - if ((2 * $hue) < 1) - { - return ($v2); - } - if ((3 * $hue) < 2) - { - return ($v1 + ($v2 - $v1) * (( 2 / 3) - $hue) * 6); - } - return $v1; - } - } - -/** - * This {@link aCssMinifierPlugin} will convert the font-weight values normal and bold to their numeric notation. - * - * Example: - * - * font-weight: normal; - * font: bold 11px monospace; - * - * - * Will get converted to: - * - * font-weight:400; - * font:700 11px monospace; - * - * - * @package CssMin/Minifier/Pluginsn - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssConvertFontWeightMinifierPlugin extends aCssMinifierPlugin - { - /** - * Array of included declaration properties this plugin will process; others declaration properties will get - * ignored. - * - * @var array - */ - private $include = array - ( - "font", - "font-weight" - ); - /** - * Regular expression matching the value. - * - * @var string - */ - private $reMatch = null; - /** - * Regular expression replace the value. - * - * @var string - */ - private $reReplace = "\"\${1}\" . \$this->transformation[\"\${2}\"] . \"\${3}\""; - /** - * Transformation table used by the {@link CssConvertFontWeightMinifierPlugin::$reReplace replace regular expression}. - * - * @var array - */ - private $transformation = array - ( - "normal" => "400", - "bold" => "700" - ); - /** - * Overwrites {@link aCssMinifierPlugin::__construct()}. - * - * The constructor will create the {@link CssConvertFontWeightMinifierPlugin::$reReplace replace regular expression} - * based on the {@link CssConvertFontWeightMinifierPlugin::$transformation transformation table}. - * - * @param CssMinifier $minifier The CssMinifier object of this plugin. - * @return void - */ - public function __construct(CssMinifier $minifier) - { - $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)). ")(\s|$)+/eiS"; - parent::__construct($minifier); - } - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (in_array($token->Property, $this->include) && preg_match($this->reMatch, $token->Value, $m)) - { - $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssMinifierPlugin} will compress several unit values to their short notations. Examples: - * - * - * padding: 0.5em; - * border: 0px; - * margin: 0 0 0 0; - * - * - * Will get compressed to: - * - * - * padding:.5px; - * border:0; - * margin:0; - * - * - * -- - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssCompressUnitValuesMinifierPlugin extends aCssMinifierPlugin - { - /** - * Regular expression used for matching and replacing unit values. - * - * @var array - */ - private $re = array - ( - "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}.\${2}\${4}", - "/(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}0", - "/(^0\s0\s0\s0)|(^0\s0\s0$)|(^0\s0$)/iS" => "0" - ); - /** - * Regular expression matching the value. - * - * @var string - */ - private $reMatch = "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)|(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)|(^0\s0\s0\s0$)|(^0\s0\s0$)|(^0\s0$)/iS"; - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (preg_match($this->reMatch, $token->Value)) - { - foreach ($this->re as $reMatch => $reReplace) - { - $token->Value = preg_replace($reMatch, $reReplace, $token->Value); - } - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssMinifierPlugin} compress the content of expresssion() declaration values. - * - * For compression of expressions {@link https://github.com/rgrove/jsmin-php/ JSMin} will get used. JSMin have to be - * already included or loadable via {@link http://goo.gl/JrW54 PHP autoloading}. - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssCompressExpressionValuesMinifierPlugin extends aCssMinifierPlugin - { - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (class_exists("JSMin") && stripos($token->Value, "expression(") !== false) - { - $value = $token->Value; - $value = substr($token->Value, stripos($token->Value, "expression(") + 10); - $value = trim(JSMin::minify($value)); - $token->Value = "expression(" . $value . ")"; - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssMinifierPlugin} will convert hexadecimal color value with 6 chars to their 3 char hexadecimal - * notation (if possible). - * - * Example: - * - * color: #aabbcc; - * - * - * Will get converted to: - * - * color:#abc; - * - * - * @package CssMin/Minifier/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssCompressColorValuesMinifierPlugin extends aCssMinifierPlugin - { - /** - * Regular expression matching 6 char hexadecimal color values. - * - * @var string - */ - private $reMatch = "/\#([0-9a-f]{6})/iS"; - /** - * Implements {@link aCssMinifierPlugin::minify()}. - * - * @param aCssToken $token Token to process - * @return boolean Return TRUE to break the processing of this token; FALSE to continue - */ - public function apply(aCssToken &$token) - { - if (strpos($token->Value, "#") !== false && preg_match($this->reMatch, $token->Value, $m)) - { - $value = strtolower($m[1]); - if ($value[0] == $value[1] && $value[2] == $value[3] && $value[4] == $value[5]) - { - $token->Value = str_replace($m[0], "#" . $value[0] . $value[2] . $value[4], $token->Value); - } - } - return false; - } - /** - * Implements {@link aMinifierPlugin::getTriggerTokens()} - * - * @return array - */ - public function getTriggerTokens() - { - return array - ( - "CssAtFontFaceDeclarationToken", - "CssAtPageDeclarationToken", - "CssRulesetDeclarationToken" - ); - } - } - -/** - * This {@link aCssToken CSS token} represents a CSS comment. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssCommentToken extends aCssToken - { - /** - * Comment as Text. - * - * @var string - */ - public $Comment = ""; - /** - * Set the properties of a comment token. - * - * @param string $comment Comment including comment delimiters - * @return void - */ - public function __construct($comment) - { - $this->Comment = $comment; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return $this->Comment; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing comments. - * - * Adds a {@link CssCommentToken} to the parser if a comment was found. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssCommentParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("*", "/"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return false; - } - /** - * Stored buffer for restore. - * - * @var string - */ - private $restoreBuffer = ""; - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - if ($char === "*" && $previousChar === "/" && $state !== "T_COMMENT") - { - $this->parser->pushState("T_COMMENT"); - $this->parser->setExclusive(__CLASS__); - $this->restoreBuffer = substr($this->parser->getAndClearBuffer(), 0, -2); - } - elseif ($char === "/" && $previousChar === "*" && $state === "T_COMMENT") - { - $this->parser->popState(); - $this->parser->unsetExclusive(); - $this->parser->appendToken(new CssCommentToken("/*" . $this->parser->getAndClearBuffer())); - $this->parser->setBuffer($this->restoreBuffer); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the start of a @variables at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtVariablesStartToken extends aCssAtBlockStartToken - { - /** - * Media types of the @variables at-rule block. - * - * @var array - */ - public $MediaTypes = array(); - /** - * Set the properties of a @variables at-rule token. - * - * @param array $mediaTypes Media types - * @return void - */ - public function __construct($mediaTypes = null) - { - $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return ""; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @variables at-rule block with including declarations. - * - * Found @variables at-rule blocks will add a {@link CssAtVariablesStartToken} and {@link CssAtVariablesEndToken} to the - * parser; including declarations as {@link CssAtVariablesDeclarationToken}. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtVariablesParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", "{", "}", ":", ";"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_VARIABLES::PREPARE", "T_AT_VARIABLES", "T_AT_VARIABLES_DECLARATION"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of @variables at-rule block - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@variables") - { - $this->parser->pushState("T_AT_VARIABLES::PREPARE"); - $this->parser->clearBuffer(); - return $index + 10; - } - // Start of @variables declarations - elseif ($char === "{" && $state === "T_AT_VARIABLES::PREPARE") - { - $this->parser->setState("T_AT_VARIABLES"); - $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); - $this->parser->appendToken(new CssAtVariablesStartToken($mediaTypes)); - } - // Start of @variables declaration - if ($char === ":" && $state === "T_AT_VARIABLES") - { - $this->buffer = $this->parser->getAndClearBuffer(":"); - $this->parser->pushState("T_AT_VARIABLES_DECLARATION"); - } - // Unterminated @variables declaration - elseif ($char === ":" && $state === "T_AT_VARIABLES_DECLARATION") - { - // Ignore Internet Explorer filter declarations - if ($this->buffer === "filter") - { - return false; - } - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @variables declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); - } - // End of @variables declaration - elseif (($char === ";" || $char === "}") && $state === "T_AT_VARIABLES_DECLARATION") - { - $value = $this->parser->getAndClearBuffer(";}"); - if (strtolower(substr($value, -10, 10)) === "!important") - { - $value = trim(substr($value, 0, -10)); - $isImportant = true; - } - else - { - $isImportant = false; - } - $this->parser->popState(); - $this->parser->appendToken(new CssAtVariablesDeclarationToken($this->buffer, $value, $isImportant)); - $this->buffer = ""; - } - // End of @variables at-rule block - elseif ($char === "}" && $state === "T_AT_VARIABLES") - { - $this->parser->popState(); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssAtVariablesEndToken()); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a @variables at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtVariablesEndToken extends aCssAtBlockEndToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return ""; - } - } - -/** - * This {@link aCssToken CSS token} represents a declaration of a @variables at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtVariablesDeclarationToken extends aCssDeclarationToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return ""; - } - } - -/** -* This {@link aCssToken CSS token} represents the start of a @page at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtPageStartToken extends aCssAtBlockStartToken - { - /** - * Selector. - * - * @var string - */ - public $Selector = ""; - /** - * Sets the properties of the @page at-rule. - * - * @param string $selector Selector - * @return void - */ - public function __construct($selector = "") - { - $this->Selector = $selector; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@page" . ($this->Selector ? " " . $this->Selector : "") . "{"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @page at-rule block with including declarations. - * - * Found @page at-rule blocks will add a {@link CssAtPageStartToken} and {@link CssAtPageEndToken} to the - * parser; including declarations as {@link CssAtPageDeclarationToken}. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtPageParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", "{", "}", ":", ";"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_PAGE::SELECTOR", "T_AT_PAGE", "T_AT_PAGE_DECLARATION"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of @page at-rule block - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 5)) === "@page") - { - $this->parser->pushState("T_AT_PAGE::SELECTOR"); - $this->parser->clearBuffer(); - return $index + 5; - } - // Start of @page declarations - elseif ($char === "{" && $state === "T_AT_PAGE::SELECTOR") - { - $selector = $this->parser->getAndClearBuffer("{"); - $this->parser->setState("T_AT_PAGE"); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssAtPageStartToken($selector)); - } - // Start of @page declaration - elseif ($char === ":" && $state === "T_AT_PAGE") - { - $this->parser->pushState("T_AT_PAGE_DECLARATION"); - $this->buffer = $this->parser->getAndClearBuffer(":", true); - } - // Unterminated @font-face declaration - elseif ($char === ":" && $state === "T_AT_PAGE_DECLARATION") - { - // Ignore Internet Explorer filter declarations - if ($this->buffer === "filter") - { - return false; - } - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @page declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); - } - // End of @page declaration - elseif (($char === ";" || $char === "}") && $state == "T_AT_PAGE_DECLARATION") - { - $value = $this->parser->getAndClearBuffer(";}"); - if (strtolower(substr($value, -10, 10)) == "!important") - { - $value = trim(substr($value, 0, -10)); - $isImportant = true; - } - else - { - $isImportant = false; - } - $this->parser->popState(); - $this->parser->appendToken(new CssAtPageDeclarationToken($this->buffer, $value, $isImportant)); - // -- - if ($char === "}") - { - $this->parser->popState(); - $this->parser->appendToken(new CssAtPageEndToken()); - } - $this->buffer = ""; - } - // End of @page at-rule block - elseif ($char === "}" && $state === "T_AT_PAGE") - { - $this->parser->popState(); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssAtPageEndToken()); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a @page at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtPageEndToken extends aCssAtBlockEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a declaration of a @page at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtPageDeclarationToken extends aCssDeclarationToken - { - - } - -/** - * This {@link aCssToken CSS token} represents the start of a @media at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtMediaStartToken extends aCssAtBlockStartToken - { - /** - * Sets the properties of the @media at-rule. - * - * @param array $mediaTypes Media types - * @return void - */ - public function __construct(array $mediaTypes = array()) - { - $this->MediaTypes = $mediaTypes; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@media " . implode(",", $this->MediaTypes) . "{"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @media at-rule block. - * - * Found @media at-rule blocks will add a {@link CssAtMediaStartToken} and {@link CssAtMediaEndToken} to the parser. - * This plugin will also set the the current media types using {@link CssParser::setMediaTypes()} and - * {@link CssParser::unsetMediaTypes()}. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtMediaParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", "{", "}"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_MEDIA::PREPARE", "T_AT_MEDIA"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 6)) === "@media") - { - $this->parser->pushState("T_AT_MEDIA::PREPARE"); - $this->parser->clearBuffer(); - return $index + 6; - } - elseif ($char === "{" && $state === "T_AT_MEDIA::PREPARE") - { - $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); - $this->parser->setMediaTypes($mediaTypes); - $this->parser->setState("T_AT_MEDIA"); - $this->parser->appendToken(new CssAtMediaStartToken($mediaTypes)); - } - elseif ($char === "}" && $state === "T_AT_MEDIA") - { - $this->parser->appendToken(new CssAtMediaEndToken()); - $this->parser->clearBuffer(); - $this->parser->unsetMediaTypes(); - $this->parser->popState(); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a @media at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtMediaEndToken extends aCssAtBlockEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents the start of a @keyframes at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesStartToken extends aCssAtBlockStartToken - { - /** - * Name of the at-rule. - * - * @var string - */ - public $AtRuleName = "keyframes"; - /** - * Name - * - * @var string - */ - public $Name = ""; - /** - * Sets the properties of the @page at-rule. - * - * @param string $selector Selector - * @return void - */ - public function __construct($name, $atRuleName = null) - { - $this->Name = $name; - if (!is_null($atRuleName)) - { - $this->AtRuleName = $atRuleName; - } - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@" . $this->AtRuleName . " \"" . $this->Name . "\"{"; - } - } - -/** - * This {@link aCssToken CSS token} represents the start of a ruleset of a @keyframes at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesRulesetStartToken extends aCssRulesetStartToken - { - /** - * Array of selectors. - * - * @var array - */ - public $Selectors = array(); - /** - * Set the properties of a ruleset token. - * - * @param array $selectors Selectors of the ruleset - * @return void - */ - public function __construct(array $selectors = array()) - { - $this->Selectors = $selectors; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return implode(",", $this->Selectors) . "{"; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a ruleset of a @keyframes at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesRulesetEndToken extends aCssRulesetEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a ruleset declaration of a @keyframes at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesRulesetDeclarationToken extends aCssDeclarationToken - { - - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @keyframes at-rule blocks, rulesets and declarations. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesParserPlugin extends aCssParserPlugin - { - /** - * @var string Keyword - */ - private $atRuleName = ""; - /** - * Selectors. - * - * @var array - */ - private $selectors = array(); - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", "{", "}", ":", ",", ";"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_KEYFRAMES::NAME", "T_AT_KEYFRAMES", "T_AT_KEYFRAMES_RULESETS", "T_AT_KEYFRAMES_RULESET", "T_AT_KEYFRAMES_RULESET_DECLARATION"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of @keyframes at-rule block - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@keyframes") - { - $this->atRuleName = "keyframes"; - $this->parser->pushState("T_AT_KEYFRAMES::NAME"); - $this->parser->clearBuffer(); - return $index + 10; - } - // Start of @keyframes at-rule block (@-moz-keyframes) - elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 15)) === "@-moz-keyframes") - { - $this->atRuleName = "-moz-keyframes"; - $this->parser->pushState("T_AT_KEYFRAMES::NAME"); - $this->parser->clearBuffer(); - return $index + 15; - } - // Start of @keyframes at-rule block (@-webkit-keyframes) - elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 18)) === "@-webkit-keyframes") - { - $this->atRuleName = "-webkit-keyframes"; - $this->parser->pushState("T_AT_KEYFRAMES::NAME"); - $this->parser->clearBuffer(); - return $index + 18; - } - // Start of @keyframes at-rule block (@-ms-keyframes) - elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 14)) === "@-ms-keyframes") - { - $this->atRuleName = "-ms-keyframes"; - $this->parser->pushState("T_AT_KEYFRAMES::NAME"); - $this->parser->clearBuffer(); - return $index + 14; - } - // Start of @keyframes at-rule block (@-o-keyframes) - elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 13)) === "@-o-keyframes") - { - $this->atRuleName = "-o-keyframes"; - $this->parser->pushState("T_AT_KEYFRAMES::NAME"); - $this->parser->clearBuffer(); - return $index + 13; - } - // Start of @keyframes rulesets - elseif ($char === "{" && $state === "T_AT_KEYFRAMES::NAME") - { - $name = $this->parser->getAndClearBuffer("{\"'"); - $this->parser->setState("T_AT_KEYFRAMES_RULESETS"); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssAtKeyframesStartToken($name, $this->atRuleName)); - } - // Start of @keyframe ruleset and selectors - if ($char === "," && $state === "T_AT_KEYFRAMES_RULESETS") - { - $this->selectors[] = $this->parser->getAndClearBuffer(",{"); - } - // Start of a @keyframes ruleset - elseif ($char === "{" && $state === "T_AT_KEYFRAMES_RULESETS") - { - if ($this->parser->getBuffer() !== "") - { - $this->selectors[] = $this->parser->getAndClearBuffer(",{"); - $this->parser->pushState("T_AT_KEYFRAMES_RULESET"); - $this->parser->appendToken(new CssAtKeyframesRulesetStartToken($this->selectors)); - $this->selectors = array(); - } - } - // Start of @keyframes ruleset declaration - elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET") - { - $this->parser->pushState("T_AT_KEYFRAMES_RULESET_DECLARATION"); - $this->buffer = $this->parser->getAndClearBuffer(":;", true); - } - // Unterminated @keyframes ruleset declaration - elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") - { - // Ignore Internet Explorer filter declarations - if ($this->buffer === "filter") - { - return false; - } - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @keyframes ruleset declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); - } - // End of declaration - elseif (($char === ";" || $char === "}") && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") - { - $value = $this->parser->getAndClearBuffer(";}"); - if (strtolower(substr($value, -10, 10)) === "!important") - { - $value = trim(substr($value, 0, -10)); - $isImportant = true; - } - else - { - $isImportant = false; - } - $this->parser->popState(); - $this->parser->appendToken(new CssAtKeyframesRulesetDeclarationToken($this->buffer, $value, $isImportant)); - // Declaration ends with a right curly brace; so we have to end the ruleset - if ($char === "}") - { - $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); - $this->parser->popState(); - } - $this->buffer = ""; - } - // End of @keyframes ruleset - elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESET") - { - $this->parser->clearBuffer(); - - $this->parser->popState(); - $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); - } - // End of @keyframes rulesets - elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESETS") - { - $this->parser->clearBuffer(); - $this->parser->popState(); - $this->parser->appendToken(new CssAtKeyframesEndToken()); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a @keyframes at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtKeyframesEndToken extends aCssAtBlockEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a @import at-rule. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1.b1 (2001-02-22) - */ -class CssAtImportToken extends aCssToken - { - /** - * Import path of the @import at-rule. - * - * @var string - */ - public $Import = ""; - /** - * Media types of the @import at-rule. - * - * @var array - */ - public $MediaTypes = array(); - /** - * Set the properties of a @import at-rule token. - * - * @param string $import Import path - * @param array $mediaTypes Media types - * @return void - */ - public function __construct($import, $mediaTypes) - { - $this->Import = $import; - $this->MediaTypes = $mediaTypes ? $mediaTypes : array(); - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@import \"" . $this->Import . "\"" . (count($this->MediaTypes) > 0 ? " " . implode(",", $this->MediaTypes) : ""). ";"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @import at-rule. - * - * If a @import at-rule was found this plugin will add a {@link CssAtImportToken} to the parser. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtImportParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", ";", ",", "\n"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_IMPORT"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 7)) === "@import") - { - $this->parser->pushState("T_AT_IMPORT"); - $this->parser->clearBuffer(); - return $index + 7; - } - elseif (($char === ";" || $char === "\n") && $state === "T_AT_IMPORT") - { - $this->buffer = $this->parser->getAndClearBuffer(";"); - $pos = false; - foreach (array(")", "\"", "'") as $needle) - { - if (($pos = strrpos($this->buffer, $needle)) !== false) - { - break; - } - } - $import = substr($this->buffer, 0, $pos + 1); - if (stripos($import, "url(") === 0) - { - $import = substr($import, 4, -1); - } - $import = trim($import, " \t\n\r\0\x0B'\""); - $mediaTypes = array_filter(array_map("trim", explode(",", trim(substr($this->buffer, $pos + 1), " \t\n\r\0\x0B{")))); - if ($pos) - { - $this->parser->appendToken(new CssAtImportToken($import, $mediaTypes)); - } - else - { - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Invalid @import at-rule syntax", $this->parser->buffer)); - } - $this->parser->popState(); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the start of a @font-face at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtFontFaceStartToken extends aCssAtBlockStartToken - { - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@font-face{"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @font-face at-rule block with including declarations. - * - * Found @font-face at-rule blocks will add a {@link CssAtFontFaceStartToken} and {@link CssAtFontFaceEndToken} to the - * parser; including declarations as {@link CssAtFontFaceDeclarationToken}. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtFontFaceParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", "{", "}", ":", ";"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_FONT_FACE::PREPARE", "T_AT_FONT_FACE", "T_AT_FONT_FACE_DECLARATION"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - // Start of @font-face at-rule block - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@font-face") - { - $this->parser->pushState("T_AT_FONT_FACE::PREPARE"); - $this->parser->clearBuffer(); - return $index + 10; - } - // Start of @font-face declarations - elseif ($char === "{" && $state === "T_AT_FONT_FACE::PREPARE") - { - $this->parser->setState("T_AT_FONT_FACE"); - $this->parser->clearBuffer(); - $this->parser->appendToken(new CssAtFontFaceStartToken()); - } - // Start of @font-face declaration - elseif ($char === ":" && $state === "T_AT_FONT_FACE") - { - $this->parser->pushState("T_AT_FONT_FACE_DECLARATION"); - $this->buffer = $this->parser->getAndClearBuffer(":", true); - } - // Unterminated @font-face declaration - elseif ($char === ":" && $state === "T_AT_FONT_FACE_DECLARATION") - { - // Ignore Internet Explorer filter declarations - if ($this->buffer === "filter") - { - return false; - } - CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @font-face declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); - } - // End of @font-face declaration - elseif (($char === ";" || $char === "}") && $state === "T_AT_FONT_FACE_DECLARATION") - { - $value = $this->parser->getAndClearBuffer(";}"); - if (strtolower(substr($value, -10, 10)) === "!important") - { - $value = trim(substr($value, 0, -10)); - $isImportant = true; - } - else - { - $isImportant = false; - } - $this->parser->popState(); - $this->parser->appendToken(new CssAtFontFaceDeclarationToken($this->buffer, $value, $isImportant)); - $this->buffer = ""; - // -- - if ($char === "}") - { - $this->parser->appendToken(new CssAtFontFaceEndToken()); - $this->parser->popState(); - } - } - // End of @font-face at-rule block - elseif ($char === "}" && $state === "T_AT_FONT_FACE") - { - $this->parser->appendToken(new CssAtFontFaceEndToken()); - $this->parser->clearBuffer(); - $this->parser->popState(); - } - else - { - return false; - } - return true; - } - } - -/** - * This {@link aCssToken CSS token} represents the end of a @font-face at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtFontFaceEndToken extends aCssAtBlockEndToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a declaration of a @font-face at-rule block. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtFontFaceDeclarationToken extends aCssDeclarationToken - { - - } - -/** - * This {@link aCssToken CSS token} represents a @charset at-rule. - * - * @package CssMin/Tokens - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtCharsetToken extends aCssToken - { - /** - * Charset of the @charset at-rule. - * - * @var string - */ - public $Charset = ""; - /** - * Set the properties of @charset at-rule token. - * - * @param string $charset Charset of the @charset at-rule token - * @return void - */ - public function __construct($charset) - { - $this->Charset = $charset; - } - /** - * Implements {@link aCssToken::__toString()}. - * - * @return string - */ - public function __toString() - { - return "@charset " . $this->Charset . ";"; - } - } - -/** - * {@link aCssParserPlugin Parser plugin} for parsing @charset at-rule. - * - * If a @charset at-rule was found this plugin will add a {@link CssAtCharsetToken} to the parser. - * - * @package CssMin/Parser/Plugins - * @link http://code.google.com/p/cssmin/ - * @author Joe Scylla - * @copyright 2008 - 2011 Joe Scylla - * @license http://opensource.org/licenses/mit-license.php MIT License - * @version 3.0.1 - */ -class CssAtCharsetParserPlugin extends aCssParserPlugin - { - /** - * Implements {@link aCssParserPlugin::getTriggerChars()}. - * - * @return array - */ - public function getTriggerChars() - { - return array("@", ";", "\n"); - } - /** - * Implements {@link aCssParserPlugin::getTriggerStates()}. - * - * @return array - */ - public function getTriggerStates() - { - return array("T_DOCUMENT", "T_AT_CHARSET"); - } - /** - * Implements {@link aCssParserPlugin::parse()}. - * - * @param integer $index Current index - * @param string $char Current char - * @param string $previousChar Previous char - * @return mixed TRUE will break the processing; FALSE continue with the next plugin; integer set a new index and break the processing - */ - public function parse($index, $char, $previousChar, $state) - { - if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 8)) === "@charset") - { - $this->parser->pushState("T_AT_CHARSET"); - $this->parser->clearBuffer(); - return $index + 8; - } - elseif (($char === ";" || $char === "\n") && $state === "T_AT_CHARSET") - { - $charset = $this->parser->getAndClearBuffer(";"); - $this->parser->popState(); - $this->parser->appendToken(new CssAtCharsetToken($charset)); - } - else - { - return false; - } - return true; - } - } - -?> \ No newline at end of file diff --git a/app/SymfonyRequirements.php b/app/SymfonyRequirements.php deleted file mode 100644 index 393aa1dc4..000000000 --- a/app/SymfonyRequirements.php +++ /dev/null @@ -1,806 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Users of PHP 5.2 should be able to run the requirements checks. - * This is why the file and all classes must be compatible with PHP 5.2+ - * (e.g. not using namespaces and closures). - * - * ************** CAUTION ************** - * - * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of - * the installation/update process. The original file resides in the - * SensioDistributionBundle. - * - * ************** CAUTION ************** - */ - -/** - * Represents a single PHP requirement, e.g. an installed extension. - * It can be a mandatory requirement or an optional recommendation. - * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration. - * - * @author Tobias Schultze - */ -class Requirement -{ - private $fulfilled; - private $testMessage; - private $helpText; - private $helpHtml; - private $optional; - - /** - * Constructor that initializes the requirement. - * - * @param bool $fulfilled Whether the requirement is fulfilled - * @param string $testMessage The message for testing the requirement - * @param string $helpHtml The help text formatted in HTML for resolving the problem - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement - */ - public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false) - { - $this->fulfilled = (bool) $fulfilled; - $this->testMessage = (string) $testMessage; - $this->helpHtml = (string) $helpHtml; - $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText; - $this->optional = (bool) $optional; - } - - /** - * Returns whether the requirement is fulfilled. - * - * @return bool true if fulfilled, otherwise false - */ - public function isFulfilled() - { - return $this->fulfilled; - } - - /** - * Returns the message for testing the requirement. - * - * @return string The test message - */ - public function getTestMessage() - { - return $this->testMessage; - } - - /** - * Returns the help text for resolving the problem. - * - * @return string The help text - */ - public function getHelpText() - { - return $this->helpText; - } - - /** - * Returns the help text formatted in HTML. - * - * @return string The HTML help - */ - public function getHelpHtml() - { - return $this->helpHtml; - } - - /** - * Returns whether this is only an optional recommendation and not a mandatory requirement. - * - * @return bool true if optional, false if mandatory - */ - public function isOptional() - { - return $this->optional; - } -} - -/** - * Represents a PHP requirement in form of a php.ini configuration. - * - * @author Tobias Schultze - */ -class PhpIniRequirement extends Requirement -{ - /** - * Constructor that initializes the requirement. - * - * @param string $cfgName The configuration name used for ini_get() - * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, - * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement - * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. - * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. - * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. - * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) - * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement - */ - public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false) - { - $cfgValue = ini_get($cfgName); - - if (is_callable($evaluation)) { - if (null === $testMessage || null === $helpHtml) { - throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.'); - } - - $fulfilled = call_user_func($evaluation, $cfgValue); - } else { - if (null === $testMessage) { - $testMessage = sprintf('%s %s be %s in php.ini', - $cfgName, - $optional ? 'should' : 'must', - $evaluation ? 'enabled' : 'disabled' - ); - } - - if (null === $helpHtml) { - $helpHtml = sprintf('Set %s to %s in php.ini*.', - $cfgName, - $evaluation ? 'on' : 'off' - ); - } - - $fulfilled = $evaluation == $cfgValue; - } - - parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional); - } -} - -/** - * A RequirementCollection represents a set of Requirement instances. - * - * @author Tobias Schultze - */ -class RequirementCollection implements IteratorAggregate -{ - /** - * @var Requirement[] - */ - private $requirements = array(); - - /** - * Gets the current RequirementCollection as an Iterator. - * - * @return Traversable A Traversable interface - */ - public function getIterator() - { - return new ArrayIterator($this->requirements); - } - - /** - * Adds a Requirement. - * - * @param Requirement $requirement A Requirement instance - */ - public function add(Requirement $requirement) - { - $this->requirements[] = $requirement; - } - - /** - * Adds a mandatory requirement. - * - * @param bool $fulfilled Whether the requirement is fulfilled - * @param string $testMessage The message for testing the requirement - * @param string $helpHtml The help text formatted in HTML for resolving the problem - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - */ - public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null) - { - $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false)); - } - - /** - * Adds an optional recommendation. - * - * @param bool $fulfilled Whether the recommendation is fulfilled - * @param string $testMessage The message for testing the recommendation - * @param string $helpHtml The help text formatted in HTML for resolving the problem - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - */ - public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null) - { - $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true)); - } - - /** - * Adds a mandatory requirement in form of a php.ini configuration. - * - * @param string $cfgName The configuration name used for ini_get() - * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, - * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement - * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. - * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. - * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. - * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) - * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - */ - public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) - { - $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false)); - } - - /** - * Adds an optional recommendation in form of a php.ini configuration. - * - * @param string $cfgName The configuration name used for ini_get() - * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, - * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement - * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. - * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. - * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. - * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) - * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) - * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) - */ - public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) - { - $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true)); - } - - /** - * Adds a requirement collection to the current set of requirements. - * - * @param RequirementCollection $collection A RequirementCollection instance - */ - public function addCollection(RequirementCollection $collection) - { - $this->requirements = array_merge($this->requirements, $collection->all()); - } - - /** - * Returns both requirements and recommendations. - * - * @return Requirement[] - */ - public function all() - { - return $this->requirements; - } - - /** - * Returns all mandatory requirements. - * - * @return Requirement[] - */ - public function getRequirements() - { - $array = array(); - foreach ($this->requirements as $req) { - if (!$req->isOptional()) { - $array[] = $req; - } - } - - return $array; - } - - /** - * Returns the mandatory requirements that were not met. - * - * @return Requirement[] - */ - public function getFailedRequirements() - { - $array = array(); - foreach ($this->requirements as $req) { - if (!$req->isFulfilled() && !$req->isOptional()) { - $array[] = $req; - } - } - - return $array; - } - - /** - * Returns all optional recommendations. - * - * @return Requirement[] - */ - public function getRecommendations() - { - $array = array(); - foreach ($this->requirements as $req) { - if ($req->isOptional()) { - $array[] = $req; - } - } - - return $array; - } - - /** - * Returns the recommendations that were not met. - * - * @return Requirement[] - */ - public function getFailedRecommendations() - { - $array = array(); - foreach ($this->requirements as $req) { - if (!$req->isFulfilled() && $req->isOptional()) { - $array[] = $req; - } - } - - return $array; - } - - /** - * Returns whether a php.ini configuration is not correct. - * - * @return bool php.ini configuration problem? - */ - public function hasPhpIniConfigIssue() - { - foreach ($this->requirements as $req) { - if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) { - return true; - } - } - - return false; - } - - /** - * Returns the PHP configuration file (php.ini) path. - * - * @return string|false php.ini file path - */ - public function getPhpIniConfigPath() - { - return get_cfg_var('cfg_file_path'); - } -} - -/** - * This class specifies all requirements and optional recommendations that - * are necessary to run the Symfony Standard Edition. - * - * @author Tobias Schultze - * @author Fabien Potencier - */ -class SymfonyRequirements extends RequirementCollection -{ - const LEGACY_REQUIRED_PHP_VERSION = '5.3.3'; - const REQUIRED_PHP_VERSION = '5.5.9'; - - /** - * Constructor that initializes the requirements. - */ - public function __construct() - { - /* mandatory requirements follow */ - - $installedPhpVersion = phpversion(); - $requiredPhpVersion = $this->getPhpRequiredVersion(); - - $this->addRecommendation( - $requiredPhpVersion, - 'Vendors should be installed in order to check all requirements.', - 'Run the composer install command.', - 'Run the "composer install" command.' - ); - - if (false !== $requiredPhpVersion) { - $this->addRequirement( - version_compare($installedPhpVersion, $requiredPhpVersion, '>='), - sprintf('PHP version must be at least %s (%s installed)', $requiredPhpVersion, $installedPhpVersion), - sprintf('You are running PHP version "%s", but Symfony needs at least PHP "%s" to run. - Before using Symfony, upgrade your PHP installation, preferably to the latest version.', - $installedPhpVersion, $requiredPhpVersion), - sprintf('Install PHP %s or newer (installed version is %s)', $requiredPhpVersion, $installedPhpVersion) - ); - } - - $this->addRequirement( - version_compare($installedPhpVersion, '5.3.16', '!='), - 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', - 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)' - ); - - $this->addRequirement( - is_dir(__DIR__.'/../vendor/composer'), - 'Vendor libraries must be installed', - 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/. '. - 'Then run "php composer.phar install" to install them.' - ); - - $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache'; - - $this->addRequirement( - is_writable($cacheDir), - 'app/cache/ or var/cache/ directory must be writable', - 'Change the permissions of either "app/cache/" or "var/cache/" directory so that the web server can write into it.' - ); - - $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs'; - - $this->addRequirement( - is_writable($logsDir), - 'app/logs/ or var/logs/ directory must be writable', - 'Change the permissions of either "app/logs/" or "var/logs/" directory so that the web server can write into it.' - ); - - $this->addPhpIniRequirement( - 'date.timezone', true, false, - 'date.timezone setting must be set', - 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).' - ); - - if (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) { - $timezones = array(); - foreach (DateTimeZone::listAbbreviations() as $abbreviations) { - foreach ($abbreviations as $abbreviation) { - $timezones[$abbreviation['timezone_id']] = true; - } - } - - $this->addRequirement( - isset($timezones[@date_default_timezone_get()]), - sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()), - 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php.' - ); - } - - $this->addRequirement( - function_exists('iconv'), - 'iconv() must be available', - 'Install and enable the iconv extension.' - ); - - $this->addRequirement( - function_exists('json_encode'), - 'json_encode() must be available', - 'Install and enable the JSON extension.' - ); - - $this->addRequirement( - function_exists('session_start'), - 'session_start() must be available', - 'Install and enable the session extension.' - ); - - $this->addRequirement( - function_exists('ctype_alpha'), - 'ctype_alpha() must be available', - 'Install and enable the ctype extension.' - ); - - $this->addRequirement( - function_exists('token_get_all'), - 'token_get_all() must be available', - 'Install and enable the Tokenizer extension.' - ); - - $this->addRequirement( - function_exists('simplexml_import_dom'), - 'simplexml_import_dom() must be available', - 'Install and enable the SimpleXML extension.' - ); - - if (function_exists('apc_store') && ini_get('apc.enabled')) { - if (version_compare($installedPhpVersion, '5.4.0', '>=')) { - $this->addRequirement( - version_compare(phpversion('apc'), '3.1.13', '>='), - 'APC version must be at least 3.1.13 when using PHP 5.4', - 'Upgrade your APC extension (3.1.13+).' - ); - } else { - $this->addRequirement( - version_compare(phpversion('apc'), '3.0.17', '>='), - 'APC version must be at least 3.0.17', - 'Upgrade your APC extension (3.0.17+).' - ); - } - } - - $this->addPhpIniRequirement('detect_unicode', false); - - if (extension_loaded('suhosin')) { - $this->addPhpIniRequirement( - 'suhosin.executor.include.whitelist', - create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'), - false, - 'suhosin.executor.include.whitelist must be configured correctly in php.ini', - 'Add "phar" to suhosin.executor.include.whitelist in php.ini*.' - ); - } - - if (extension_loaded('xdebug')) { - $this->addPhpIniRequirement( - 'xdebug.show_exception_trace', false, true - ); - - $this->addPhpIniRequirement( - 'xdebug.scream', false, true - ); - - $this->addPhpIniRecommendation( - 'xdebug.max_nesting_level', - create_function('$cfgValue', 'return $cfgValue > 100;'), - true, - 'xdebug.max_nesting_level should be above 100 in php.ini', - 'Set "xdebug.max_nesting_level" to e.g. "250" in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.' - ); - } - - $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null; - - $this->addRequirement( - null !== $pcreVersion, - 'PCRE extension must be available', - 'Install the PCRE extension (version 8.0+).' - ); - - if (extension_loaded('mbstring')) { - $this->addPhpIniRequirement( - 'mbstring.func_overload', - create_function('$cfgValue', 'return (int) $cfgValue === 0;'), - true, - 'string functions should not be overloaded', - 'Set "mbstring.func_overload" to 0 in php.ini* to disable function overloading by the mbstring extension.' - ); - } - - /* optional recommendations follow */ - - if (file_exists(__DIR__.'/../vendor/composer')) { - require_once __DIR__.'/../vendor/autoload.php'; - - try { - $r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle'); - - $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php'); - } catch (ReflectionException $e) { - $contents = ''; - } - $this->addRecommendation( - file_get_contents(__FILE__) === $contents, - 'Requirements file should be up-to-date', - 'Your requirements file is outdated. Run composer install and re-check your configuration.' - ); - } - - $this->addRecommendation( - version_compare($installedPhpVersion, '5.3.4', '>='), - 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions', - 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.' - ); - - $this->addRecommendation( - version_compare($installedPhpVersion, '5.3.8', '>='), - 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156', - 'Install PHP 5.3.8 or newer if your project uses annotations.' - ); - - $this->addRecommendation( - version_compare($installedPhpVersion, '5.4.0', '!='), - 'You should not use PHP 5.4.0 due to the PHP bug #61453', - 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.' - ); - - $this->addRecommendation( - version_compare($installedPhpVersion, '5.4.11', '>='), - 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)', - 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.' - ); - - $this->addRecommendation( - (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<')) - || - version_compare($installedPhpVersion, '5.4.8', '>='), - 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909', - 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.' - ); - - if (null !== $pcreVersion) { - $this->addRecommendation( - $pcreVersion >= 8.0, - sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion), - 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.' - ); - } - - $this->addRecommendation( - class_exists('DomDocument'), - 'PHP-DOM and PHP-XML modules should be installed', - 'Install and enable the PHP-DOM and the PHP-XML modules.' - ); - - $this->addRecommendation( - function_exists('mb_strlen'), - 'mb_strlen() should be available', - 'Install and enable the mbstring extension.' - ); - - $this->addRecommendation( - function_exists('iconv'), - 'iconv() should be available', - 'Install and enable the iconv extension.' - ); - - $this->addRecommendation( - function_exists('utf8_decode'), - 'utf8_decode() should be available', - 'Install and enable the XML extension.' - ); - - $this->addRecommendation( - function_exists('filter_var'), - 'filter_var() should be available', - 'Install and enable the filter extension.' - ); - - if (!defined('PHP_WINDOWS_VERSION_BUILD')) { - $this->addRecommendation( - function_exists('posix_isatty'), - 'posix_isatty() should be available', - 'Install and enable the php_posix extension (used to colorize the CLI output).' - ); - } - - $this->addRecommendation( - extension_loaded('intl'), - 'intl extension should be available', - 'Install and enable the intl extension (used for validators).' - ); - - if (extension_loaded('intl')) { - // in some WAMP server installations, new Collator() returns null - $this->addRecommendation( - null !== new Collator('fr_FR'), - 'intl extension should be correctly configured', - 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.' - ); - - // check for compatible ICU versions (only done when you have the intl extension) - if (defined('INTL_ICU_VERSION')) { - $version = INTL_ICU_VERSION; - } else { - $reflector = new ReflectionExtension('intl'); - - ob_start(); - $reflector->info(); - $output = strip_tags(ob_get_clean()); - - preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); - $version = $matches[1]; - } - - $this->addRecommendation( - version_compare($version, '4.0', '>='), - 'intl ICU version should be at least 4+', - 'Upgrade your intl extension with a newer ICU version (4+).' - ); - - $this->addPhpIniRecommendation( - 'intl.error_level', - create_function('$cfgValue', 'return (int) $cfgValue === 0;'), - true, - 'intl.error_level should be 0 in php.ini', - 'Set "intl.error_level" to "0" in php.ini* to inhibit the messages when an error occurs in ICU functions.' - ); - } - - $accelerator = - (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) - || - (extension_loaded('apc') && ini_get('apc.enabled')) - || - (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable')) - || - (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) - || - (extension_loaded('xcache') && ini_get('xcache.cacher')) - || - (extension_loaded('wincache') && ini_get('wincache.ocenabled')) - ; - - $this->addRecommendation( - $accelerator, - 'a PHP accelerator should be installed', - 'Install and/or enable a PHP accelerator (highly recommended).' - ); - - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $this->addRecommendation( - $this->getRealpathCacheSize() >= 5 * 1024 * 1024, - 'realpath_cache_size should be at least 5M in php.ini', - 'Setting "realpath_cache_size" to e.g. "5242880" or "5M" in php.ini* may improve performance on Windows significantly in some cases.' - ); - } - - $this->addPhpIniRecommendation('short_open_tag', false); - - $this->addPhpIniRecommendation('magic_quotes_gpc', false, true); - - $this->addPhpIniRecommendation('register_globals', false, true); - - $this->addPhpIniRecommendation('session.auto_start', false); - - $this->addRecommendation( - class_exists('PDO'), - 'PDO should be installed', - 'Install PDO (mandatory for Doctrine).' - ); - - if (class_exists('PDO')) { - $drivers = PDO::getAvailableDrivers(); - $this->addRecommendation( - count($drivers) > 0, - sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'), - 'Install PDO drivers (mandatory for Doctrine).' - ); - } - } - - /** - * Loads realpath_cache_size from php.ini and converts it to int. - * - * (e.g. 16k is converted to 16384 int) - * - * @return int - */ - protected function getRealpathCacheSize() - { - $size = ini_get('realpath_cache_size'); - $size = trim($size); - $unit = ''; - if (!ctype_digit($size)) { - $unit = strtolower(substr($size, -1, 1)); - $size = (int) substr($size, 0, -1); - } - switch ($unit) { - case 'g': - return $size * 1024 * 1024 * 1024; - case 'm': - return $size * 1024 * 1024; - case 'k': - return $size * 1024; - default: - return (int) $size; - } - } - - /** - * Defines PHP required version from Symfony version. - * - * @return string|false The PHP required version or false if it could not be guessed - */ - protected function getPhpRequiredVersion() - { - if (!file_exists($path = __DIR__.'/../composer.lock')) { - return false; - } - - $composerLock = json_decode(file_get_contents($path), true); - foreach ($composerLock['packages'] as $package) { - $name = $package['name']; - if ('symfony/symfony' !== $name && 'symfony/http-kernel' !== $name) { - continue; - } - - return (int) $package['version'][1] > 2 ? self::REQUIRED_PHP_VERSION : self::LEGACY_REQUIRED_PHP_VERSION; - } - - return false; - } -} diff --git a/app/autoload.php b/app/autoload.php deleted file mode 100644 index 2a61f9376..000000000 --- a/app/autoload.php +++ /dev/null @@ -1,17 +0,0 @@ -add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs'); -} - -AnnotationRegistry::registerLoader(array($loader, 'loadClass')); - -return $loader; diff --git a/app/check.php b/app/check.php deleted file mode 100644 index f73a3e7f5..000000000 --- a/app/check.php +++ /dev/null @@ -1,63 +0,0 @@ -getPhpIniConfigPath(); - -echo "*************************************\n"; -echo "* *\n"; -echo "* DiamanteDesk requirements check *\n"; -echo "* *\n"; -echo "*************************************\n\n"; - -echo $iniPath ? sprintf("* Configuration file used by PHP: %s\n\n", $iniPath) : "* WARNING: No configuration file (php.ini) used by PHP!\n\n"; - -echo "** ATTENTION **\n"; -echo "* The PHP CLI can use a different php.ini file\n"; -echo "* than the one used with your web server.\n"; -if ('\\' == DIRECTORY_SEPARATOR) { - echo "* (especially on the Windows platform)\n"; -} -echo "* To be on the safe side, please also launch the requirements check\n"; -echo "* from your web server using the web/config.php script.\n"; - -echo_title('Mandatory requirements'); - -$checkPassed = true; -foreach ($diamanteDeskRequirements->getRequirements() as $req) { - /** @var $req Requirement */ - echo_requirement($req); - if (!$req->isFulfilled()) { - $checkPassed = false; - } -} - -echo_title('Optional recommendations'); - -foreach ($diamanteDeskRequirements->getRecommendations() as $req) { - echo_requirement($req); -} - -exit($checkPassed ? 0 : 1); - -/** - * Prints a Requirement instance - */ -function echo_requirement(Requirement $requirement) -{ - $result = $requirement->isFulfilled() ? 'OK' : ($requirement->isOptional() ? 'WARNING' : 'ERROR'); - echo ' ' . str_pad($result, 9); - echo $requirement->getTestMessage() . "\n"; - - if (!$requirement->isFulfilled()) { - echo sprintf(" %s\n\n", $requirement->getHelpText()); - } -} - -function echo_title($title) -{ - echo "\n** $title **\n\n"; -} diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml deleted file mode 100644 index 8ad596585..000000000 --- a/app/config/config_dev.yml +++ /dev/null @@ -1,34 +0,0 @@ -imports: - - { resource: config.yml } - -framework: - router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } - profiler: { only_exceptions: false } - -web_profiler: - toolbar: true - intercept_redirects: false - -monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - firephp: - type: firephp - level: info - chromephp: - type: chromephp - level: info - -oro_assetic: - css_debug: ~ - css_debug_all: false - -oro_message_queue: - client: - traceable_producer: true - -#swiftmailer: -# delivery_address: me@example.com diff --git a/app/config/parameters_test.yml.dist b/app/config/parameters_test.yml.dist deleted file mode 100644 index e2dd38737..000000000 --- a/app/config/parameters_test.yml.dist +++ /dev/null @@ -1,32 +0,0 @@ -parameters: - database_driver: pdo_mysql - database_host: 127.0.0.1 - database_port: ~ - database_name: diamantedesk_test - database_user: root - database_password: root - - mailer_transport: smtp - mailer_host: 127.0.0.1 - mailer_port: ~ - mailer_encryption: ~ - mailer_user: ~ - mailer_password: ~ - - # WebSocket server config - websocket_bind_address: "0.0.0.0" # The host IP the socket server will bind to - websocket_bind_port: 8080 # The port the socket server will listen on - websocket_frontend_host: "*" # Websocket host the browser will connect to - websocket_frontend_port: 8080 # Websocket port the browser will connect to - websocket_backend_host: "*" # Websocket host the application server will connect to - websocket_backend_port: 8080 # Websocket port the application server will connect to - - session_handler: ~ - - locale: en - secret: ThisTokenIsNotSoSecretChangeIt - installed: ~ - assets_version: ~ - assets_version_strategy: time_hash - message_queue_transport: 'null' - message_queue_transport_config: {} diff --git a/app/config/security.yml b/app/config/security.yml deleted file mode 100644 index 057e4fa15..000000000 --- a/app/config/security.yml +++ /dev/null @@ -1,8 +0,0 @@ -security: - encoders: - Symfony\Component\Security\Core\User\User: plaintext - - firewalls: - dev: - pattern: ^/(_(profiler|wdt)|css|images|js)/ - security: false \ No newline at end of file diff --git a/app/karma.conf.js.dist b/app/karma.conf.js.dist deleted file mode 100644 index 4906b0fc5..000000000 --- a/app/karma.conf.js.dist +++ /dev/null @@ -1,103 +0,0 @@ -/* global module */ -module.exports = function(config) { - 'use strict'; - - config.set({ - // base path, that will be used to resolve files and exclude - basePath: '../', - - frameworks: ['jasmine', 'requirejs-exposure', 'requirejs'], - - // list of files / patterns to load in the browser - files: [ - 'web/js/require-config.js', - 'src/Oro/src/Oro/Bundle/TestFrameworkBundle/Karma/main.js', - - // test framework's libs and their configuration - {pattern: 'src/*/src/*/Bundle/TestFrameworkBundle/Karma/lib/**/require-config.js', watched: false, included: true}, - {pattern: 'src/*/src/*/Bundle/TestFrameworkBundle/Karma/lib/**/*.js', watched: false, included: false}, - - // fixtures - {pattern: 'src/*/src/*/Bundle/*Bundle/Tests/JS/Fixture/**/*', included: false}, - - {pattern: 'web/js/**/*.js', watched: false, included: false}, - {pattern: 'web/bundles/**/*.js', included: false}, - {pattern: 'src/*/src/*/Bundle/*Bundle/Tests/JS/**/*Spec.js', included: false} - ], - - // list of files to exclude - exclude: [ - ], - - preprocessors: { - 'web/bundles/*/js/**/*.js': ['requirejs-exposure']//, 'coverage'] - }, - - // use dots reporter, as travis terminal does not support escaping sequences - // possible values: 'dots', 'progress' - // CLI --reporters progress - reporters: ['progress', /*'coverage',*/ 'junit'], - - junitReporter: { - // will be resolved to basePath (in the same way as files/exclude patterns) - outputFile: 'build/logs/karma.xml' - }, - - /*coverageReporter: { - type: 'html', - dir: 'build/logs/js-coverage/' - },*/ - - // web server port - // CLI --port 9876 - port: 9876, - - // enable / disable colors in the output (reporters and logs) - // CLI --colors --no-colors - colors: true, - - // level of logging - // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG - // CLI --log-level debug - logLevel: config.LOG_INFO, - - // enable / disable watching file and executing tests whenever any file changes - // CLI --auto-watch --no-auto-watch - autoWatch: true, - - // Start these browsers, currently available: - // - Chrome - // - ChromeCanary - // - Firefox - // - Opera - // - Safari (only Mac) - // - PhantomJS - // - IE (only Windows) - // CLI --browsers Chrome,Firefox,Safari -// browsers: [process.env.TRAVIS ? 'Firefox' : 'Chrome'], - browsers: ['PhantomJS'], - - // If browser does not capture in given timeout [ms], kill it - // CLI --capture-timeout 5000 - captureTimeout: 20000, - - // Auto run tests on start (when browsers are captured) and exit - // CLI --single-run --no-single-run - singleRun: false, - - // report which specs are slower than 500ms - // CLI --report-slower-than 500 - reportSlowerThan: 500, - - plugins: [ - 'karma-requirejs', - 'karma-jasmine', - 'karma-junit-reporter', -// 'karma-coverage', - 'karma-phantomjs-launcher', -// 'karma-chrome-launcher', -// 'karma-firefox-launcher', - 'karma-requirejs-exposure' - ] - }); -}; diff --git a/behat.yml.dist b/behat.yml.dist new file mode 100644 index 000000000..276ee9bf8 --- /dev/null +++ b/behat.yml.dist @@ -0,0 +1,15 @@ +imports: + - ./vendor/oro/platform/src/Oro/Bundle/TestFrameworkBundle/Resources/config/behat.yml.dist + +default: &default + gherkin: + filters: + tags: ~@not-automated&&~@skip + extensions: + Behat\MinkExtension: + base_url: 'http://dev-platform.local/' + Behat\Symfony2Extension: ~ + Oro\Bundle\TestFrameworkBundle\Behat\ServiceContainer\OroTestFrameworkExtension: ~ + +chromedriver: + <<: *default diff --git a/app/console b/bin/console similarity index 75% rename from app/console rename to bin/console index 1de6db439..bcde7a1a9 100755 --- a/app/console +++ b/bin/console @@ -1,22 +1,29 @@ #!/usr/bin/env php getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); +if ($env === 'dev' && !isset($_ENV['APP_FRONT_CONTROLLER'])) { + $_ENV['APP_FRONT_CONTROLLER'] = 'index_dev.php'; +} $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; +if ($debug) { + Debug::enable(); +} + $kernel = new AppKernel($env, $debug); $application = new Application($kernel); $application->run($input); diff --git a/app/console-framework b/bin/dist old mode 100644 new mode 100755 similarity index 71% rename from app/console-framework rename to bin/dist index 1de6db439..8940a68b0 --- a/app/console-framework +++ b/bin/dist @@ -7,16 +7,19 @@ set_time_limit(0); -require_once __DIR__.'/bootstrap.php.cache'; -require_once __DIR__.'/AppKernel.php'; +require_once __DIR__.'/../vendor/autoload.php'; +require_once __DIR__.'/../src/DistributionKernel.php'; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Component\Console\Input\ArgvInput; $input = new ArgvInput(); $env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev'); +if ($env === 'dev' && !isset($_ENV['APP_FRONT_CONTROLLER'])) { + $_ENV['APP_FRONT_CONTROLLER'] = 'index_dev.php'; +} $debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod'; -$kernel = new AppKernel($env, $debug); +$kernel = new DistributionKernel($env, $debug); $application = new Application($kernel); $application->run($input); diff --git a/composer.json b/composer.json index 55416a898..8394d41ac 100644 --- a/composer.json +++ b/composer.json @@ -11,69 +11,109 @@ ], "autoload": { "psr-4": {"": "src/"}, + "classmap": [ + "src/AppKernel.php", + "src/AppCache.php" + ], "exclude-from-classmap": ["**/Tests/"] }, - "repositories": [ - { + "repositories": { + "composer": { "type": "composer", "url": "https://packagist.orocrm.com" + }, + "asset-packagist": { + "type": "composer", + "url": "https://asset-packagist.orocrm.com" } - ], - "config": { - "component-dir": "web/bundles/components", - "bin-dir": "bin" }, "require":{ - "php": ">=5.4.4", - "oro/platform": "2.1.*", - "oro/platform-serialised-fields": "2.1.*", - "akeneo/batch-bundle": "0.4.2", - "monolog/monolog": "~1.22", - "nelmio/api-doc-bundle": "~2.13", - "jms/serializer-bundle": "~1.1", - "beberlei/assert": "2.*", - "zendframework/zend-mail": "~2.4", - "ezyang/htmlpurifier": "~4.8", + "oro/platform": "~3.1.1", + "oro/platform-serialised-fields": "~3.1.1", + "oro/calendar-bundle": "~3.1.1", "bordeux/email-cleaner": "0.6.*", - "michelf/php-markdown": "~1.4", - "hwi/oauth-bundle": "~0.5", - "ramsey/uuid": "~3.5", - "jms/job-queue-bundle": "1.4" - + "michelf/php-markdown": "~1.8", + "ramsey/uuid": "~3.8", + "jms/job-queue-bundle": "1.4.*", + "beberlei/assert": "^3.2", + "cweagans/composer-patches": "^1.7" }, "require-dev": { - "phpunit/phpunit": "4.8.*", + "sensio/generator-bundle": "3.1.*", + "behat/behat": "3.4.*", + "behat/mink-extension": "2.3.*", + "behat/mink-selenium2-driver": "1.*", + "behat/symfony2-extension": "2.1.*", + "nelmio/alice": "2.3.*", + "phpunit/phpunit": "6.5.*", + "johnkary/phpunit-speedtrap": "2.0.*", + "mybuilder/phpunit-accelerator": "2.0.*", + "squizlabs/php_codesniffer": "3.3.*", + "phpmd/phpmd": "2.6.*", + "sebastian/phpcpd": "3.0.*", + "phpunit/phpcov": "4.0.*", + "symfony/phpunit-bridge": "3.4.*", + "friendsofphp/php-cs-fixer": "2.12.6", + "oro/twig-inspector": "1.0.*", "eltrino/phpunit-mockannotations": "*" }, + "config": { + "component-dir": "public/bundles/components", + "bin-dir": "bin", + "fxp-asset": { + "enabled": false + } + }, "scripts": { "post-install-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", - "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setPermissions", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets" + "@build-parameters", + "@build-bootstrap", + "@install-requirements-file", + "@set-permissions", + "@install-assets", + "@set-assets-version" ], "post-update-cmd": [ - "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", - "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setPermissions", - "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets" + "@build-parameters", + "@build-bootstrap", + "@install-requirements-file", + "@set-permissions", + "@install-assets", + "@set-assets-version" + ], + "build-parameters": [ + "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" + ], + "build-bootstrap": [ + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap" + ], + "install-requirements-file": [ + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" + ], + "set-permissions": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setPermissions" + ], + "install-assets": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::installAssets" + ], + "set-assets-version": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setAssetsVersion" ] }, "minimum-stability": "dev", "prefer-stable": true, "extra": { - "symfony-app-dir": "app", - "symfony-web-dir": "web", + "symfony-web-dir": "public", + "symfony-var-dir": "var", + "symfony-bin-dir": "bin", + "symfony-tests-dir": "tests", "incenteev-parameters": { - "file": "app/config/parameters.yml" - }, - "symfony-assets-install": "symlink", - "branch-alias": { - "dev-master": "2.0.x-dev" + "file": "config/parameters.yml" }, - "asset-installer-paths": { - "npm-asset-library": "web/bundles/npmassets", - "bower-asset-library": "web/bundles/bowerassets" + "patches": { + "oro/platform": { + "UpdateEnumEntityTranslations": "patches/update_enum_entity_translations.patch" + } } } } diff --git a/composer.lock b/composer.lock index 73cf5199f..788e6aae5 100644 --- a/composer.lock +++ b/composer.lock @@ -1,95 +1,32 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "35d700544fb2aa760091799181fc738a", + "content-hash": "7d559e9e27cdc23d4024bcd21fea02d0", "packages": [ - { - "name": "a2lix/translation-form-bundle", - "version": "1.x-dev", - "target-dir": "A2lix/TranslationFormBundle", - "source": { - "type": "git", - "url": "https://github.com/a2lix/TranslationFormBundle.git", - "reference": "5041f05883685d944e2d9b44343709b51a1d476f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/a2lix/TranslationFormBundle/zipball/5041f05883685d944e2d9b44343709b51a1d476f", - "reference": "5041f05883685d944e2d9b44343709b51a1d476f", - "shasum": "" - }, - "require": { - "symfony/symfony": ">=2.3" - }, - "suggest": { - "a2lix/i18n-doctrine-bundle": "For A2lix strategy", - "knplabs/doctrine-behaviors": "For Knp strategy", - "stof/doctrine-extensions-bundle": "For Gedmo strategy" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-0": { - "A2lix\\TranslationFormBundle": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "David ALLIX" - }, - { - "name": "A2lix", - "homepage": "http://www.a2lix.fr" - } - ], - "description": "Translate your doctrine objects easily with a custom form field", - "homepage": "https://github.com/a2lix/TranslationFormBundle", - "keywords": [ - "Symfony2", - "doctrine2", - "form", - "gedmo", - "i18n", - "internationalization", - "knplabs", - "translatable", - "translation" - ], - "time": "2016-08-05 18:11:57" - }, { "name": "akeneo/batch-bundle", - "version": "0.4.2", + "version": "0.4.8", "target-dir": "Akeneo/Bundle/BatchBundle", "source": { "type": "git", - "url": "https://github.com/akeneo/BatchBundle.git", - "reference": "3ecebd637ba8a4b3269c641bc55905a8397af34c" + "url": "https://github.com/laboro/BatchBundle.git", + "reference": "aff218f6ba5714baae575698c0578bf8da207f41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/akeneo/BatchBundle/zipball/3ecebd637ba8a4b3269c641bc55905a8397af34c", - "reference": "3ecebd637ba8a4b3269c641bc55905a8397af34c", + "url": "https://api.github.com/repos/laboro/BatchBundle/zipball/aff218f6ba5714baae575698c0578bf8da207f41", + "reference": "aff218f6ba5714baae575698c0578bf8da207f41", "shasum": "" }, "require": { - "doctrine/orm": ">=2.1.3", - "monolog/monolog": ">=1.1.0", + "doctrine/orm": "^2.1.3", + "monolog/monolog": "^1.1.0", "php": ">=5.4.4", - "swiftmailer/swiftmailer": ">=4.1.3", - "symfony/swiftmailer-bundle": ">=2.3.5", - "symfony/symfony": ">=2.1" + "symfony/swiftmailer-bundle": "^2.3.5", + "symfony/symfony": "^2.1|~3.0" }, "require-dev": { "phpspec/phpspec": "2.1.*" @@ -105,20 +42,22 @@ "Akeneo\\Bundle\\BatchBundle": "" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Akeneo Batch Bundle", "keywords": [ - "akeneo", - "batch", - "job", - "processor", - "reader", - "writer" + "Akeneo", + "Batch", + "Job", + "Processor", + "Reader", + "Writer" ], - "time": "2015-05-05T21:23:02+00:00" + "support": { + "source": "https://github.com/laboro/BatchBundle/tree/0.4.8" + }, + "time": "2018-03-20T11:52:51+00:00" }, { "name": "ass/xmlsecurity", @@ -182,25 +121,31 @@ }, { "name": "beberlei/assert", - "version": "v2.7.4", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/beberlei/assert.git", - "reference": "3ee3bc468a3ce4bbfc3d74f53c6cdb5242d39d1a" + "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/3ee3bc468a3ce4bbfc3d74f53c6cdb5242d39d1a", - "reference": "3ee3bc468a3ce4bbfc3d74f53c6cdb5242d39d1a", + "url": "https://api.github.com/repos/beberlei/assert/zipball/5367e3895976b49704ae671f75bc5f0ba1b986ab", + "reference": "5367e3895976b49704ae671f75bc5f0ba1b986ab", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-intl": "*", + "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.3" + "ext-simplexml": "*", + "php": "^7.0 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1.1", - "phpunit/phpunit": "^4|^5" + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": ">=6.0.0", + "yoast/phpunit-polyfills": "^0.1.0" }, "type": "library", "autoload": { @@ -233,20 +178,20 @@ "assertion", "validation" ], - "time": "2017-03-14T18:06:52+00:00" + "time": "2020-11-13T20:02:54+00:00" }, { "name": "behat/transliterator", - "version": "v1.2.0", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/Behat/Transliterator.git", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", "shasum": "" }, "require": { @@ -254,7 +199,8 @@ }, "require-dev": { "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0" + "php-yaoi/php-yaoi": "^1.0", + "phpunit/phpunit": "^4.8.36|^6.3" }, "type": "library", "extra": { @@ -263,8 +209,8 @@ } }, "autoload": { - "psr-0": { - "Behat\\Transliterator": "src/" + "psr-4": { + "Behat\\Transliterator\\": "src/Behat/Transliterator" } }, "notification-url": "https://packagist.org/downloads/", @@ -277,7 +223,7 @@ "slug", "transliterator" ], - "time": "2017-04-04T11:38:05+00:00" + "time": "2020-01-14T16:39:13+00:00" }, { "name": "bordeux/email-cleaner", @@ -319,60 +265,39 @@ "time": "2015-02-13T08:49:34+00:00" }, { - "name": "bower-asset/Autolinker.js", - "version": "0.11.0", + "name": "bower-asset/autobahnjs", + "version": "v0.8.0", "source": { "type": "git", - "url": "https://github.com/gregjacobs/Autolinker.js.git", - "reference": "67a09085e72fe50d03deb94b6753be895735676c" + "url": "https://github.com/crossbario/autobahn-js.git", + "reference": "5561cb7d39004cb764a01454d922c2b4a083d010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gregjacobs/Autolinker.js/zipball/67a09085e72fe50d03deb94b6753be895735676c", - "reference": "67a09085e72fe50d03deb94b6753be895735676c", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "dist/Autolinker.js", - "bower-asset-ignore": [ - "**/.*", - "build", - "node_modules", - "bower_components", - "test", - "tests", - "vendor" - ] + "url": "https://api.github.com/repos/crossbario/autobahn-js/zipball/5561cb7d39004cb764a01454d922c2b4a083d010", + "reference": "5561cb7d39004cb764a01454d922c2b4a083d010", + "shasum": null }, - "license": [ - "MIT" - ], - "description": "Automatically links URLs, email addresses, and Twitter handles in a string of text or HTML.", - "keywords": [ - "anchor", - "auto", - "autolink", - "link", - "url", - "urls" - ] + "type": "bower-asset" }, { - "name": "bower-asset/autobahnjs", - "version": "v0.8.0", + "name": "bower-asset/autolinker.js", + "version": "1.4.4", "source": { "type": "git", - "url": "https://github.com/crossbario/autobahn-js.git", - "reference": "5561cb7d39004cb764a01454d922c2b4a083d010" + "url": "https://github.com/gregjacobs/Autolinker.js.git", + "reference": "355143d271c314e1cb68eb120b55450461927427" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/crossbario/autobahn-js/zipball/5561cb7d39004cb764a01454d922c2b4a083d010", - "reference": "5561cb7d39004cb764a01454d922c2b4a083d010", - "shasum": "" + "url": "https://api.github.com/repos/gregjacobs/Autolinker.js/zipball/355143d271c314e1cb68eb120b55450461927427", + "reference": "355143d271c314e1cb68eb120b55450461927427", + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset", + "license": [ + "MIT" + ] }, { "name": "bower-asset/backbone", @@ -386,29 +311,12 @@ "type": "zip", "url": "https://api.github.com/repos/jashkenas/backbone/zipball/05fde9e201f7e2137796663081105cd6dad12a98", "reference": "05fde9e201f7e2137796663081105cd6dad12a98", - "shasum": "" + "shasum": null }, "require": { "bower-asset/underscore": ">=1.7.0" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "backbone.js", - "bower-asset-ignore": [ - "docs", - "examples", - "test", - "*.yml", - "*.html", - "*.ico", - "*.md", - "CNAME", - ".*", - "karma.*", - "component.json", - "package.json" - ] - } + "type": "bower-asset" }, { "name": "bower-asset/backbone-pageable", @@ -422,47 +330,31 @@ "type": "zip", "url": "https://api.github.com/repos/backbone-paginator/backbone-pageable/zipball/d1063263056195d2534fd7d56595c1816eec2173", "reference": "d1063263056195d2534fd7d56595c1816eec2173", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { "name": "bower-asset/backbone.paginator", "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/backbone-paginator/backbone.paginator.git", + "url": "git@github.com:addyosmani/backbone.paginator.git", "reference": "71123a819b2b0fd549da6699f4f0e46b48223025" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/backbone-paginator/backbone.paginator/zipball/71123a819b2b0fd549da6699f4f0e46b48223025", + "url": "https://api.github.com/repos/addyosmani/backbone.paginator/zipball/71123a819b2b0fd549da6699f4f0e46b48223025", "reference": "71123a819b2b0fd549da6699f4f0e46b48223025", - "shasum": "" + "shasum": null }, "require": { "bower-asset/backbone": ">=1.2.3,<2.0.0", "bower-asset/underscore": ">=1.8.3,<2.0.0" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "lib/backbone.paginator.js", - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests", - "api", - "examples" - ] - }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "A pageable Backbone.Collection superset. Supports server-side/client-side/infinite pagination and sorting.", - "keywords": [ - "backbone" ] }, { @@ -470,41 +362,22 @@ "version": "0.3.7", "source": { "type": "git", - "url": "https://github.com/cloudflare/backgrid.git", + "url": "git@github.com:wyuenho/backgrid.git", "reference": "9a45dbc4a2af4a555e8274b7cc1a966a7586cfea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cloudflare/backgrid/zipball/9a45dbc4a2af4a555e8274b7cc1a966a7586cfea", + "url": "https://api.github.com/repos/wyuenho/backgrid/zipball/9a45dbc4a2af4a555e8274b7cc1a966a7586cfea", "reference": "9a45dbc4a2af4a555e8274b7cc1a966a7586cfea", - "shasum": "" + "shasum": null }, "require": { "bower-asset/backbone": "~1.2.3", "bower-asset/underscore": ">=1.8.3,<2.0.0" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "lib/backgrid.js", - "lib/backgrid.css" - ], - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests", - "api" - ] - }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "Backgrid.js is a set of components for building semantic and easily stylable data grid widgets with Backbone.", - "keywords": [ - "backbone", - "backgrid" ] }, { @@ -512,14 +385,14 @@ "version": "v0.3.8", "source": { "type": "git", - "url": "https://github.com/cloudflare/backgrid-paginator.git", + "url": "git@github.com:wyuenho/backgrid-paginator.git", "reference": "77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cloudflare/backgrid-paginator/zipball/77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7", + "url": "https://api.github.com/repos/wyuenho/backgrid-paginator/zipball/77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7", "reference": "77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7", - "shasum": "" + "shasum": null }, "require": { "bower-asset/backbone": ">=1.1.2,<2.0.0", @@ -527,27 +400,9 @@ "bower-asset/backgrid": "~0.3.5", "bower-asset/underscore": ">=1.5.0,<2.0.0" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "backgrid-paginator.js", - "backgrid-paginator.css" - ], - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] - }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "Backgrid.js extension for pagination.", - "keywords": [ - "backbone", - "backgrid" ] }, { @@ -555,176 +410,91 @@ "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/davidchambers/Base64.js.git", + "url": "git@github.com:davidchambers/Base64.js.git", "reference": "b2d49f347ed1bce61000a82769bffc837b7c79dc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/davidchambers/Base64.js/zipball/b2d49f347ed1bce61000a82769bffc837b7c79dc", "reference": "b2d49f347ed1bce61000a82769bffc837b7c79dc", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "./base64.js", - "bower-asset-ignore": [ - "**/.*", - "Makefile", - "coverage/", - "scripts/", - "test/" - ] + "shasum": null }, + "type": "bower-asset", "license": [ "WTFPL" - ], - "description": "Base64 encoding and decoding" + ] }, { "name": "bower-asset/bean", "version": "v1.0.6", "source": { "type": "git", - "url": "https://github.com/fat/bean.git", + "url": "git@github.com:fat/bean.git", "reference": "0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/fat/bean/zipball/0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea", "reference": "0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea", - "shasum": "" - }, - "type": "bower-asset-library" - }, - { - "name": "bower-asset/bootstrap", - "version": "v2.3.0", - "source": { - "type": "git", - "url": "https://github.com/twbs/bootstrap.git", - "reference": "8c7f9c66a7d12f47f50618ef420868fe836d0c33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twbs/bootstrap/zipball/8c7f9c66a7d12f47f50618ef420868fe836d0c33", - "reference": "8c7f9c66a7d12f47f50618ef420868fe836d0c33", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { "name": "bower-asset/chaplin", - "version": "1.0.0", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/chaplinjs/downloads.git", - "reference": "56fc289d1ccc39a06678cf100fded94ccfe1ee17" + "url": "git@github.com:chaplinjs/downloads.git", + "reference": "9b52a254842650787341c67e82edc7758220c19f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/chaplinjs/downloads/zipball/56fc289d1ccc39a06678cf100fded94ccfe1ee17", - "reference": "56fc289d1ccc39a06678cf100fded94ccfe1ee17", - "shasum": "" + "url": "https://api.github.com/repos/chaplinjs/downloads/zipball/9b52a254842650787341c67e82edc7758220c19f", + "reference": "9b52a254842650787341c67e82edc7758220c19f", + "shasum": null }, "require": { "bower-asset/backbone": "dev-1.x|1.x" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "chaplin.js" - } + "type": "bower-asset" }, { "name": "bower-asset/crypto-js", "version": "3.1.7", "source": { "type": "git", - "url": "https://github.com/brix/crypto-js.git", + "url": "git@github.com:brix/crypto-js.git", "reference": "67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/brix/crypto-js/zipball/67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6", "reference": "67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "index.js", - "bower-asset-ignore": [] + "shasum": null }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "JavaScript library of crypto standards.", - "keywords": [ - "AES", - "Base64", - "CBC", - "CFB", - "CTR", - "DES", - "HMAC", - "Hash", - "MD5", - "OFB", - "PBKDF2", - "RC4", - "Rabbit", - "SHA-1", - "SHA-256", - "SHA1", - "SHA256", - "crypto", - "security" ] }, { "name": "bower-asset/datepair", - "version": "0.4.4", + "version": "0.4.15", "source": { "type": "git", - "url": "https://github.com/jonthornton/Datepair.js.git", - "reference": "cfbc7a43c45a7823c0324584c80a77776b409ee0" + "url": "git@github.com:jonthornton/Datepair.js.git", + "reference": "5d243d5d513c42dfc07e27db80484e91bc15b9d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jonthornton/Datepair.js/zipball/cfbc7a43c45a7823c0324584c80a77776b409ee0", - "reference": "cfbc7a43c45a7823c0324584c80a77776b409ee0", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "dist/datepair.js", - "dist/jquery.datepair.js" - ], - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "components", - "spec", - "Gruntfile.js", - "src", - "bower_components", - "test", - "tests" - ] + "url": "https://api.github.com/repos/jonthornton/Datepair.js/zipball/5d243d5d513c42dfc07e27db80484e91bc15b9d1", + "reference": "5d243d5d513c42dfc07e27db80484e91bc15b9d1", + "shasum": null }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "A javascript plugin for intelligently selecting date and time ranges inspired by Google Calendar.", - "keywords": [ - "calendar", - "date", - "datepicker", - "form", - "input", - "picker", - "time", - "timepicker", - "ui" ] }, { @@ -739,127 +509,88 @@ "type": "zip", "url": "https://api.github.com/repos/HumbleSoftware/Flotr2/zipball/df0ddedcab1a8fdb3a7abafc5fe97819931e7bd5", "reference": "df0ddedcab1a8fdb3a7abafc5fe97819931e7bd5", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library", - "time": "2014-07-21 18:45:41" + "type": "bower-asset", + "time": "2014-07-21T18:45:41+00:00" }, { "name": "bower-asset/font-awesome", "version": "v4.7.0", "source": { "type": "git", - "url": "https://github.com/FortAwesome/Font-Awesome.git", + "url": "git@github.com:FortAwesome/Font-Awesome.git", "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/a8386aae19e200ddb0f6845b5feeee5eb7013687", "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "less/font-awesome.less", - "scss/font-awesome.scss" - ], - "bower-asset-ignore": [ - "*/.*", - "*.json", - "src", - "*.yml", - "Gemfile", - "Gemfile.lock", - "*.md" - ] + "shasum": null }, + "type": "bower-asset", "license": [ "OFL-1.1", "MIT", "CC-BY-3.0" - ], - "description": "Font Awesome" + ] }, { "name": "bower-asset/fullcalendar", - "version": "v2.2.3", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/fullcalendar/fullcalendar.git", - "reference": "e89b3256062d763eb144f1146dd2db9be1b639a6" + "reference": "447ab267528a211b253058dfb5d898b7a2296492" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fullcalendar/fullcalendar/zipball/e89b3256062d763eb144f1146dd2db9be1b639a6", - "reference": "e89b3256062d763eb144f1146dd2db9be1b639a6", - "shasum": "" + "url": "https://api.github.com/repos/fullcalendar/fullcalendar/zipball/447ab267528a211b253058dfb5d898b7a2296492", + "reference": "447ab267528a211b253058dfb5d898b7a2296492", + "shasum": null }, "require": { - "bower-asset/jquery": ">=1.7.1", - "bower-asset/moment": ">=2.5.0" + "bower-asset/jquery": ">=2,<4.0", + "bower-asset/moment": ">=2.9.0,<3.0.0" }, - "require-dev": { - "bower-asset/bootstrap": "~3.2.0", - "bower-asset/jasmine-fixture": "~1.2.0", - "bower-asset/jasmine-jquery": "~2.0.3", - "bower-asset/jquery-mockjax": "~1.5.4", - "bower-asset/jquery-simulate-ext": "~1.3.0", - "bower-asset/jquery-ui": ">=1.11.1", - "bower-asset/moment-timezone": "~0.2.1" + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/fuse", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/krisk/Fuse.git", + "reference": "f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "dist/fullcalendar.js", - "dist/fullcalendar.css" - ], - "bower-asset-ignore": [ - "*", - "**/.*", - "!/dist/**", - "!/bower.json", - "!/changelog.*", - "!/license.*", - "!/readme.*" - ] + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/krisk/Fuse/zipball/f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33", + "reference": "f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33", + "shasum": null }, - "description": "Full-sized drag & drop event calendar", - "keywords": [ - "calendar", - "event", - "full-sized" - ] + "type": "bower-asset" }, { "name": "bower-asset/jquery", - "version": "3.1.1", + "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/jquery/jquery-dist.git", - "reference": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3" + "reference": "15bc73803f76bc53b654b9fdbbbc096f56d7c03d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", - "reference": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "dist/jquery.js", - "bower-asset-ignore": [ - "package.json" - ] + "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/15bc73803f76bc53b654b9fdbbbc096f56d7c03d", + "reference": "15bc73803f76bc53b654b9fdbbbc096f56d7c03d", + "shasum": null }, + "type": "bower-asset", "license": [ "MIT" - ], - "keywords": [ - "browser", - "javascript", - "jquery", - "library" ] }, { @@ -867,34 +598,18 @@ "version": "v0.0.1", "source": { "type": "git", - "url": "https://github.com/flydreamers/ajaxQueue.git", + "url": "git@github.com:flydreamers/ajaxQueue.git", "reference": "50ffe758abe1a365ad228851ee7028677bfb07b4" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/flydreamers/ajaxQueue/zipball/50ffe758abe1a365ad228851ee7028677bfb07b4", "reference": "50ffe758abe1a365ad228851ee7028677bfb07b4", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "ajax-queue.js", - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] + "shasum": null }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "An jquery queue for serialising a queue of ajax request", - "keywords": [ - "ajax", - "jquery", - "queue" ] }, { @@ -902,60 +617,41 @@ "version": "v1.4.1", "source": { "type": "git", - "url": "https://github.com/carhartl/jquery-cookie.git", + "url": "git@github.com:carhartl/jquery-cookie.git", "reference": "7f88a4e631aba8a8c688fd8999ce6b9bcfd50718" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/carhartl/jquery-cookie/zipball/7f88a4e631aba8a8c688fd8999ce6b9bcfd50718", "reference": "7f88a4e631aba8a8c688fd8999ce6b9bcfd50718", - "shasum": "" + "shasum": null }, "require": { "bower-asset/jquery": ">=1.2" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "./jquery.cookie.js" - ], - "bower-asset-ignore": [ - "test", - ".*", - "*.json", - "*.md", - "*.txt", - "Gruntfile.js" - ] - } + "type": "bower-asset" }, { "name": "bower-asset/jquery-form", - "version": "3.37.0", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/jquery-form/form.git", - "reference": "5e7391bca903586137b75304a6352cb2e60fbb22" + "reference": "c15a69251b36544cda48892c23e0dcec21fff838" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jquery-form/form/zipball/5e7391bca903586137b75304a6352cb2e60fbb22", - "reference": "5e7391bca903586137b75304a6352cb2e60fbb22", - "shasum": "" + "url": "https://api.github.com/repos/jquery-form/form/zipball/c15a69251b36544cda48892c23e0dcec21fff838", + "reference": "c15a69251b36544cda48892c23e0dcec21fff838", + "shasum": null }, "require": { - "bower-asset/jquery": ">=1.5" + "bower-asset/jquery": ">=1.7" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "jquery.form.js", - "bower-asset-ignore": [ - "README.md", - "composer.json", - "form.jquery.json", - "package.json" - ] - } + "type": "bower-asset", + "license": [ + "(MIT OR LGPL-3.0)" + ] }, { "name": "bower-asset/jquery-mousewheel", @@ -969,239 +665,112 @@ "type": "zip", "url": "https://api.github.com/repos/jquery/jquery-mousewheel/zipball/67289b6b2aa0066d7d78a5807f520387135ffb22", "reference": "67289b6b2aa0066d7d78a5807f520387135ffb22", - "shasum": "" + "shasum": null }, "require": { "bower-asset/jquery": ">=1.2.2" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "./jquery.mousewheel.js", - "bower-asset-ignore": [ - "*.json", - "*.markdown", - "*.txt", - ".*", - "!LICENSE.txt", - "Gruntfile.js", - "test" - ] - } + "type": "bower-asset" }, { "name": "bower-asset/jquery-ui-multiselect-widget", - "version": "1.14", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/ehynds/jquery-ui-multiselect-widget.git", - "reference": "93d48ba33a593e48670fed9302ee69d4d7450da6" + "url": "git@github.com:ehynds/jquery-ui-multiselect-widget.git", + "reference": "a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ehynds/jquery-ui-multiselect-widget/zipball/93d48ba33a593e48670fed9302ee69d4d7450da6", - "reference": "93d48ba33a593e48670fed9302ee69d4d7450da6", - "shasum": "" + "url": "https://api.github.com/repos/ehynds/jquery-ui-multiselect-widget/zipball/a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635", + "reference": "a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635", + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { "name": "bower-asset/jquery-validate", - "version": "1.11.1", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/jquery-validation/jquery-validation.git", - "reference": "3b39aec630e2ecd336bc36d457d1a645bd91660f" + "reference": "29b9c702b9c831419f9f774d2acb86f42f803e11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jquery-validation/jquery-validation/zipball/3b39aec630e2ecd336bc36d457d1a645bd91660f", - "reference": "3b39aec630e2ecd336bc36d457d1a645bd91660f", - "shasum": "" + "url": "https://api.github.com/repos/jquery-validation/jquery-validation/zipball/29b9c702b9c831419f9f774d2acb86f42f803e11", + "reference": "29b9c702b9c831419f9f774d2acb86f42f803e11", + "shasum": null + }, + "require": { + "bower-asset/jquery": ">=1.7.2" }, - "type": "bower-asset-library" + "type": "bower-asset", + "license": [ + "MIT" + ] }, { "name": "bower-asset/jquery.numeric", - "version": "v1.4.1", + "version": "v1.5", "source": { "type": "git", - "url": "https://github.com/SamWM/jquery-numeric.git", - "reference": "d2b0435589191a61c9e70f873938accd56688ed5" + "url": "git@github.com:SamWM/jquery-numeric.git", + "reference": "bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SamWM/jquery-numeric/zipball/d2b0435589191a61c9e70f873938accd56688ed5", - "reference": "d2b0435589191a61c9e70f873938accd56688ed5", - "shasum": "" + "url": "https://api.github.com/repos/SamWM/jquery-numeric/zipball/bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9", + "reference": "bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.6" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "jquery.numeric.js", - "bower-asset-ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] - }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "jQuery plugin to allow only numbers to be typed into a text box" - }, - { - "name": "bower-asset/json2", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/douglascrockford/JSON-js.git", - "reference": "e25ba46913160617935f837836016ea7ed2be08c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/douglascrockford/JSON-js/zipball/e25ba46913160617935f837836016ea7ed2be08c", - "reference": "e25ba46913160617935f837836016ea7ed2be08c", - "shasum": "" - }, - "type": "bower-asset-library", - "time": "2017-02-08 18:28:50" + ] }, { "name": "bower-asset/jsplumb", "version": "1.7.10", "source": { "type": "git", - "url": "https://github.com/jsplumb/jsPlumb.git", + "url": "git@github.com:sporritt/jsPlumb.git", "reference": "b2b347b3d20a172d4f73528365bcf01ef953017c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsplumb/jsPlumb/zipball/b2b347b3d20a172d4f73528365bcf01ef953017c", + "url": "https://api.github.com/repos/sporritt/jsPlumb/zipball/b2b347b3d20a172d4f73528365bcf01ef953017c", "reference": "b2b347b3d20a172d4f73528365bcf01ef953017c", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "dist/js/jsPlumb-1.7.10.js" - ], - "bower-asset-ignore": [ - "demo", - "dist/apidocs", - "dist/demo", - "dist/doc", - "dist/lib", - "dist/tests", - "dist/index.html", - "doc", - "img", - "lib", - "jekyll", - "node_modules", - "src", - "tests", - "Gruntfile.js", - "README.md", - "changelog.txt", - "index.html", - "build-support.js", - "package.json", - "todo.txt", - "**/.*", - "bower_components", - "test" - ] + "shasum": null }, + "type": "bower-asset", "license": [ "MIT/GPL2" - ], - "description": "Visual connectivity for webapps" - }, - { - "name": "bower-asset/less", - "version": "v2.5.3", - "source": { - "type": "git", - "url": "https://github.com/less/less.js.git", - "reference": "33fa72767e7474f3aedbbff83d8343217c08f58a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/less/less.js/zipball/33fa72767e7474f3aedbbff83d8343217c08f58a", - "reference": "33fa72767e7474f3aedbbff83d8343217c08f58a", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "dist/less.js", - "bower-asset-ignore": [ - "**/.*", - "benchmark", - "bin", - "build", - "gradle", - "lib", - "test", - "*.md", - "LICENSE", - "Gruntfile.js", - "*.json", - "*.yml", - "build.gradle", - "gradlew", - "gradlew.bat", - ".gitattributes", - ".jshintrc", - ".npmignore" - ] - } + ] }, { "name": "bower-asset/lightgallery", - "version": "1.2.18", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/sachinchoolur/lightGallery.git", - "reference": "1524c0c183066b22edbb34068522abaa8d598b84" + "url": "git@github.com:sachinchoolur/lightGallery.git", + "reference": "7b7603e9b1bbabee2228fb8411f34ad67993c130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sachinchoolur/lightGallery/zipball/1524c0c183066b22edbb34068522abaa8d598b84", - "reference": "1524c0c183066b22edbb34068522abaa8d598b84", - "shasum": "" + "url": "https://api.github.com/repos/sachinchoolur/lightGallery/zipball/7b7603e9b1bbabee2228fb8411f34ad67993c130", + "reference": "7b7603e9b1bbabee2228fb8411f34ad67993c130", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.7.0" }, - "require-dev": { - "bower-asset/qunit": "~1.12.0" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "dist/js/lightgallery.min.js", - "dist/css/lightgallery.css", - "dist/fonts/*", - "dist/img/*" - ], - "bower-asset-ignore": [ - "README.md" - ] - }, + "type": "bower-asset", "license": [ - "Apache-2.0" - ], - "description": "A lightweight, customizable, modular, responsive, lightbox gallery plugin for jQuery.", - "keywords": [ - "gallery", - "image", - "lightbox", - "vimeo", - "youtube" + "GPLv3" ] }, { @@ -1209,82 +778,36 @@ "version": "3.1.5", "source": { "type": "git", - "url": "https://github.com/malihu/malihu-custom-scrollbar-plugin.git", + "url": "git@github.com:malihu/malihu-custom-scrollbar-plugin.git", "reference": "eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/malihu/malihu-custom-scrollbar-plugin/zipball/eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29", "reference": "eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29", - "shasum": "" + "shasum": null }, "require": { "bower-asset/jquery": ">=1.6", "bower-asset/jquery-mousewheel": ">=3.0.6" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "./jquery.mCustomScrollbar.js", - "./jquery.mCustomScrollbar.css", - "./mCSB_buttons.png" - ], - "bower-asset-ignore": [ - "*.md", - ".*", - "*.txt", - "*.json", - "*.html", - "/examples", - "/source-files", - "/js" - ] - }, - "description": "Highly customizable custom scrollbar jQuery plugin, featuring vertical/horizontal scrollbars, scrolling momentum, mouse-wheel, keyboard and touch support, user defined callbacks etc.", - "keywords": [ - "custom-scrollbar", - "jquery", - "scrollbar" - ] + "type": "bower-asset" }, { "name": "bower-asset/moment", - "version": "2.18.1", + "version": "2.24.0", "source": { "type": "git", "url": "https://github.com/moment/moment.git", - "reference": "b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/moment/moment/zipball/b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378", - "reference": "b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "moment.js", - "bower-asset-ignore": [ - "**/.*", - "benchmarks", - "bower_components", - "meteor", - "node_modules", - "scripts", - "tasks", - "test", - "component.json", - "composer.json", - "CONTRIBUTING.md", - "ender.js", - "Gruntfile.js", - "Moment.js.nuspec", - "package.js", - "package.json", - "ISSUE_TEMPLATE.md", - "typing-tests" - ] + "reference": "96d0d6791ab495859d09a868803d31a55c917de1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moment/moment/zipball/96d0d6791ab495859d09a868803d31a55c917de1", + "reference": "96d0d6791ab495859d09a868803d31a55c917de1", + "shasum": null }, + "type": "bower-asset", "license": [ "MIT" ] @@ -1294,64 +817,38 @@ "version": "0.5.13", "source": { "type": "git", - "url": "https://github.com/moment/moment-timezone.git", + "url": "git@github.com:moment/moment-timezone.git", "reference": "2b8da8f103f019949d45dc86fd6763960c8474d8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/moment/moment-timezone/zipball/2b8da8f103f019949d45dc86fd6763960c8474d8", "reference": "2b8da8f103f019949d45dc86fd6763960c8474d8", - "shasum": "" + "shasum": null }, "require": { "bower-asset/moment": ">=2.9.0" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "builds/moment-timezone-with-data-2012-2022.js", - "bower-asset-ignore": [ - "**/.*", - "tests", - "tasks", - "data/*/20*.json", - "contributing.md", - "Gruntfile.js", - "index.js", - "package.json" - ] - }, + "type": "bower-asset", "license": [ "MIT" - ], - "description": "Parse and display moments in any timezone." + ] }, { "name": "bower-asset/numeral", - "version": "1.5.2", + "version": "2.0.6", "source": { "type": "git", - "url": "https://github.com/adamwdraper/Numeral-js.git", - "reference": "c3556ece40cad2369fa34cbaed6d23651f8445f5" + "url": "git@github.com:adamwdraper/Numeral-js.git", + "reference": "7de892ffb438af6e63b9c4f6aff0c9bc3932f09f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/adamwdraper/Numeral-js/zipball/c3556ece40cad2369fa34cbaed6d23651f8445f5", - "reference": "c3556ece40cad2369fa34cbaed6d23651f8445f5", - "shasum": "" + "url": "https://api.github.com/repos/adamwdraper/Numeral-js/zipball/7de892ffb438af6e63b9c4f6aff0c9bc3932f09f", + "reference": "7de892ffb438af6e63b9c4f6aff0c9bc3932f09f", + "shasum": null }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "numeral.js" - }, - "description": "Format and manipulate numbers.", - "keywords": [ - "format", - "money", - "number", - "numeral", - "percentage", - "time" - ] + "type": "bower-asset" }, { "name": "bower-asset/select2", @@ -1365,58 +862,49 @@ "type": "zip", "url": "https://api.github.com/repos/select2/select2/zipball/13dc8a1ff3af6515c23dbca1ae3dcc0b0dc1b0c1", "reference": "13dc8a1ff3af6515c23dbca1ae3dcc0b0dc1b0c1", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { "name": "bower-asset/text", - "version": "2.0.10", + "version": "2.0.15", "source": { "type": "git", - "url": "https://github.com/requirejs/text.git", - "reference": "35c3ead097a9ede09469172666cc96349d2ce3e4" + "url": "git@github.com:requirejs/text.git", + "reference": "d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/requirejs/text/zipball/35c3ead097a9ede09469172666cc96349d2ce3e4", - "reference": "35c3ead097a9ede09469172666cc96349d2ce3e4", - "shasum": "" + "url": "https://api.github.com/repos/requirejs/text/zipball/d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f", + "reference": "d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f", + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset", + "license": [ + "MIT" + ] }, { "name": "bower-asset/timepicker", - "version": "1.4.13", + "version": "1.11.11", "source": { "type": "git", - "url": "https://github.com/jonthornton/jquery-timepicker.git", - "reference": "725fcdc26a4a29df0fc935d91de3a916951cfcb9" + "url": "git@github.com:jonthornton/jquery-timepicker.git", + "reference": "3f26316a6f417c77737488d763e9a9055c20d8ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jonthornton/jquery-timepicker/zipball/725fcdc26a4a29df0fc935d91de3a916951cfcb9", - "reference": "725fcdc26a4a29df0fc935d91de3a916951cfcb9", - "shasum": "" + "url": "https://api.github.com/repos/jonthornton/jquery-timepicker/zipball/3f26316a6f417c77737488d763e9a9055c20d8ae", + "reference": "3f26316a6f417c77737488d763e9a9055c20d8ae", + "shasum": null }, "require": { "bower-asset/jquery": ">=1.7" }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": [ - "./jquery.timepicker.js", - "./jquery.timepicker.css" - ] - }, + "type": "bower-asset", "license": [ "http://opensource.org/licenses/MIT" - ], - "description": "A jQuery timepicker plugin inspired by Google Calendar.", - "keywords": [ - "google calendar", - "picker", - "time" ] }, { @@ -1431,126 +919,84 @@ "type": "zip", "url": "https://api.github.com/repos/jashkenas/underscore/zipball/e4743ab712b8ab42ad4ccb48b155034d02394e4d", "reference": "e4743ab712b8ab42ad4ccb48b155034d02394e4d", - "shasum": "" - }, - "type": "bower-asset-library", - "extra": { - "bower-asset-main": "underscore.js", - "bower-asset-ignore": [ - "docs", - "test", - "*.yml", - "CNAME", - "index.html", - "favicon.ico", - "CONTRIBUTING.md", - ".*", - "component.json", - "package.json", - "karma.*" - ] - }, - "keywords": [ - "browser", - "client", - "functional", - "server", - "util" - ] - }, - { - "name": "bower-asset/uniform", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/AudithSoftworks/Uniform.git", - "reference": "3e9cd85965c930a6bec28385ad5e65daf8bb3fb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/AudithSoftworks/Uniform/zipball/3e9cd85965c930a6bec28385ad5e65daf8bb3fb5", - "reference": "3e9cd85965c930a6bec28385ad5e65daf8bb3fb5", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { "name": "bower-asset/when", "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/cujojs/when.git", + "url": "git@github.com:cujojs/when.git", "reference": "a2acf1d86d150f5e9617e761b4c69c3158ed01ea" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/cujojs/when/zipball/a2acf1d86d150f5e9617e761b4c69c3158ed01ea", "reference": "a2acf1d86d150f5e9617e761b4c69c3158ed01ea", - "shasum": "" + "shasum": null }, - "type": "bower-asset-library" + "type": "bower-asset" }, { - "name": "cboden/ratchet", - "version": "v0.2.8", + "name": "brick/math", + "version": "0.8.17", "source": { "type": "git", - "url": "https://github.com/ratchetphp/Ratchet.git", - "reference": "ebd17c6675b51044e711a1089b1534fd8c68c9e0" + "url": "https://github.com/brick/math.git", + "reference": "e6f8e7d04346a95be89580f8c2c22d6c3fa65556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ratchetphp/Ratchet/zipball/ebd17c6675b51044e711a1089b1534fd8c68c9e0", - "reference": "ebd17c6675b51044e711a1089b1534fd8c68c9e0", + "url": "https://api.github.com/repos/brick/math/zipball/e6f8e7d04346a95be89580f8c2c22d6c3fa65556", + "reference": "e6f8e7d04346a95be89580f8c2c22d6c3fa65556", "shasum": "" }, "require": { - "guzzle/http": ">=3.6.0,<3.8.0-dev", - "php": ">=5.3.3", - "react/socket": ">=0.2.0,<0.4.0-dev", - "symfony/http-foundation": "~2.1" + "ext-json": "*", + "php": "^7.1|^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15|^8.5", + "vimeo/psalm": "^3.5" }, "type": "library", "autoload": { - "psr-0": { - "Ratchet": "src", - "Ratchet\\Tests": "tests" + "psr-4": { + "Brick\\Math\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "http://res.im", - "role": "Developer" - } - ], - "description": "PHP WebSocket library", - "homepage": "http://socketo.me", + "description": "Arbitrary-precision arithmetic library", "keywords": [ - "Ratchet", - "WebSockets", - "server", - "sockets" + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" ], - "time": "2013-09-20T00:55:12+00:00" + "time": "2020-08-18T23:41:20+00:00" }, { "name": "components/jquery", - "version": "3.1.1", + "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/components/jquery.git", - "reference": "09a1658378bc1f818856086396ebeab7d0ec2276" + "reference": "901828b7968b18319e377dc23d466f28426ee083" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/components/jquery/zipball/09a1658378bc1f818856086396ebeab7d0ec2276", - "reference": "09a1658378bc1f818856086396ebeab7d0ec2276", + "url": "https://api.github.com/repos/components/jquery/zipball/901828b7968b18319e377dc23d466f28426ee083", + "reference": "901828b7968b18319e377dc23d466f28426ee083", "shasum": "" }, "type": "component", @@ -1561,7 +1007,10 @@ ], "files": [ "jquery.min.js", - "jquery.min.map" + "jquery.min.map", + "jquery.slim.js", + "jquery.slim.min.js", + "jquery.slim.min.map" ] } }, @@ -1571,13 +1020,12 @@ ], "authors": [ { - "name": "John Resig", - "email": "jeresig@gmail.com" + "name": "JS Foundation and other contributors" } ], "description": "jQuery JavaScript Library", "homepage": "http://jquery.com", - "time": "2016-09-23T06:06:29+00:00" + "time": "2019-10-23T05:15:13+00:00" }, { "name": "components/jqueryui", @@ -1666,35 +1114,33 @@ }, { "name": "composer/ca-bundle", - "version": "1.0.7", + "version": "1.2.9", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "b17e6153cb7f33c7e44eb59578dc12eee5dc8e12" + "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b17e6153cb7f33c7e44eb59578dc12eee5dc8e12", - "reference": "b17e6153cb7f33c7e44eb59578dc12eee5dc8e12", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/78a0e288fdcebf92aa2318a8d3656168da6ac1a5", + "reference": "78a0e288fdcebf92aa2318a8d3656168da6ac1a5", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5", + "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0" - }, - "suggest": { - "symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+" + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -1721,39 +1167,42 @@ "ssl", "tls" ], - "time": "2017-03-06T11:59:08+00:00" + "time": "2021-01-12T12:10:35+00:00" }, { "name": "composer/composer", - "version": "1.4.1", + "version": "1.6.5", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "7ee2a5e1cf32e9c8439445fe8dce2c046c2abebd" + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/7ee2a5e1cf32e9c8439445fe8dce2c046c2abebd", - "reference": "7ee2a5e1cf32e9c8439445fe8dce2c046c2abebd", + "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9", "shasum": "" }, "require": { "composer/ca-bundle": "^1.0", "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.0", + "composer/spdx-licenses": "^1.2", "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", "php": "^5.3.2 || ^7.0", "psr/log": "^1.0", "seld/cli-prompt": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0", - "symfony/filesystem": "^2.7 || ^3.0", - "symfony/finder": "^2.7 || ^3.0", - "symfony/process": "^2.7 || ^3.0" + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit": "^4.8.35 || ^5.7", "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" }, "suggest": { @@ -1767,7 +1216,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.6-dev" } }, "autoload": { @@ -1798,28 +1247,27 @@ "dependency", "package" ], - "time": "2017-03-10T08:29:45+00:00" + "time": "2018-05-04T09:44:59+00:00" }, { "name": "composer/semver", - "version": "1.4.2", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a", + "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.5 || ^5.0.5" }, "type": "library", "extra": { @@ -1860,33 +1308,32 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2020-12-03T15:47:16+00:00" }, { "name": "composer/spdx-licenses", - "version": "1.1.6", + "version": "1.5.5", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c" + "reference": "de30328a7af8680efdc03e396aad24befd513200" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/2603a0d7ddc00a015deb576fa5297ca43dee6b1c", - "reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", + "reference": "de30328a7af8680efdc03e396aad24befd513200", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -1921,34 +1368,110 @@ "spdx", "validator" ], - "time": "2017-04-03T19:08:52+00:00" + "time": "2020-12-03T16:04:16+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "abandoned": "psr/container", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "cweagans/composer-patches", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/ae02121445ad75f4eaff800cc532b5e6233e2ddf", + "reference": "ae02121445ad75f4eaff800cc532b5e6233e2ddf", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "time": "2020-09-30T17:56:20+00:00" }, { "name": "doctrine/annotations", - "version": "v1.3.1", + "version": "v1.6.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558" + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/bd4461328621bde0ae6b1b2675fbc6aca4ceb558", - "reference": "bd4461328621bde0ae6b1b2675fbc6aca4ceb558", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.6.1" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { @@ -1989,37 +1512,42 @@ "docblock", "parser" ], - "time": "2016-12-30T15:59:45+00:00" + "time": "2019-03-25T19:12:02+00:00" }, { "name": "doctrine/cache", - "version": "v1.6.1", + "version": "1.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3" + "reference": "13e3381b25847283a91948d04640543941309727" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3", - "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "url": "https://api.github.com/repos/doctrine/cache/zipball/13e3381b25847283a91948d04640543941309727", + "reference": "13e3381b25847283a91948d04640543941309727", "shasum": "" }, "require": { - "php": "~5.5|~7.0" + "php": "~7.1 || ^8.0" }, "conflict": { "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "phpunit/phpunit": "~4.8|~5.0", - "predis/predis": "~1.0", - "satooshi/php-coveralls": "~0.6" + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^6.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.9.x-dev" } }, "autoload": { @@ -2032,6 +1560,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -2040,10 +1572,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -2053,30 +1581,37 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", "keywords": [ + "abstraction", + "apcu", "cache", - "caching" + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" ], - "time": "2016-10-29T11:16:17+00:00" + "time": "2020-07-07T18:54:01+00:00" }, { "name": "doctrine/collections", - "version": "v1.4.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", - "reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { "doctrine/coding-standard": "~0.1@dev", @@ -2126,37 +1661,45 @@ "collections", "iterator" ], - "time": "2017-01-03T10:49:41+00:00" + "time": "2017-07-22T10:37:32+00:00" }, { "name": "doctrine/common", - "version": "v2.6.2", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3" + "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3", - "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "url": "https://api.github.com/repos/doctrine/common/zipball/2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", + "reference": "2053eafdf60c2172ee1373d1b9289ba1db7f1fc6", "shasum": "" }, "require": { - "doctrine/annotations": "1.*", - "doctrine/cache": "1.*", - "doctrine/collections": "1.*", - "doctrine/inflector": "1.*", - "doctrine/lexer": "1.*", - "php": "~5.5|~7.0" + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/inflector": "^1.0", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.1", + "doctrine/reflection": "^1.0", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.8|~5.0" + "doctrine/coding-standard": "^1.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7.x-dev" + "dev-master": "2.11.x-dev" } }, "autoload": { @@ -2169,6 +1712,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -2177,10 +1724,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -2188,46 +1731,51 @@ { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "Common Library for Doctrine projects", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ - "annotations", - "collections", - "eventmanager", - "persistence", - "spl" + "common", + "doctrine", + "php" ], - "time": "2016-11-30T16:50:46+00:00" + "time": "2020-01-10T15:49:25+00:00" }, { "name": "doctrine/data-fixtures", - "version": "v1.2.2", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e" + "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e", - "reference": "17fa5bfe6ff52e35cb3d9ec37c934a2f4bd1fa2e", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f0ee99c64922fc3f863715232b615c478a61b0a3", + "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3", "shasum": "" }, "require": { "doctrine/common": "~2.2", - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "conflict": { - "doctrine/orm": "< 2.4" + "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", "doctrine/dbal": "^2.5.4", + "doctrine/mongodb-odm": "^1.3.0", "doctrine/orm": "^2.5.4", - "phpunit/phpunit": "^5.4.6" + "phpunit/phpunit": "^7.0" }, "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", "doctrine/orm": "For loading ORM fixtures", "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" @@ -2239,8 +1787,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\DataFixtures": "lib/" + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" } }, "notification-url": "https://packagist.org/downloads/", @@ -2258,29 +1806,33 @@ "keywords": [ "database" ], - "time": "2016-09-20T10:07:57+00:00" + "time": "2019-10-24T04:52:28+00:00" }, { "name": "doctrine/dbal", - "version": "v2.5.5", + "version": "v2.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9" + "reference": "c0e5736016a51b427a8cba8bc470fbea78165819" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", - "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c0e5736016a51b427a8cba8bc470fbea78165819", + "reference": "c0e5736016a51b427a8cba8bc470fbea78165819", "shasum": "" }, "require": { - "doctrine/common": ">=2.4,<2.7-dev", - "php": ">=5.3.2" + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "4.*", - "symfony/console": "2.*||^3.0" + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "^2.0.5||^3.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -2291,7 +1843,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5.x-dev" + "dev-master": "2.7.x-dev" } }, "autoload": { @@ -2329,40 +1881,45 @@ "persistence", "queryobject" ], - "time": "2016-09-09T19:13:33+00:00" + "time": "2018-07-13T04:49:01+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "1.6.3", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "fd51907c6c76acaa8a5234822a4f901c1500afc1" + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fd51907c6c76acaa8a5234822a4f901c1500afc1", - "reference": "fd51907c6c76acaa8a5234822a4f901c1500afc1", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/703fad32e4c8cbe609caf45a71a1d4266c830f0f", + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f", "shasum": "" }, "require": { - "doctrine/dbal": "~2.3", - "doctrine/doctrine-cache-bundle": "~1.0", - "jdorn/sql-formatter": "~1.1", - "php": ">=5.3.2", - "symfony/console": "~2.3|~3.0", - "symfony/doctrine-bridge": "~2.2|~3.0", - "symfony/framework-bundle": "~2.3|~3.0" + "doctrine/dbal": "^2.5.12", + "doctrine/doctrine-cache-bundle": "~1.2", + "jdorn/sql-formatter": "^1.2.16", + "php": "^5.5.9|^7.0", + "symfony/console": "~2.7|~3.0|~4.0", + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "^2.7.22|~3.0|~4.0" + }, + "conflict": { + "symfony/http-foundation": "<2.6" }, "require-dev": { - "doctrine/orm": "~2.3", - "phpunit/phpunit": "~4", - "satooshi/php-coveralls": "~0.6.1", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/property-info": "~2.8|~3.0", - "symfony/validator": "~2.2|~3.0", - "symfony/yaml": "~2.2|~3.0", - "twig/twig": "~1.10" + "doctrine/orm": "~2.4", + "phpunit/phpunit": "^4.8.36|^5.7|^6.4", + "satooshi/php-coveralls": "^1.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", + "symfony/property-info": "~2.8|~3.0|~4.0", + "symfony/validator": "~2.7|~3.0|~4.0", + "symfony/web-profiler-bundle": "~2.7|~3.0|~4.0", + "symfony/yaml": "~2.7|~3.0|~4.0", + "twig/twig": "~1.26|~2.0" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -2371,7 +1928,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -2409,43 +1966,43 @@ "orm", "persistence" ], - "time": "2016-04-21T19:55:56+00:00" + "time": "2018-04-19T14:07:39+00:00" }, { "name": "doctrine/doctrine-cache-bundle", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504" + "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/18c600a9b82f6454d2e81ca4957cdd56a1cf3504", - "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/6bee2f9b339847e8a984427353670bad4e7bdccb", + "reference": "6bee2f9b339847e8a984427353670bad4e7bdccb", "shasum": "" }, "require": { "doctrine/cache": "^1.4.2", - "doctrine/inflector": "~1.0", - "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.2|~3.0" + "doctrine/inflector": "^1.0", + "php": "^7.1", + "symfony/doctrine-bridge": "^3.4|^4.0" }, "require-dev": { "instaclick/coding-standard": "~1.1", "instaclick/object-calisthenics-sniffs": "dev-master", "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "~4", + "phpunit/phpunit": "^7.0", "predis/predis": "~0.8", - "satooshi/php-coveralls": "~0.6.1", + "satooshi/php-coveralls": "^1.0", "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "~2.2|~3.0", - "symfony/finder": "~2.2|~3.0", - "symfony/framework-bundle": "~2.2|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/security-acl": "~2.3|~3.0", - "symfony/validator": "~2.2|~3.0", - "symfony/yaml": "~2.2|~3.0" + "symfony/console": "^3.4|^4.0", + "symfony/finder": "^3.4|^4.0", + "symfony/framework-bundle": "^3.4|^4.0", + "symfony/phpunit-bridge": "^3.4|^4.0", + "symfony/security-acl": "^2.8", + "symfony/validator": "^3.4|^4.0", + "symfony/yaml": "^3.4|^4.0" }, "suggest": { "symfony/security-acl": "For using this bundle to cache ACLs" @@ -2453,13 +2010,16 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { "psr-4": { "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2467,8 +2027,8 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Benjamin Eberlei", @@ -2483,46 +2043,47 @@ "email": "guilhermeblanco@hotmail.com" }, { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" } ], "description": "Symfony Bundle for Doctrine Cache", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "cache", "caching" ], - "time": "2016-01-26T17:28:51+00:00" + "abandoned": true, + "time": "2019-11-29T11:22:01+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "2.3.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029" + "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/0f1a2f91b349e10f5c343f75ab71d23aace5b029", - "reference": "0f1a2f91b349e10f5c343f75ab71d23aace5b029", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273", + "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273", "shasum": "" }, "require": { "doctrine/data-fixtures": "~1.0", "doctrine/doctrine-bundle": "~1.0", "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.3|~3.0" + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.4.x-dev" } }, "autoload": { @@ -2554,37 +2115,41 @@ "Fixture", "persistence" ], - "time": "2015-11-04T21:23:23+00:00" + "time": "2017-10-30T19:26:42+00:00" }, { - "name": "doctrine/inflector", - "version": "v1.1.0", + "name": "doctrine/event-manager", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "url": "https://github.com/doctrine/event-manager.git", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9@dev" }, "require-dev": { - "phpunit/phpunit": "4.*" + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" } }, "notification-url": "https://packagist.org/downloads/", @@ -2592,6 +2157,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -2600,10 +2169,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -2611,51 +2176,57 @@ { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" + "event", + "event dispatcher", + "event manager", + "event system", + "events" ], - "time": "2015-11-06T14:35:42+00:00" + "time": "2020-05-29T18:28:51+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.0.5", + "name": "doctrine/inflector", + "version": "1.4.3", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/doctrine/inflector.git", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c", + "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.2 || ^8.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -2664,45 +2235,124 @@ ], "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": "2015-06-14T21:17:01+00:00" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "time": "2020-05-29T07:19:59+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "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": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2020-11-10T18:47:58+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -2710,61 +2360,66 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "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", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { "name": "doctrine/orm", - "version": "v2.5.5", + "version": "v2.6.3", "source": { "type": "git", - "url": "https://github.com/doctrine/doctrine2.git", - "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45" + "url": "https://github.com/doctrine/orm.git", + "reference": "434820973cadf2da2d66e7184be370084cc32ca8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/73e4be7c7b3ba26f96b781a40b33feba4dfa6d45", - "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45", + "url": "https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8", + "reference": "434820973cadf2da2d66e7184be370084cc32ca8", "shasum": "" }, "require": { - "doctrine/cache": "~1.4", - "doctrine/collections": "~1.2", - "doctrine/common": ">=2.5-dev,<2.7-dev", - "doctrine/dbal": ">=2.5-dev,<2.6-dev", - "doctrine/instantiator": "~1.0.1", + "doctrine/annotations": "~1.5", + "doctrine/cache": "~1.6", + "doctrine/collections": "^1.4", + "doctrine/common": "^2.7.1", + "doctrine/dbal": "^2.6", + "doctrine/instantiator": "~1.1", "ext-pdo": "*", - "php": ">=5.4", - "symfony/console": "~2.5|~3.0" + "php": "^7.1", + "symfony/console": "~3.0|~4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "symfony/yaml": "~2.3|~3.0" + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, "bin": [ - "bin/doctrine", - "bin/doctrine.php" + "bin/doctrine" ], "type": "library", "extra": { @@ -2773,8 +2428,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\ORM\\": "lib/" + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" } }, "notification-url": "https://packagist.org/downloads/", @@ -2797,6 +2452,10 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], "description": "Object-Relational-Mapper for PHP", @@ -2805,7 +2464,168 @@ "database", "orm" ], - "time": "2016-09-10T18:51:13+00:00" + "time": "2018-11-20T23:46:46+00:00" + }, + { + "name": "doctrine/persistence", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "43526ae63312942e5316100bb3ed589ba1aba491" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/43526ae63312942e5316100bb3ed589ba1aba491", + "reference": "43526ae63312942e5316100bb3ed589ba1aba491", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.10@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^5.0", + "phpstan/phpstan": "^0.8", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "time": "2019-04-23T12:39:21+00:00" + }, + { + "name": "doctrine/reflection", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", + "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "ext-tokenizer": "*", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0 || ^8.2.0", + "doctrine/common": "^2.10", + "phpstan/phpstan": "^0.11.0 || ^0.12.20", + "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", + "phpunit/phpunit": "^7.5 || ^9.1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", + "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "keywords": [ + "reflection", + "static" + ], + "abandoned": "roave/better-reflection", + "time": "2020-10-27T21:46:55+00:00" }, { "name": "electrolinux/phpquery", @@ -2834,9 +2654,9 @@ "authors": [ { "name": "Tobiasz Cudnik", + "role": "Developer", "email": "tobiasz.cudnik@gmail.com", - "homepage": "https://github.com/TobiaszCudnik", - "role": "Developer" + "homepage": "https://github.com/TobiaszCudnik" }, { "name": "didier Belot", @@ -2849,34 +2669,30 @@ }, { "name": "escapestudios/wsse-authentication-bundle", - "version": "1.0.2", + "version": "2.3.0", "target-dir": "Escape/WSSEAuthenticationBundle", "source": { "type": "git", "url": "https://github.com/djoos/EscapeWSSEAuthenticationBundle.git", - "reference": "c2d56effd53cae5ebd685f6d50a81c024bc089af" + "reference": "fe5585f20570c89a3e6f9b889104c1263a734a22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/djoos/EscapeWSSEAuthenticationBundle/zipball/c2d56effd53cae5ebd685f6d50a81c024bc089af", - "reference": "c2d56effd53cae5ebd685f6d50a81c024bc089af", + "url": "https://api.github.com/repos/djoos/EscapeWSSEAuthenticationBundle/zipball/fe5585f20570c89a3e6f9b889104c1263a734a22", + "reference": "fe5585f20570c89a3e6f9b889104c1263a734a22", "shasum": "" }, "require": { "doctrine/common": "~2.2", - "php": ">=5.3.2", - "symfony/framework-bundle": "~2.3", - "symfony/security-bundle": "~2.3" + "php": ">=5.3.9", + "symfony/framework-bundle": "~2.3|~3.0", + "symfony/security-bundle": "~2.3|~3.0" }, "require-dev": { - "symfony/finder": "~2.3" + "symfony/finder": "~2.3|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-0": { "Escape\\WSSEAuthenticationBundle": "" @@ -2889,40 +2705,48 @@ "authors": [ { "name": "David Joos", - "email": "david@escapestudios.com" + "email": "david.joos@escapestudios.com" }, { "name": "Community contributors", - "homepage": "https://github.com/frieser/FrieserWSSEAuthenticationBundle/graphs/contributors" + "homepage": "https://github.com/djoos/EscapeWSSEAuthenticationBundle/graphs/contributors" } ], "description": "Symfony2 bundle to implement WSSE authentication", - "homepage": "https://github.com/escapestudios/EscapeWSSEAuthenticationBundle", + "homepage": "https://github.com/djoos/EscapeWSSEAuthenticationBundle", "keywords": [ "Authentication", "bundle", "wsse" ], - "time": "2014-07-16T12:24:32+00:00" + "time": "2018-02-08T14:04:44+00:00" }, { "name": "evenement/evenement", - "version": "v1.0.0", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/igorw/evenement.git", - "reference": "fa966683e7df3e5dd5929d984a44abfbd6bafe8d" + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/fa966683e7df3e5dd5929d984a44abfbd6bafe8d", - "reference": "fa966683e7df3e5dd5929d984a44abfbd6bafe8d", + "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0||^5.7||^4.8.35" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "psr-0": { "Evenement": "src" @@ -2935,33 +2759,36 @@ "authors": [ { "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" + "email": "igor@wiedler.ch" } ], - "description": "Événement is a very simple event dispatching library for PHP 5.3", + "description": "Événement is a very simple event dispatching library for PHP", "keywords": [ - "event-dispatcher" + "event-dispatcher", + "event-emitter" ], - "time": "2012-05-30T15:01:08+00:00" + "time": "2017-07-17T17:39:19+00:00" }, { "name": "ezyang/htmlpurifier", - "version": "v4.8.0", + "version": "v4.10.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2" + "reference": "d85d39da4576a6934b72480be6978fb10c860021" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2", - "reference": "d0c392f77d2f2a3dcf7fcb79e2a1e2b8804e75b2", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021", + "reference": "d85d39da4576a6934b72480be6978fb10c860021", "shasum": "" }, "require": { "php": ">=5.2" }, + "require-dev": { + "simpletest/simpletest": "^1.1" + }, "type": "library", "autoload": { "psr-0": { @@ -2987,41 +2814,42 @@ "keywords": [ "html" ], - "time": "2016-07-16T12:58:58+00:00" + "time": "2018-02-23T01:58:20+00:00" }, { - "name": "friendsofsymfony/jsrouting-bundle", - "version": "1.6.0", + "name": "fig/link-util", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git", - "reference": "2f52d924692647db02bbcb27c159fef03bf000c9" + "url": "https://github.com/php-fig/link-util.git", + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/2f52d924692647db02bbcb27c159fef03bf000c9", - "reference": "2f52d924692647db02bbcb27c159fef03bf000c9", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", "shasum": "" }, "require": { - "php": ">=5.3.2", - "symfony/console": "~2.0|3.*", - "symfony/framework-bundle": "~2.0|3.*", - "symfony/serializer": "~2.0|3.*", - "willdurand/jsonp-callback-validator": "~1.0" + "php": ">=5.5.0", + "psr/link": "~1.0@dev" + }, + "provide": { + "psr/link-implementation": "1.0" }, "require-dev": { - "symfony/expression-language": "~2.4|3.*" + "phpunit/phpunit": "^5.1", + "squizlabs/php_codesniffer": "^2.3.1" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "FOS\\JsRoutingBundle\\": "" + "Fig\\Link\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3030,12 +2858,69 @@ ], "authors": [ { - "name": "FriendsOfSymfony Community", - "homepage": "https://github.com/friendsofsymfony/FOSJsRoutingBundle/contributors" - }, - { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common utility implementations for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "time": "2021-02-03T23:36:04+00:00" + }, + { + "name": "friendsofsymfony/jsrouting-bundle", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git", + "reference": "be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6", + "reference": "be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6", + "shasum": "" + }, + "require": { + "php": "^5.3.9|^7.0", + "symfony/console": "~2.7||~3.0|^4.0", + "symfony/framework-bundle": "~2.7||~3.0|^4.0", + "symfony/serializer": "~2.7||~3.0|^4.0", + "willdurand/jsonp-callback-validator": "~1.0" + }, + "require-dev": { + "symfony/expression-language": "~2.7||~3.0|^4.0", + "symfony/phpunit-bridge": "^3.3|^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "FOS\\JsRoutingBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSJsRoutingBundle/contributors" + }, + { "name": "William Durand", - "email": "william.durand1@gmail.com" + "email": "will+git@drnd.me" } ], "description": "A pretty nice way to expose your Symfony2 routing to client applications.", @@ -3045,27 +2930,28 @@ "javascript", "routing" ], - "time": "2015-10-28T15:08:39+00:00" + "time": "2018-11-28T20:11:21+00:00" }, { "name": "friendsofsymfony/rest-bundle", - "version": "1.7.9", + "version": "1.8.0", "target-dir": "FOS/RestBundle", "source": { "type": "git", "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", - "reference": "9449e451074e98ee6fdc45c18fa857c71baf1dfe" + "reference": "c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/9449e451074e98ee6fdc45c18fa857c71baf1dfe", - "reference": "9449e451074e98ee6fdc45c18fa857c71baf1dfe", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1", + "reference": "c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1", "shasum": "" }, "require": { "doctrine/inflector": "~1.0", "php": "^5.3.9|~7.0", "psr/log": "~1.0", + "symfony/finder": "~2.3|~3.0", "symfony/framework-bundle": "~2.3|~3.0", "symfony/http-kernel": "^2.3.24|~3.0", "willdurand/jsonp-callback-validator": "~1.0", @@ -3101,7 +2987,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.8-dev" } }, "autoload": { @@ -3132,33 +3018,37 @@ "keywords": [ "rest" ], - "time": "2016-05-15T23:18:24+00:00" + "time": "2016-06-21T08:42:59+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v2.4.27", + "version": "v2.4.42", "source": { "type": "git", "url": "https://github.com/Atlantic18/DoctrineExtensions.git", - "reference": "fe152e1239f2f46287d369e43cc9fa817cc3cd36" + "reference": "b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/fe152e1239f2f46287d369e43cc9fa817cc3cd36", - "reference": "fe152e1239f2f46287d369e43cc9fa817cc3cd36", + "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4", + "reference": "b6c4442b4f32ce05673fbdf1fa4a2d5e315cc0a4", "shasum": "" }, "require": { - "behat/transliterator": "~1.0", + "behat/transliterator": "~1.2", "doctrine/common": "~2.4", "php": ">=5.3.2" }, + "conflict": { + "doctrine/annotations": "<1.2", + "doctrine/mongodb-odm": ">=2.0" + }, "require-dev": { "doctrine/common": ">=2.5.0", - "doctrine/mongodb-odm": ">=1.0.2", + "doctrine/mongodb-odm": ">=1.0.2 <2.0", "doctrine/orm": ">=2.5.0", - "phpunit/phpunit": "*", - "symfony/yaml": "~2.6|~3.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "symfony/yaml": "^2.6 || ^3.0 || ^4.0 || ^5.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", @@ -3171,8 +3061,8 @@ } }, "autoload": { - "psr-0": { - "Gedmo\\": "lib/" + "psr-4": { + "Gedmo\\": "lib/Gedmo" } }, "notification-url": "https://packagist.org/downloads/", @@ -3180,10 +3070,6 @@ "MIT" ], "authors": [ - { - "name": "David Buchmann", - "email": "david@liip.ch" - }, { "name": "Gediminas Morkevicius", "email": "gediminas.morkevicius@gmail.com" @@ -3191,6 +3077,10 @@ { "name": "Gustavo Falco", "email": "comfortablynumb84@gmail.com" + }, + { + "name": "David Buchmann", + "email": "david@liip.ch" } ], "description": "Doctrine2 behavioral extensions", @@ -3210,52 +3100,260 @@ "tree", "uploadable" ], - "time": "2017-03-22T09:48:22+00:00" + "time": "2020-08-21T01:27:20+00:00" }, { - "name": "genemu/form-bundle", - "version": "v2.3.0", - "target-dir": "Genemu/Bundle/FormBundle", + "name": "gos/pnctl-event-loop-emitter", + "version": "v0.1.7", "source": { "type": "git", - "url": "https://github.com/genemu/GenemuFormBundle.git", - "reference": "1bcc635d7604a409fbce569af709ea691d60b8e1" + "url": "https://github.com/GeniusesOfSymfony/PNCTLEventLoopEmitter.git", + "reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/genemu/GenemuFormBundle/zipball/1bcc635d7604a409fbce569af709ea691d60b8e1", - "reference": "1bcc635d7604a409fbce569af709ea691d60b8e1", + "url": "https://api.github.com/repos/GeniusesOfSymfony/PNCTLEventLoopEmitter/zipball/93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3", + "reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3", "shasum": "" }, "require": { - "php": ">=5.3.2", - "symfony/form": "~2.6", - "symfony/framework-bundle": "~2.6", - "twig/twig": "~1.14" + "evenement/evenement": "~2.0|~3.0", + "php": ">=5.4", + "react/event-loop": "~0.4.0|^0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\PnctlEventLoopEmitter\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Pnctl event emitter for event loop", + "homepage": "https://github.com/GeniusesOfSymfony/PnctlEventLoopEmitter", + "keywords": [ + "Pnctl", + "event loop", + "reactphp" + ], + "abandoned": true, + "time": "2018-04-09T11:12:07+00:00" + }, + { + "name": "gos/pubsub-router-bundle", + "version": "v0.3.5", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git", + "reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0", + "reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0", + "shasum": "" + }, + "require": { + "doctrine/cache": "~1.4", + "php": ">=5.5", + "symfony/console": "~3.4|~4.0", + "symfony/framework-bundle": "~3.4|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Bundle\\PubSubRouterBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Symfony PubSub Router Bundle", + "homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle", + "keywords": [ + "PubSub Bundle", + "WAMP", + "bundle", + "pubsub", + "redis", + "zmq" + ], + "time": "2018-10-04T17:09:23+00:00" + }, + { + "name": "gos/ratchet", + "version": "v0.3.6", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/Ratchet.git", + "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/Ratchet/zipball/f72ee4f70f24da1fc232537088e6c368ae4211e0", + "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0", + "shasum": "" + }, + "require": { + "guzzle/http": "^3.6", + "php": ">=5.3.9", + "react/socket": "^0.3 || ^0.4", + "symfony/http-foundation": "^2.2|^3.0|^4.0", + "symfony/routing": "^2.2|^3.0|^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ratchet\\": "src/Ratchet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Boden", + "role": "Developer", + "email": "cboden@gmail.com" + } + ], + "description": "PHP WebSocket library", + "homepage": "http://socketo.me", + "keywords": [ + "Ratchet", + "WebSockets", + "server", + "sockets" + ], + "abandoned": true, + "time": "2017-12-12T16:15:11+00:00" + }, + { + "name": "gos/ratchet-stack", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/RatchetStack.git", + "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/RatchetStack/zipball/a7dfc817bf8b786c575022e290ab0769dbf09814", + "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814", + "shasum": "" + }, + "require": { + "cboden/ratchet": "^0.3|^0.4", + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\RatchetStack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Ratchet Stack", + "homepage": "https://github.com/GeniusesOfSymfony/RatchetStack", + "keywords": [ + "Ratchet", + "application", + "stack" + ], + "time": "2018-05-02T13:03:51+00:00" + }, + { + "name": "gos/web-socket-bundle", + "version": "v1.8.11", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git", + "reference": "a26b71e9014a73b95ddbb02a813157563a296a48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/a26b71e9014a73b95ddbb02a813157563a296a48", + "reference": "a26b71e9014a73b95ddbb02a813157563a296a48", + "shasum": "" + }, + "require": { + "gos/pnctl-event-loop-emitter": "~0.1", + "gos/pubsub-router-bundle": "~0.2", + "gos/ratchet": "~0.3.5", + "gos/ratchet-stack": "~0.1", + "gos/websocket-client": "~0.1.0", + "php": ">=5.4", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "replace": { + "cboden/ratchet": "~0.3.0" }, "require-dev": { - "doctrine/doctrine-bundle": "1.*", - "doctrine/mongodb-odm-bundle": "*", - "doctrine/orm": "2.*", - "propel/propel-bundle": "*", - "symfony/doctrine-bridge": "~2.6", - "symfony/finder": "2.*" + "phpunit/phpunit": "^4.8" }, "suggest": { - "doctrine/doctrine-bundle": "In order to use some form types with Doctrine", - "doctrine/mongodb-odm-bundle": "For MongoDB integration", - "symfony/finder": "For an image type", - "symfony/twig-bridge": "For integration into Twig templates" + "ext-amqp": "*", + "ext-libev": "*", + "ext-libevent": ">=0.0.5", + "ext-zmq": "*", + "ocramius/proxy-manager": "~1.0", + "symfony/proxy-manager-bridge": "~2.3" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { - "psr-0": { - "Genemu\\Bundle\\FormBundle": "" + "psr-4": { + "Gos\\Bundle\\WebSocketBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3264,24 +3362,74 @@ ], "authors": [ { - "name": "Olivier Chauvel", - "email": "olivier@generation-multiple.com" + "name": "Jeremy Dare", + "email": "jeremy.d.dare@gmail.com" }, { - "name": "Community contributions", - "homepage": "https://github.com/genemu/GenemuFormBundle/contributors" + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Symfony Web Socket Bundle", + "homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle", + "keywords": [ + "Ratchet", + "WAMP", + "Web Socket Bundle", + "io", + "websocket" + ], + "time": "2017-09-29T16:00:43+00:00" + }, + { + "name": "gos/websocket-client", + "version": "v0.1.2", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git", + "reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe", + "reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\WebSocketClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" }, { - "name": "Bilal Amarni", - "email": "bilal.amarni@gmail.com" + "name": "Martin Bažík", + "email": "martin@bazo.sk" } ], - "description": "Extra form types for your Symfony2 projects", + "description": "WAMP client in PHP", "keywords": [ - "extra form", - "form" + "Ratchet", + "WAMP", + "websocket" ], - "time": "2016-01-27T16:52:41+00:00" + "time": "2015-08-04T11:43:11+00:00" }, { "name": "guzzle/guzzle", @@ -3377,24 +3525,95 @@ "time": "2013-10-02T20:47:00+00:00" }, { - "name": "hwi/oauth-bundle", - "version": "0.5.3", + "name": "guzzlehttp/psr7", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/hwi/HWIOAuthBundle.git", - "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1" + "url": "https://github.com/guzzle/psr7.git", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hwi/HWIOAuthBundle/zipball/50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", - "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", "shasum": "" }, "require": { - "kriswallsmith/buzz": "~0.13", - "php": "^5.3.3|^7.0", - "symfony/form": "^2.3|^3.0", - "symfony/framework-bundle": "^2.3|^3.0", + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-zlib": "*", + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2020-09-30T07:37:11+00:00" + }, + { + "name": "hwi/oauth-bundle", + "version": "0.5.3", + "source": { + "type": "git", + "url": "https://github.com/hwi/HWIOAuthBundle.git", + "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hwi/HWIOAuthBundle/zipball/50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", + "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", + "shasum": "" + }, + "require": { + "kriswallsmith/buzz": "~0.13", + "php": "^5.3.3|^7.0", + "symfony/form": "^2.3|^3.0", + "symfony/framework-bundle": "^2.3|^3.0", "symfony/options-resolver": "^2.3|^3.0", "symfony/security-bundle": "^2.3|^3.0", "symfony/templating": "^2.7|^3.0", @@ -3528,23 +3747,24 @@ }, { "name": "imagine/imagine", - "version": "v0.6.3", + "version": "v0.7.1", "source": { "type": "git", "url": "https://github.com/avalanche123/Imagine.git", - "reference": "149041d2a1b517107bfe270ca2b1a17aa341715d" + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/149041d2a1b517107bfe270ca2b1a17aa341715d", - "reference": "149041d2a1b517107bfe270ca2b1a17aa341715d", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "sami/sami": "dev-master" + "sami/sami": "^3.3", + "symfony/phpunit-bridge": "^3.2" }, "suggest": { "ext-gd": "to use the GD implementation", @@ -3581,30 +3801,30 @@ "image manipulation", "image processing" ], - "time": "2015-09-19T16:54:05+00:00" + "time": "2017-05-16T10:31:22+00:00" }, { "name": "incenteev/composer-parameter-handler", - "version": "v2.1.2", + "version": "v2.1.4", "source": { "type": "git", "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc" + "reference": "084befb11ec21faeadcddefb88b66132775ff59b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", - "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b", + "reference": "084befb11ec21faeadcddefb88b66132775ff59b", "shasum": "" }, "require": { "php": ">=5.3.3", - "symfony/yaml": "~2.3|~3.0" + "symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0" }, "require-dev": { - "composer/composer": "1.0.*@dev", - "phpspec/prophecy-phpunit": "~1.0", - "symfony/filesystem": "~2.2" + "composer/composer": "^1.0@dev", + "symfony/filesystem": "^2.3 || ^3 || ^4 || ^5", + "symfony/phpunit-bridge": "^4.0 || ^5.0" }, "type": "library", "extra": { @@ -3632,92 +3852,7 @@ "keywords": [ "parameters management" ], - "time": "2015-11-10T17:04:01+00:00" - }, - { - "name": "ircmaxell/password-compat", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/password_compat.git", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", - "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "4.*" - }, - "type": "library", - "autoload": { - "files": [ - "lib/password.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@php.net", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", - "homepage": "https://github.com/ircmaxell/password_compat", - "keywords": [ - "hashing", - "password" - ], - "time": "2014-11-20T16:49:30+00:00" - }, - { - "name": "jdare/clank-bundle", - "version": "0.1.6", - "target-dir": "JDare/ClankBundle", - "source": { - "type": "git", - "url": "https://github.com/JDare/ClankBundle.git", - "reference": "3661c4583cef2f464ba8f34948ef1a5fdee629f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JDare/ClankBundle/zipball/3661c4583cef2f464ba8f34948ef1a5fdee629f0", - "reference": "3661c4583cef2f464ba8f34948ef1a5fdee629f0", - "shasum": "" - }, - "require": { - "cboden/ratchet": "0.2.*", - "php": ">=5.3.2", - "symfony/framework-bundle": "~2.1" - }, - "type": "symfony-bundle", - "autoload": { - "psr-0": { - "JDare\\ClankBundle": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dare", - "email": "jeremy.d.dare@gmail.com" - } - ], - "description": "Symfony ClankBundle", - "homepage": "https://github.com/JDare/ClankBundle", - "keywords": [ - "Web Socket Application" - ], - "time": "2013-11-23T17:19:59+00:00" + "time": "2020-03-17T21:10:00+00:00" }, { "name": "jdorn/sql-formatter", @@ -3771,25 +3906,26 @@ }, { "name": "jms/aop-bundle", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSAopBundle.git", - "reference": "78000d007e74283cc564a58e184d7f62548ad394" + "reference": "4ee2089a81b54ce94a8c94e95b48d5bb353dd8d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSAopBundle/zipball/78000d007e74283cc564a58e184d7f62548ad394", - "reference": "78000d007e74283cc564a58e184d7f62548ad394", + "url": "https://api.github.com/repos/schmittjoh/JMSAopBundle/zipball/4ee2089a81b54ce94a8c94e95b48d5bb353dd8d0", + "reference": "4ee2089a81b54ce94a8c94e95b48d5bb353dd8d0", "shasum": "" }, "require": { "jms/cg": "^1.1", "php": ">=5.3.9", - "symfony/framework-bundle": "^2.3|^3.0" + "symfony/framework-bundle": "^2.3 || ^3.0 || ^4.0" }, "require-dev": { - "symfony/phpunit-bridge": "^2.7" + "phpunit/phpunit": "^4.8.36 | ^5.0", + "symfony/phpunit-bridge": "^2.7 || ^4.0" }, "type": "symfony-bundle", "extra": { @@ -3817,7 +3953,7 @@ "annotations", "aop" ], - "time": "2015-12-09T16:30:46+00:00" + "time": "2018-01-16T10:22:28+00:00" }, { "name": "jms/cg", @@ -3868,16 +4004,16 @@ }, { "name": "jms/di-extra-bundle", - "version": "1.8.1", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSDiExtraBundle.git", - "reference": "53d0a974d79f1793a4168fbafe98f273d3e1b3e0" + "reference": "fa82a4e6c9dc84df8015805028575217c0be4a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSDiExtraBundle/zipball/53d0a974d79f1793a4168fbafe98f273d3e1b3e0", - "reference": "53d0a974d79f1793a4168fbafe98f273d3e1b3e0", + "url": "https://api.github.com/repos/schmittjoh/JMSDiExtraBundle/zipball/fa82a4e6c9dc84df8015805028575217c0be4a54", + "reference": "fa82a4e6c9dc84df8015805028575217c0be4a54", "shasum": "" }, "require": { @@ -3896,13 +4032,16 @@ "doctrine/orm": "~2.3", "jms/security-extra-bundle": "~1.0", "phpcollection/phpcollection": ">=0.2,<0.3-dev", + "phpunit/phpunit": "^4.8.35|^5.4.4|^6.0.0", "sensio/framework-extra-bundle": "~2.0|~3.0", + "symfony/asset": "~2.3|^3.3", "symfony/browser-kit": "~2.3|~3.0", "symfony/class-loader": "~2.3|~3.0", "symfony/expression-language": "~2.6|~3.0", "symfony/form": "~2.3|~3.0", - "symfony/phpunit-bridge": "~2.7", - "symfony/security-bundle": "~2.3", + "symfony/phpunit-bridge": "~3.3", + "symfony/security-bundle": "~2.3|^3.0", + "symfony/templating": "~2.3|^3.3", "symfony/twig-bundle": "~2.3|~3.0", "symfony/validator": "~2.3|~3.0", "symfony/yaml": "~2.3|~3.0" @@ -3934,21 +4073,21 @@ "annotations", "dependency injection" ], - "time": "2016-09-18T13:06:50+00:00" + "time": "2018-01-12T19:04:30+00:00" }, { "name": "jms/job-queue-bundle", - "version": "1.4.0", + "version": "1.4.2", "target-dir": "JMS/JobQueueBundle", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSJobQueueBundle.git", - "reference": "d9bab4d3ffa2d45e2959106712c6beed79372c62" + "reference": "4d0779030414ba593a3d7d29856c66c5375173c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSJobQueueBundle/zipball/d9bab4d3ffa2d45e2959106712c6beed79372c62", - "reference": "d9bab4d3ffa2d45e2959106712c6beed79372c62", + "url": "https://api.github.com/repos/schmittjoh/JMSJobQueueBundle/zipball/4d0779030414ba593a3d7d29856c66c5375173c9", + "reference": "4d0779030414ba593a3d7d29856c66c5375173c9", "shasum": "" }, "require": { @@ -3962,7 +4101,6 @@ "doctrine/doctrine-bundle": "*", "doctrine/doctrine-fixtures-bundle": "*", "doctrine/orm": "*", - "pagerfanta/pagerfanta": "dev-master", "phpunit/phpunit": "^5.2", "sensio/framework-extra-bundle": "*", "symfony/browser-kit": "*", @@ -3977,7 +4115,6 @@ "symfony/yaml": "*" }, "suggest": { - "pagerfanta/pagerfanta": "Required when using the webinterface.", "sensio/framework-extra-bundle": "Required when using the webinterface.", "symfony/twig-bundle": "Required when using the webinterface." }, @@ -4008,20 +4145,20 @@ "job", "queue" ], - "time": "2016-09-09T14:26:27+00:00" + "time": "2017-06-28T06:26:38+00:00" }, { "name": "jms/metadata", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/metadata.git", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", - "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", "shasum": "" }, "require": { @@ -4044,9 +4181,13 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" + "MIT" ], "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, { "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" @@ -4059,7 +4200,7 @@ "xml", "yaml" ], - "time": "2016-12-05T10:18:33+00:00" + "time": "2018-10-26T12:40:10+00:00" }, { "name": "jms/parser-lib", @@ -4098,24 +4239,24 @@ }, { "name": "jms/serializer", - "version": "1.4.2", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "f39d8b4660d5cef43b0c3265ce642173d9b2c58b" + "reference": "93d6e03fcb71d45854cc44b5a84d645c02c5d763" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/f39d8b4660d5cef43b0c3265ce642173d9b2c58b", - "reference": "f39d8b4660d5cef43b0c3265ce642173d9b2c58b", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/93d6e03fcb71d45854cc44b5a84d645c02c5d763", + "reference": "93d6e03fcb71d45854cc44b5a84d645c02c5d763", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", "doctrine/instantiator": "^1.0.3", - "jms/metadata": "~1.1", + "jms/metadata": "^1.3", "jms/parser-lib": "1.*", - "php": ">=5.5.0", + "php": "^5.5|^7.0", "phpcollection/phpcollection": "~0.1", "phpoption/phpoption": "^1.1" }, @@ -4129,20 +4270,25 @@ "jackalope/jackalope-doctrine-dbal": "^1.1.5", "phpunit/phpunit": "^4.8|^5.0", "propel/propel1": "~1.7", + "psr/container": "^1.0", + "symfony/dependency-injection": "^2.7|^3.3|^4.0", + "symfony/expression-language": "^2.6|^3.0", "symfony/filesystem": "^2.1", - "symfony/form": "~2.1", - "symfony/translation": "^2.1", - "symfony/validator": "^2.2", - "symfony/yaml": "^2.1", + "symfony/form": "~2.1|^3.0", + "symfony/translation": "^2.1|^3.0", + "symfony/validator": "^2.2|^3.0", + "symfony/yaml": "^2.1|^3.0", "twig/twig": "~1.12|~2.0" }, "suggest": { + "doctrine/cache": "Required if you like to use cache functionality.", + "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", "symfony/yaml": "Required if you'd like to serialize data to YAML format." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-1.x": "1.11-dev" } }, "autoload": { @@ -4152,9 +4298,13 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" ], "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, { "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" @@ -4169,25 +4319,25 @@ "serialization", "xml" ], - "time": "2016-11-13T10:20:11+00:00" + "time": "2018-06-01T12:10:12+00:00" }, { "name": "jms/serializer-bundle", - "version": "1.1.0", + "version": "1.5.0", "target-dir": "JMS/SerializerBundle", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", - "reference": "3e396c980545350c2efb65a50041d2a9f9d6562e" + "reference": "85ee039a2b7f89d77c403e33cee7b43a875c31e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/3e396c980545350c2efb65a50041d2a9f9d6562e", - "reference": "3e396c980545350c2efb65a50041d2a9f9d6562e", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/85ee039a2b7f89d77c403e33cee7b43a875c31e5", + "reference": "85ee039a2b7f89d77c403e33cee7b43a875c31e5", "shasum": "" }, "require": { - "jms/serializer": "^1.0.0", + "jms/serializer": "^1.7", "php": ">=5.4.0", "phpoption/phpoption": "^1.1.0", "symfony/framework-bundle": "~2.3|~3.0" @@ -4195,9 +4345,11 @@ "require-dev": { "doctrine/doctrine-bundle": "*", "doctrine/orm": "*", + "phpunit/phpunit": "^4.2|^5.0", "symfony/browser-kit": "*", "symfony/class-loader": "*", "symfony/css-selector": "*", + "symfony/expression-language": "~2.6|~3.0", "symfony/finder": "*", "symfony/form": "*", "symfony/process": "*", @@ -4212,7 +4364,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -4222,7 +4374,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "Apache-2.0" ], "authors": [ { @@ -4239,30 +4391,29 @@ "serialization", "xml" ], - "time": "2015-11-10T12:26:42+00:00" + "time": "2017-05-10T10:17:17+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.0", + "version": "5.2.10", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "e3c9bccdc38bbd09bcac0131c00f3be58368b416" + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/e3c9bccdc38bbd09bcac0131c00f3be58368b416", - "reference": "e3c9bccdc38bbd09bcac0131c00f3be58368b416", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1", + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", "json-schema/json-schema-test-suite": "1.2.0", - "phpdocumentor/phpdocumentor": "~2", - "phpunit/phpunit": "^4.8.22" + "phpunit/phpunit": "^4.8.35" }, "bin": [ "bin/validate-json" @@ -4306,65 +4457,41 @@ "json", "schema" ], - "time": "2017-03-22T22:43:35+00:00" + "time": "2020-05-27T16:41:55+00:00" }, { "name": "knplabs/gaufrette", - "version": "v0.3.1", + "version": "v0.10.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/Gaufrette.git", - "reference": "771ad16f4b2e7f9d35f44b201956e83c6fbf5dde" + "reference": "ef5ec9d72c06d21febfa09b36d5c3d8e3af9cf8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/Gaufrette/zipball/771ad16f4b2e7f9d35f44b201956e83c6fbf5dde", - "reference": "771ad16f4b2e7f9d35f44b201956e83c6fbf5dde", + "url": "https://api.github.com/repos/KnpLabs/Gaufrette/zipball/ef5ec9d72c06d21febfa09b36d5c3d8e3af9cf8b", + "reference": "ef5ec9d72c06d21febfa09b36d5c3d8e3af9cf8b", "shasum": "" }, "require": { - "php": ">=5.4" + "php": ">=7.1" }, "conflict": { "microsoft/windowsazure": "<0.4.3" }, "require-dev": { - "amazonwebservices/aws-sdk-for-php": "1.5.*", - "aws/aws-sdk-php": "^2.4.12", - "doctrine/dbal": ">=2.3", - "dropbox-php/dropbox-php": "*", - "google/apiclient": "~1.1.3", - "herzult/php-ssh": "*", - "league/flysystem": "~1.0", - "mikey179/vfsstream": "~1.2.0", - "phpseclib/phpseclib": "^2.0", - "phpspec/phpspec": "~2.4", - "phpunit/phpunit": "3.7.*", - "rackspace/php-opencloud": "^1.9.2" + "mikey179/vfsstream": "v1.x-dev as 1.7.0", + "phpspec/phpspec": "^5.1 || ^6.2", + "phpunit/phpunit": "~7.5" }, "suggest": { - "amazonwebservices/aws-sdk-for-php": "to use the legacy Amazon S3 adapters", - "aws/aws-sdk-php": "to use the Amazon S3 adapter", - "doctrine/dbal": "to use the Doctrine DBAL adapter", - "dropbox-php/dropbox-php": "to use the Dropbox adapter", - "ext-apc": "to use the APC adapter", - "ext-curl": "*", "ext-fileinfo": "This extension is used to automatically detect the content-type of a file in the AwsS3, OpenCloud, AzureBlogStorage and GoogleCloudStorage adapters", - "ext-mbstring": "*", - "ext-mongo": "*", - "ext-zip": "to use the Zip adapter", - "google/apiclient": "to use GoogleCloudStorage adapter", - "herzult/php-ssh": "to use SFtp adapter", - "knplabs/knp-gaufrette-bundle": "to use with Symfony2", - "league/flysystem": "to use Flysystem adapters", - "microsoft/windowsazure": "to use Microsoft Azure Blob Storage adapter", - "phpseclib/phpseclib": "to use PhpseclibSftp adapter", - "rackspace/php-opencloud": "to use Opencloud adapter" + "knplabs/knp-gaufrette-bundle": "to use with Symfony" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.4.x-dev" + "dev-master": "0.10.x-dev" } }, "autoload": { @@ -4377,16 +4504,16 @@ "MIT" ], "authors": [ - { - "name": "The contributors", - "homepage": "http://github.com/knplabs/Gaufrette/contributors" - }, { "name": "KnpLabs Team", "homepage": "http://knplabs.com" + }, + { + "name": "The contributors", + "homepage": "http://github.com/knplabs/Gaufrette/contributors" } ], - "description": "PHP5 library that provides a filesystem abstraction layer", + "description": "PHP library that provides a filesystem abstraction layer", "homepage": "http://knplabs.com", "keywords": [ "abstraction", @@ -4394,7 +4521,7 @@ "filesystem", "media" ], - "time": "2017-03-20T01:23:34+00:00" + "time": "2020-10-05T19:26:39+00:00" }, { "name": "knplabs/knp-gaufrette-bundle", @@ -4456,37 +4583,35 @@ }, { "name": "knplabs/knp-menu", - "version": "2.2.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenu.git", - "reference": "964b5b3ca7fd23019147991f4f75f361d061eb20" + "reference": "655630a1db0b72108262d1a844de3b1ba0885be5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/964b5b3ca7fd23019147991f4f75f361d061eb20", - "reference": "964b5b3ca7fd23019147991f4f75f361d061eb20", + "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/655630a1db0b72108262d1a844de3b1ba0885be5", + "reference": "655630a1db0b72108262d1a844de3b1ba0885be5", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.6.0" }, "require-dev": { - "pimple/pimple": "~1.0", - "silex/silex": "~1.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/routing": "~2.3|~3.0", + "psr/container": "^1.0", + "symfony/http-foundation": "~2.4|~3.0|^4.0", + "symfony/phpunit-bridge": "~3.3|^4.0", + "symfony/routing": "~2.3|~3.0|^4.0", "twig/twig": "~1.16|~2.0" }, "suggest": { - "pimple/pimple": "for the built-in implementations of the menu provider and renderer provider", - "silex/silex": "for the integration with your silex application", "twig/twig": "for the TwigRenderer and the integration with your templates" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -4503,44 +4628,46 @@ "name": "Christophe Coevoet", "email": "stof@notk.org" }, - { - "name": "Knplabs", - "homepage": "http://knplabs.com" - }, { "name": "Symfony Community", "homepage": "https://github.com/KnpLabs/KnpMenu/contributors" + }, + { + "name": "KnpLabs", + "homepage": "https://knplabs.com" } ], "description": "An object oriented menu library", - "homepage": "http://knplabs.com", + "homepage": "https://knplabs.com", "keywords": [ "menu", "tree" ], - "time": "2016-09-22T07:36:19+00:00" + "time": "2017-11-18T20:49:26+00:00" }, { "name": "knplabs/knp-menu-bundle", - "version": "2.1.3", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "0e4af7209dc03e39c51ec70b68ab2ba3177c25de" + "reference": "267027582a1f1e355276f796f8da0e9f82026bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/0e4af7209dc03e39c51ec70b68ab2ba3177c25de", - "reference": "0e4af7209dc03e39c51ec70b68ab2ba3177c25de", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/267027582a1f1e355276f796f8da0e9f82026bf1", + "reference": "267027582a1f1e355276f796f8da0e9f82026bf1", "shasum": "" }, "require": { - "knplabs/knp-menu": "~2.2", - "symfony/framework-bundle": "~2.3|~3.0" + "knplabs/knp-menu": "~2.3", + "php": "^5.6 || ^7", + "symfony/framework-bundle": "~2.7|~3.0 | ^4.0" }, "require-dev": { - "symfony/expression-language": "~2.4|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0" + "symfony/expression-language": "~2.7|~3.0 | ^4.0", + "symfony/phpunit-bridge": "^3.3 | ^4.0", + "symfony/templating": "~2.7|~3.0 | ^4.0" }, "type": "symfony-bundle", "extra": { @@ -4550,7 +4677,7 @@ }, "autoload": { "psr-4": { - "Knp\\Bundle\\MenuBundle\\": "" + "Knp\\Bundle\\MenuBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4575,7 +4702,7 @@ "keywords": [ "menu" ], - "time": "2016-09-22T12:24:40+00:00" + "time": "2019-06-17T12:58:15+00:00" }, { "name": "kriswallsmith/assetic", @@ -4656,31 +4783,33 @@ }, { "name": "kriswallsmith/buzz", - "version": "v0.15", + "version": "v0.16.1", "source": { "type": "git", "url": "https://github.com/kriswallsmith/Buzz.git", - "reference": "d4041666c3ffb379af02a92dabe81c904b35fab8" + "reference": "4977b7d44dbef49cdc641f14be6512fdcfe32f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kriswallsmith/Buzz/zipball/d4041666c3ffb379af02a92dabe81c904b35fab8", - "reference": "d4041666c3ffb379af02a92dabe81c904b35fab8", + "url": "https://api.github.com/repos/kriswallsmith/Buzz/zipball/4977b7d44dbef49cdc641f14be6512fdcfe32f12", + "reference": "4977b7d44dbef49cdc641f14be6512fdcfe32f12", "shasum": "" }, "require": { - "php": ">=5.3.0" + "guzzlehttp/psr7": "^1.4", + "php": "^5.4 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "3.7.*" + "php-http/client-integration-tests": "^0.6.2", + "symfony/phpunit-bridge": "^3.4 || ^4.0" }, "suggest": { "ext-curl": "*" }, "type": "library", "autoload": { - "psr-0": { - "Buzz": "lib/" + "psr-4": { + "Buzz\\": "lib/Buzz" } }, "notification-url": "https://packagist.org/downloads/", @@ -4700,37 +4829,42 @@ "curl", "http client" ], - "time": "2015-06-25T17:26:56+00:00" + "time": "2018-03-19T10:34:40+00:00" }, { - "name": "leafo/lessphp", - "version": "v0.4.0", + "name": "leafo/scssphp", + "version": "v0.6.7", "source": { "type": "git", - "url": "https://github.com/leafo/lessphp.git", - "reference": "51f3f06f0fe78a722dabfd14578444bdd078d9de" + "url": "https://github.com/leafo/scssphp.git", + "reference": "562213cd803e42ea53b0735554794c4022d8db89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/leafo/lessphp/zipball/51f3f06f0fe78a722dabfd14578444bdd078d9de", - "reference": "51f3f06f0fe78a722dabfd14578444bdd078d9de", + "url": "https://api.github.com/repos/leafo/scssphp/zipball/562213cd803e42ea53b0735554794c4022d8db89", + "reference": "562213cd803e42ea53b0735554794c4022d8db89", "shasum": "" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3-dev" - } + "require": { + "php": ">=5.4.0" }, + "require-dev": { + "kherge/box": "~2.5", + "phpunit/phpunit": "~3.7", + "squizlabs/php_codesniffer": "~2.5" + }, + "bin": [ + "bin/pscss" + ], + "type": "library", "autoload": { - "classmap": [ - "lessc.inc.php" - ] + "psr-4": { + "Leafo\\ScssPhp\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT", - "GPL-3.0" + "MIT" ], "authors": [ { @@ -4739,30 +4873,40 @@ "homepage": "http://leafo.net" } ], - "description": "lessphp is a compiler for LESS written in PHP.", - "homepage": "http://leafo.net/lessphp/", - "time": "2013-08-09T17:09:19+00:00" + "description": "scssphp is a compiler for SCSS written in PHP.", + "homepage": "http://leafo.github.io/scssphp/", + "keywords": [ + "css", + "less", + "sass", + "scss", + "stylesheet" + ], + "abandoned": "scssphp/scssphp", + "time": "2017-02-23T05:07:33+00:00" }, { "name": "lexik/maintenance-bundle", - "version": "v2.1.1", + "version": "v2.1.5", "source": { "type": "git", "url": "https://github.com/lexik/LexikMaintenanceBundle.git", - "reference": "01c2763f1f2012958d4b43bbb87daf96b0316706" + "reference": "3a3e916776934a95834235e4a1d71e4595d515f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lexik/LexikMaintenanceBundle/zipball/01c2763f1f2012958d4b43bbb87daf96b0316706", - "reference": "01c2763f1f2012958d4b43bbb87daf96b0316706", + "url": "https://api.github.com/repos/lexik/LexikMaintenanceBundle/zipball/3a3e916776934a95834235e4a1d71e4595d515f5", + "reference": "3a3e916776934a95834235e4a1d71e4595d515f5", "shasum": "" }, "require": { - "php": ">=5.3.2", - "symfony/framework-bundle": "~2.7|~3.0" + "php": ">=5.3.9", + "symfony/framework-bundle": "~2.7|~3.0|^4.0", + "symfony/translation": "~2.7|~3.0|^4.0" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" + "phpunit/phpunit": "~4.8|~5.7.11", + "symfony/phpunit-bridge": "~2.7|~3.0|^4.0" }, "type": "symfony-bundle", "extra": { @@ -4800,24 +4944,24 @@ "bundle", "maintenance" ], - "time": "2016-03-15T09:38:32+00:00" + "time": "2018-02-14T10:18:33+00:00" }, { "name": "liip/imagine-bundle", - "version": "1.7.4", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/liip/LiipImagineBundle.git", - "reference": "105dd9c3446e3eb44e33161d4e636a3abafb6d7f" + "reference": "3084c77e984ec669e0d645250a3cb1077d8b92f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/105dd9c3446e3eb44e33161d4e636a3abafb6d7f", - "reference": "105dd9c3446e3eb44e33161d4e636a3abafb6d7f", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/3084c77e984ec669e0d645250a3cb1077d8b92f6", + "reference": "3084c77e984ec669e0d645250a3cb1077d8b92f6", "shasum": "" }, "require": { - "imagine/imagine": "^0.6.3,<0.7", + "imagine/imagine": "^0.6.3|^0.7.0,<0.8", "php": "^5.3.9|^7.0", "symfony/asset": "~2.3|~3.0", "symfony/filesystem": "~2.3|~3.0", @@ -4834,7 +4978,7 @@ "doctrine/cache": "~1.1", "doctrine/orm": "~2.3", "ext-gd": "*", - "friendsofphp/php-cs-fixer": "~2.0", + "friendsofphp/php-cs-fixer": "~1.0", "phpunit/phpunit": "~4.3|~5.0", "psr/log": "~1.0", "satooshi/php-coveralls": "~1.0", @@ -4853,6 +4997,7 @@ "amazonwebservices/aws-sdk-for-php": "required to use AWS version 1 cache resolver", "aws/aws-sdk-php": "required to use AWS version 2/3 cache resolver", "doctrine/mongodb-odm": "required to use mongodb-backed doctrine components", + "enqueue/enqueue-bundle": "add if you like to process images in background", "ext-exif": "required to read EXIF metadata from images", "ext-gd": "required to use gd driver", "ext-gmagick": "required to use gmagick driver", @@ -4900,10 +5045,10 @@ "symfony", "transformation" ], - "time": "2017-03-02T20:18:55+00:00" + "time": "2017-09-09T03:53:30+00:00" }, { - "name": "liuggio/ExcelBundle", + "name": "liuggio/excelbundle", "version": "v2.1.0", "source": { "type": "git", @@ -4970,30 +5115,28 @@ }, { "name": "michelf/php-markdown", - "version": "1.7.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/michelf/php-markdown.git", - "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220" + "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/michelf/php-markdown/zipball/1f51cc520948f66cd2af8cbc45a5ee175e774220", - "reference": "1f51cc520948f66cd2af8cbc45a5ee175e774220", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c", + "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c", "shasum": "" }, "require": { "php": ">=5.3.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-lib": "1.4.x-dev" - } + "require-dev": { + "phpunit/phpunit": ">=4.3 <5.8" }, + "type": "library", "autoload": { - "psr-0": { - "Michelf": "" + "psr-4": { + "Michelf\\": "Michelf/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5017,20 +5160,20 @@ "keywords": [ "markdown" ], - "time": "2016-10-29T18:58:20+00:00" + "time": "2019-12-02T02:32:27+00:00" }, { "name": "monolog/monolog", - "version": "1.22.1", + "version": "1.23.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0" + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1e044bc4b34e91743943479f1be7a1d5eb93add0", - "reference": "1e044bc4b34e91743943479f1be7a1d5eb93add0", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", "shasum": "" }, "require": { @@ -5051,7 +5194,7 @@ "phpunit/phpunit-mock-objects": "2.3.0", "ruflin/elastica": ">=0.90 <3.0", "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "~5.3" + "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -5095,20 +5238,20 @@ "logging", "psr-3" ], - "time": "2017-03-13T07:08:03+00:00" + "time": "2017-06-19T01:22:40+00:00" }, { "name": "mtdowling/cron-expression", - "version": "v1.1.0", + "version": "v1.2.3", "source": { "type": "git", "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5" + "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/c9ee7886f5a12902b225a1a12f36bb45f9ab89e5", - "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9be552eebcc1ceec9776378f7dcc085246cacca6", + "reference": "9be552eebcc1ceec9776378f7dcc085246cacca6", "shasum": "" }, "require": { @@ -5119,8 +5262,8 @@ }, "type": "library", "autoload": { - "psr-0": { - "Cron": "src/" + "psr-4": { + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5139,20 +5282,21 @@ "cron", "schedule" ], - "time": "2016-01-26T21:23:30+00:00" + "abandoned": "dragonmantank/cron-expression", + "time": "2019-12-28T04:23:06+00:00" }, { "name": "mustangostang/spyc", - "version": "0.6.2", + "version": "0.6.3", "source": { "type": "git", - "url": "https://github.com/mustangostang/spyc.git", - "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d" + "url": "git@github.com:mustangostang/spyc.git", + "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mustangostang/spyc/zipball/23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", - "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", + "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0", + "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0", "shasum": "" }, "require": { @@ -5189,29 +5333,29 @@ "yaml", "yml" ], - "time": "2017-02-24T16:06:33+00:00" + "time": "2019-09-10T13:16:29+00:00" }, { "name": "nelmio/api-doc-bundle", - "version": "2.13.0", + "version": "2.13.3", "target-dir": "Nelmio/ApiDocBundle", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioApiDocBundle.git", - "reference": "a3a9bb3b700f3ebaed95390292dad23f8141afa0" + "reference": "f0a606b6362c363043e01aa079bee2b0b5eb47a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/a3a9bb3b700f3ebaed95390292dad23f8141afa0", - "reference": "a3a9bb3b700f3ebaed95390292dad23f8141afa0", + "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/f0a606b6362c363043e01aa079bee2b0b5eb47a2", + "reference": "f0a606b6362c363043e01aa079bee2b0b5eb47a2", "shasum": "" }, "require": { "michelf/php-markdown": "~1.4", - "php": ">=5.3", - "symfony/console": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/twig-bundle": "~2.3|~3.0" + "php": ">=5.4", + "symfony/console": "~2.3|~3.0|~4.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0", + "symfony/twig-bundle": "~2.3|~3.0|~4.0" }, "conflict": { "jms/serializer": "<0.12", @@ -5222,18 +5366,18 @@ "require-dev": { "doctrine/doctrine-bundle": "~1.5", "doctrine/orm": "~2.3", - "dunglas/api-bundle": "~1.0@dev", + "dunglas/api-bundle": "~1.0", "friendsofsymfony/rest-bundle": "~1.0|~2.0", "jms/serializer-bundle": ">=0.11", "sensio/framework-extra-bundle": "~3.0", - "symfony/browser-kit": "~2.3|~3.0", - "symfony/css-selector": "~2.3|~3.0", - "symfony/finder": "~2.3|~3.0", - "symfony/form": "~2.3|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/serializer": "~2.7|~3.0", - "symfony/validator": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/browser-kit": "~2.3|~3.0|~4.0", + "symfony/css-selector": "~2.3|~3.0|~4.0", + "symfony/finder": "~2.3|~3.0|~4.0", + "symfony/form": "~2.3|~3.0|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", + "symfony/serializer": "~2.7|~3.0|~4.0", + "symfony/validator": "~2.3|~3.0|~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0" }, "suggest": { "dunglas/api-bundle": "For making use of resources definitions of DunglasApiBundle.", @@ -5245,7 +5389,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.13-dev" + "dev-2.x": "2.13-dev" } }, "autoload": { @@ -5274,33 +5418,47 @@ "documentation", "rest" ], - "time": "2016-06-13T09:12:09+00:00" + "time": "2017-12-05T06:14:09+00:00" }, { - "name": "nesbot/carbon", - "version": "1.21.0", + "name": "nelmio/security-bundle", + "version": "2.5.1", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7" + "url": "https://github.com/nelmio/NelmioSecurityBundle.git", + "reference": "fe1d31eb23c13e0918de9a66df9d315648c5d3d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/fe1d31eb23c13e0918de9a66df9d315648c5d3d1", + "reference": "fe1d31eb23c13e0918de9a66df9d315648c5d3d1", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6|~3.0" + "paragonie/random_compat": "~1.0|~2.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0", + "symfony/security": "~2.3|~3.0|~4.0", + "ua-parser/uap-php": "^3.4.4" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "doctrine/cache": "^1.0", + "psr/cache": "^1.0", + "symfony/phpunit-bridge": "^3.2|~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0", + "twig/twig": "^1.24" + }, + "suggest": { + "ua-parser/uap-php": "To allow adapt CSP directives given the user-agent" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "Carbon\\": "src/Carbon/" + "Nelmio\\SecurityBundle\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -5309,125 +5467,125 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "name": "Nelmio", + "homepage": "http://nelm.io" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/nelmio/NelmioSecurityBundle/contributors" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", + "description": "Extra security-related features for Symfony: signed/encrypted cookies, HTTPS/SSL/HSTS handling, cookie session storage, ...", "keywords": [ - "date", - "datetime", - "time" + "security" ], - "time": "2015-11-04T20:07:17+00:00" + "time": "2018-03-21T14:33:42+00:00" }, { - "name": "npm-asset/bootbox", - "version": "v4.1.0", + "name": "nesbot/carbon", + "version": "1.29.2", "source": { "type": "git", - "url": "https://github.com/makeusabrew/bootbox.git", - "reference": "f4ced08acee9ba17a542d72d44db8c868f5379c2" + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/makeusabrew/bootbox/zipball/f4ced08acee9ba17a542d72d44db8c868f5379c2", - "reference": "f4ced08acee9ba17a542d72d44db8c868f5379c2", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ed6aa898982f441ccc9b2acdec51490f2bc5d337", + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337", "shasum": "" }, - "require-dev": { - "npm-asset/grunt": "~0.4.1", - "npm-asset/grunt-contrib-jshint": "~0.6.3", - "npm-asset/grunt-contrib-uglify": "~0.2.2", - "npm-asset/grunt-karma": "~0.6.2", - "npm-asset/karma": "~0.10.1", - "npm-asset/karma-chai": "0.0.1", - "npm-asset/karma-coffee-preprocessor": "~0.1.0", - "npm-asset/karma-coverage": "~0.1.0", - "npm-asset/karma-junit-reporter": "~0.1.0", - "npm-asset/karma-mocha": "~0.1.0", - "npm-asset/karma-phantomjs-launcher": "~0.1.0", - "npm-asset/mocha": "~1.12.0", - "npm-asset/sinon": "~1.7.3", - "npm-asset/sinon-chai": "~2.4.0" + "require": { + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, - "type": "npm-asset-library", - "extra": { - "npm-asset-directories": { - "test": "tests" - }, - "npm-asset-repository": { - "type": "git", - "url": "git://github.com/makeusabrew/bootbox.git" - }, - "npm-asset-scripts": { - "test": "./node_modules/.bin/karma start" - }, - "npm-asset-private": true + "require-dev": { + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" }, - "license": [ - "MIT" + "type": "library", + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ - "Nick Payne " + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" ], - "description": "Wrappers for JavaScript alert(), confirm() and other flexible dialogs using Twitter's bootstrap framework" + "time": "2018-05-29T15:23:46+00:00" }, { "name": "npm-asset/bootstrap", - "version": "v3.0.3", - "source": { - "type": "git", - "url": "https://github.com/twbs/bootstrap.git", - "reference": "6d03173a1aad98e75f7d33e65b411c519176c59a" + "version": "4.3.1", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", + "reference": null, + "shasum": null }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/jquery", + "version": "1.12.4", "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twbs/bootstrap/zipball/6d03173a1aad98e75f7d33e65b411c519176c59a", - "reference": "6d03173a1aad98e75f7d33e65b411c519176c59a", - "shasum": "" + "type": "tar", + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz", + "reference": null, + "shasum": null }, - "require-dev": { - "npm-asset/btoa": "~1.1.1", - "npm-asset/grunt": "~0.4.1", - "npm-asset/grunt-contrib-clean": "~0.5.0", - "npm-asset/grunt-contrib-concat": "~0.3.0", - "npm-asset/grunt-contrib-connect": "~0.5.0", - "npm-asset/grunt-contrib-copy": "~0.4.1", - "npm-asset/grunt-contrib-jshint": "~0.7.0", - "npm-asset/grunt-contrib-qunit": "~0.3.0", - "npm-asset/grunt-contrib-uglify": "~0.2.4", - "npm-asset/grunt-contrib-watch": "~0.5.3", - "npm-asset/grunt-html-validation": "~0.1.6", - "npm-asset/grunt-jekyll": "~0.4.0", - "npm-asset/grunt-recess": "~0.5.0", - "npm-asset/grunt-saucelabs": "~4.1.2", - "npm-asset/grunt-sed": "~0.1.1", - "npm-asset/regexp-quote": "~0.0.0" + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/jquery.uniform", + "version": "4.2.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/jquery.uniform/-/jquery.uniform-4.2.0.tgz", + "reference": null, + "shasum": null }, - "type": "npm-asset-library", - "extra": { - "npm-asset-bugs": { - "url": "https://github.com/twbs/bootstrap/issues" - }, - "npm-asset-repository": { - "type": "git", - "url": "https://github.com/twbs/bootstrap.git" - }, - "npm-asset-scripts": { - "test": "grunt test" - } + "require": { + "npm-asset/jquery": ">=1.6.0,<2.0.0" }, - "authors": [ - "Twitter, Inc." - ], - "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development.", - "homepage": "http://getbootstrap.com", - "keywords": [ - "bootstrap", - "css" + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/popper.js", + "version": "1.14.7", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.7.tgz", + "reference": null, + "shasum": null + }, + "type": "npm-asset", + "license": [ + "MIT" ] }, { @@ -5437,75 +5595,117 @@ "type": "tar", "url": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.3.tgz", "reference": null, - "shasum": "aa59fd3a0287eaf407959a138228044b5dd6a6a3" + "shasum": null + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/xregexp", + "version": "3.2.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/xregexp/-/xregexp-3.2.0.tgz", + "reference": null, + "shasum": null + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "ocramius/package-versions", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", + "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" }, - "bin": { - "r.js": "./bin/r.js", - "r_js": "./bin/r.js" + "require-dev": { + "composer/composer": "^1.6.3", + "doctrine/coding-standard": "^5.0.1", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.5.17" }, - "type": "npm-asset-library", + "type": "composer-plugin", "extra": { - "npm-asset-bugs": { - "url": "https://github.com/jrburke/r.js/issues" - }, - "npm-asset-main": "./bin/r.js", - "npm-asset-directories": [], - "npm-asset-repository": { - "type": "git", - "url": "git+https://github.com/jrburke/r.js.git" - }, - "npm-asset-scripts": [], - "npm-asset-engines": { - "node": ">=0.4.0" + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "James Burke", - "email": "jrburke@gmail.com", - "url": "http://github.com/jrburke" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" } ], - "description": "Node adapter for RequireJS, for loading AMD modules. Includes RequireJS optimizer", - "homepage": "http://github.com/jrburke/r.js" + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2019-11-15T16:17:10+00:00" }, { "name": "ocramius/proxy-manager", - "version": "0.5.2", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5" + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", - "reference": "0ac0eb3e8e04c7fa75caaf1a43c5405623abf8f5", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", "shasum": "" }, "require": { - "php": ">=5.3.3", - "zendframework/zend-code": ">2.2.5,<3.0" + "ocramius/package-versions": "^1.1.1", + "php": "^7.1.0", + "zendframework/zend-code": "^3.1.0" }, "require-dev": { + "couscous/couscous": "^1.5.2", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "1.5.*" + "humbug/humbug": "dev-master@DEV", + "nikic/php-parser": "^3.0.4", + "phpbench/phpbench": "^0.12.2", + "phpstan/phpstan": "^0.6.4", + "phpunit/phpunit": "^5.6.4", + "phpunit/phpunit-mock-objects": "^3.4.1", + "squizlabs/php_codesniffer": "^2.7.0" }, "suggest": { "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", - "zendframework/zend-stdlib": "To use the hydrator proxy", "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.6.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -5521,7 +5721,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "http://ocramius.github.io/" } ], "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", @@ -5533,25 +5733,80 @@ "proxy pattern", "service proxies" ], - "time": "2014-09-28T14:18:11+00:00" + "time": "2017-05-04T11:12:50+00:00" + }, + { + "name": "oro/calendar-bundle", + "version": "3.1.16", + "source": { + "type": "git", + "url": "https://github.com/oroinc/OroCalendarBundle.git", + "reference": "4367645d9f72bb8591ddeb92ca3d1c0179126a94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oroinc/OroCalendarBundle/zipball/4367645d9f72bb8591ddeb92ca3d1c0179126a94", + "reference": "4367645d9f72bb8591ddeb92ca3d1c0179126a94", + "shasum": "" + }, + "require": { + "bower-asset/fullcalendar": "3.4.0", + "oro/platform": "~3.1.1" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\Bundle\\CalendarBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Calendar bundle for OroPlatform-based applications.\nSee https://oroinc.com/orocrm/doc/current/user-guide/activities/calendars-overview for more information.", + "homepage": "https://github.com/oroinc/OroCalendarBundle.git", + "keywords": [ + "Calendar", + "Oro", + "OroCRM", + "OroPlatform" + ], + "support": { + "source": "https://github.com/oroinc/OroCalendarBundle/tree/3.1", + "issues": "https://github.com/oroinc/OroCalendarBundle/issues" + }, + "time": "2020-07-02T14:09:50+00:00" }, { "name": "oro/doctrine-extensions", - "version": "1.1.1", + "version": "1.2.2", "source": { "type": "git", - "url": "https://github.com/orocrm/doctrine-extensions.git", - "reference": "30bfc15d1e4628560f8983bc663f6e595d103c9a" + "url": "https://github.com/oroinc/doctrine-extensions.git", + "reference": "71b38bd772d68723b3999843d710b039b667426e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orocrm/doctrine-extensions/zipball/30bfc15d1e4628560f8983bc663f6e595d103c9a", - "reference": "30bfc15d1e4628560f8983bc663f6e595d103c9a", + "url": "https://api.github.com/repos/oroinc/doctrine-extensions/zipball/71b38bd772d68723b3999843d710b039b667426e", + "reference": "71b38bd772d68723b3999843d710b039b667426e", "shasum": "" }, "require": { "doctrine/orm": ">=2.2.3", - "php": ">=5.3.0" + "php": ">=5.4.0" }, "require-dev": { "doctrine/data-fixtures": "^1.0", @@ -5588,144 +5843,149 @@ "postgresql", "type" ], - "time": "2017-02-17T16:39:21+00:00" + "time": "2018-11-12T09:15:04+00:00" }, { "name": "oro/platform", - "version": "2.1.0", + "version": "3.1.20", "source": { "type": "git", - "url": "git@github.com:orocrm/platform.git", - "reference": "122cb2d80ebe66dfb20dd8b512e68eb63ae4c5e3" + "url": "https://github.com/oroinc/platform.git", + "reference": "b5efc3ea6ac3e2169b38503d58f0773f171e6f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orocrm/platform/zipball/122cb2d80ebe66dfb20dd8b512e68eb63ae4c5e3", - "reference": "122cb2d80ebe66dfb20dd8b512e68eb63ae4c5e3", + "url": "https://api.github.com/repos/oroinc/platform/zipball/b5efc3ea6ac3e2169b38503d58f0773f171e6f80", + "reference": "b5efc3ea6ac3e2169b38503d58f0773f171e6f80", "shasum": "" }, "require": { - "a2lix/translation-form-bundle": "1.x-dev", - "akeneo/batch-bundle": "0.4.2", + "akeneo/batch-bundle": "0.4.*", "ass/xmlsecurity": "1.1.1", "bower-asset/autobahnjs": "0.8.0", - "bower-asset/autolinker.js": "0.11.0", + "bower-asset/autolinker.js": "1.4.*", "bower-asset/backbone": "1.2.3", "bower-asset/backbone-pageable": "1.2.3", "bower-asset/backgrid": "0.3.7", "bower-asset/backgrid-paginator": "0.3.8", "bower-asset/base64": "1.0.*", "bower-asset/bean": "1.0.6", - "bower-asset/bootstrap": "2.3.0", - "bower-asset/chaplin": "1.0.0", + "bower-asset/chaplin": "1.2.0", "bower-asset/crypto-js": "3.1.7", - "bower-asset/datepair": "0.4.4", + "bower-asset/datepair": "0.4.*", "bower-asset/flotr2": "dev-master", "bower-asset/font-awesome": "4.7.*", - "bower-asset/fullcalendar": "2.2.3", - "bower-asset/jquery": "3.1.1", + "bower-asset/fuse": "3.2.*", "bower-asset/jquery-ajax-queue": "0.0.1", "bower-asset/jquery-cookie": "1.4.1", - "bower-asset/jquery-form": "3.37.0", + "bower-asset/jquery-form": "4.2.1", "bower-asset/jquery-mousewheel": "3.1.13", - "bower-asset/jquery-ui-multiselect-widget": "1.14", - "bower-asset/jquery-validate": "1.11.1", - "bower-asset/jquery.numeric": "1.4.1", - "bower-asset/json2": "dev-master", + "bower-asset/jquery-ui-multiselect-widget": "2.0.1", + "bower-asset/jquery-validate": "1.16.0", + "bower-asset/jquery.numeric": "1.5.0", "bower-asset/jsplumb": "1.7.*", - "bower-asset/less": "2.5.*", - "bower-asset/lightgallery": "1.2.18", + "bower-asset/lightgallery": "1.4.0", "bower-asset/malihu-custom-scrollbar-plugin": "3.1.5", + "bower-asset/moment": "2.24.*", "bower-asset/moment-timezone": "0.5.*", - "bower-asset/numeral": "1.5.2", + "bower-asset/numeral": "2.0.6", "bower-asset/select2": "3.4.1", - "bower-asset/text": "2.0.10", - "bower-asset/timepicker": "1.4.13", + "bower-asset/text": "2.0.*", + "bower-asset/timepicker": "1.11.*", "bower-asset/underscore": "1.8.3", - "bower-asset/uniform": "2.1.1", "bower-asset/when": "2.4.0", - "components/jquery": "3.1.*", + "brick/math": "0.8.*", + "components/jquery": "3.4.*", "components/jqueryui": "1.12.*", - "composer/composer": "1.4.*", - "doctrine/annotations": "1.3.*", - "doctrine/data-fixtures": "1.2.2", - "doctrine/dbal": "2.5.5", - "doctrine/doctrine-bundle": "1.6.3", - "doctrine/doctrine-fixtures-bundle": "2.3.0", - "doctrine/orm": "2.5.5", - "escapestudios/wsse-authentication-bundle": "1.0.2", + "composer/composer": "1.6.*", + "doctrine/annotations": "1.6.*", + "doctrine/collections": "1.5.*", + "doctrine/data-fixtures": "1.3.*", + "doctrine/dbal": "2.7.*", + "doctrine/doctrine-bundle": "1.9.*", + "doctrine/doctrine-fixtures-bundle": "2.4.*", + "doctrine/orm": "2.6.3", + "doctrine/persistence": "1.2.*", + "escapestudios/wsse-authentication-bundle": "2.3.*", "ext-gd": "*", "ext-intl": "*", "ext-mbstring": "*", - "ext-mcrypt": "*", "ext-openssl": "*", "ext-xml": "*", "ext-zip": "*", - "ezyang/htmlpurifier": "4.8.0", - "friendsofsymfony/jsrouting-bundle": "1.6.0", - "friendsofsymfony/rest-bundle": "1.7.9", - "genemu/form-bundle": "2.3.0", + "ezyang/htmlpurifier": "4.10.*", + "friendsofsymfony/jsrouting-bundle": "2.2.*", + "friendsofsymfony/rest-bundle": "1.8.0", + "gos/web-socket-bundle": "1.8.11", "guzzle/guzzle": "3.7.*", "hwi/oauth-bundle": "0.5.*", - "incenteev/composer-parameter-handler": "2.1.2", - "jdare/clank-bundle": "0.1.*", + "incenteev/composer-parameter-handler": "2.1.*", "jms/cg": "1.2.*", - "jms/serializer": "1.4.2", - "jms/serializer-bundle": "1.1.0", + "jms/serializer": "1.12.*", + "jms/serializer-bundle": "1.5.*", "knplabs/knp-gaufrette-bundle": "0.3.*", - "knplabs/knp-menu": "2.2.*", - "knplabs/knp-menu-bundle": "2.1.*", - "kriswallsmith/assetic": "1.4.0", - "leafo/lessphp": "0.4.0", - "lexik/maintenance-bundle": "2.1.1", - "liip/imagine-bundle": "1.7.*", + "knplabs/knp-menu": "2.3.*", + "knplabs/knp-menu-bundle": "2.2.*", + "kriswallsmith/buzz": "0.16.*", + "leafo/scssphp": "0.6.*", + "lexik/maintenance-bundle": "2.1.5", + "liip/imagine-bundle": "1.9.*", "liuggio/excelbundle": "2.1.*", - "monolog/monolog": "1.22.*", - "mtdowling/cron-expression": "1.1.0", - "nelmio/api-doc-bundle": "2.13.0", - "nesbot/carbon": "1.21.*", - "npm-asset/bootbox": "4.1.0", - "npm-asset/bootstrap": "3.0.3", + "monolog/monolog": "1.23.*", + "mtdowling/cron-expression": "1.2.*", + "nelmio/api-doc-bundle": "2.13.3", + "nelmio/security-bundle": "2.5.*", + "nesbot/carbon": "1.29.*", + "npm-asset/bootstrap": "4.3.1", + "npm-asset/jquery.uniform": "4.2.0", + "npm-asset/popper.js": "1.14.7", "npm-asset/requirejs": "2.3.*", - "ocramius/proxy-manager": "0.5.*", - "oro/doctrine-extensions": "1.1.*", - "oro/redis-config": "~2.0", - "php": ">=7.0", - "piwik/device-detector": "3.7.*", + "npm-asset/xregexp": "3.2.*", + "ocramius/proxy-manager": "2.1.1", + "oro/doctrine-extensions": "1.2.*", + "oro/redis-config": "~3.1.1", + "php": ">=7.1.26 <7.4", + "phpdocumentor/reflection-docblock": "4.3.*", + "piwik/device-detector": "3.10.*", "robloach/component-installer": "0.2.*", - "sensio/distribution-bundle": "4.0.*", - "sensio/framework-extra-bundle": "3.0.*", - "stof/doctrine-extensions-bundle": "1.2.2", - "sylius/flow-bundle": "0.19.*", - "symfony/assetic-bundle": "2.8.1", - "symfony/monolog-bundle": "3.0.*", + "sensio/distribution-bundle": "5.0.*", + "sensio/framework-extra-bundle": "~3.0.12", + "stof/doctrine-extensions-bundle": "1.3.*", + "symfony/http-client": "4.3.8", + "symfony/monolog-bundle": "3.3.*", "symfony/polyfill-php70": "1.*", - "symfony/swiftmailer-bundle": "2.4.*", - "symfony/symfony": "2.8.*, !=2.8.10, <=2.8.13", - "tinymce/tinymce": "4.1.*", - "twig/extensions": "1.4.*", - "twig/twig": "1.29.*", + "symfony/security-acl": "~3.0.4", + "symfony/swiftmailer-bundle": "2.6.*", + "symfony/symfony": "3.4.36", + "tinymce/tinymce": "4.6.*", + "twig/extensions": "1.5.*", + "twig/twig": "1.41.*", "vakata/jstree": "3.3.*", - "zendframework/zend-mail": "2.4.0" + "zendframework/zend-mail": "2.10.0" }, "require-dev": { - "behat/behat": "3.2.2", - "behat/mink-extension": "2.2.*", + "behat/behat": "3.4.*", + "behat/gherkin": "4.6.0", + "behat/mink-extension": "2.3.*", "behat/mink-selenium2-driver": "1.*", - "behat/symfony2-extension": "2.1.1", - "johnkary/phpunit-speedtrap": "1.0.*", - "mybuilder/phpunit-accelerator": "1.2.*", - "nelmio/alice": "2.2.*", + "behat/symfony2-extension": "2.1.*", + "friendsofphp/php-cs-fixer": "2.12.*", + "johnkary/phpunit-speedtrap": "2.0.*", + "mybuilder/phpunit-accelerator": "2.*", + "nelmio/alice": "2.3.*", "phpmd/phpmd": "2.6.*", - "phpunit/phpunit": "5.7.*", - "sebastian/phpcpd": "2.0.*", - "sensio/generator-bundle": "3.1.2", - "squizlabs/php_codesniffer": "2.8.*" + "phpunit/phpunit": "6.5.*", + "sensio/generator-bundle": "3.1.*", + "squizlabs/php_codesniffer": "3.3.*", + "symfony/phpunit-bridge": "3.4.*" }, "type": "library", "extra": { + "symfony": { + "require": "3.4.*" + }, "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -5736,7 +5996,6 @@ "/Tests/" ] }, - "notification-url": "https://packagist.orocrm.com/downloads/", "license": [ "MIT" ], @@ -5747,31 +6006,34 @@ } ], "description": "Business Application Platform (BAP)", - "homepage": "https://github.com/orocrm/platform.git", - "time": "2017-03-29T14:46:21+00:00" + "homepage": "https://github.com/oroinc/platform.git", + "support": { + "source": "https://github.com/oroinc/platform/tree/3.1", + "issues": "https://github.com/oroinc/platform/issues" + }, + "time": "2020-03-10T21:50:29+00:00" }, { "name": "oro/platform-serialised-fields", - "version": "2.1.0", + "version": "3.1.4", "source": { "type": "git", - "url": "git@github.com:orocrm/OroEntitySerializedFieldsBundle.git", - "reference": "d78d3aa639768185cdd3800a830c43cd3cabef7f" + "url": "https://github.com/oroinc/OroEntitySerializedFieldsBundle.git", + "reference": "8f9d7876a55ceac859d84fdeb5b57ff62af74a40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orocrm/OroEntitySerializedFieldsBundle/zipball/d78d3aa639768185cdd3800a830c43cd3cabef7f", - "reference": "d78d3aa639768185cdd3800a830c43cd3cabef7f", + "url": "https://api.github.com/repos/oroinc/OroEntitySerializedFieldsBundle/zipball/8f9d7876a55ceac859d84fdeb5b57ff62af74a40", + "reference": "8f9d7876a55ceac859d84fdeb5b57ff62af74a40", "shasum": "" }, "require": { - "oro/platform": "2.1.*", - "php": ">=7.0" + "oro/platform": "~3.1.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -5782,7 +6044,6 @@ "/Tests/" ] }, - "notification-url": "https://packagist.orocrm.com/downloads/", "license": [ "OSL-3.0" ], @@ -5792,67 +6053,85 @@ "homepage": "http://www.orocrm.com" } ], - "description": "Oro Platform Serialized Fields", - "homepage": "https://github.com/orocrm/OroEntitySerializedFieldsBundle", + "description": "OroPlatform Serialized Fields", + "homepage": "https://github.com/oroinc/OroEntitySerializedFieldsBundle", "keywords": [ "Oro", "Platform", "entity", "fields" ], - "time": "2017-03-22T07:45:17+00:00" + "support": { + "source": "https://github.com/oroinc/OroEntitySerializedFieldsBundle/tree/3.1", + "issues": "https://github.com/oroinc/OroEntitySerializedFieldsBundle/issues" + }, + "time": "2019-10-15T11:16:28+00:00" }, { "name": "oro/redis-config", - "version": "2.0.0-beta.1", - "target-dir": "src/Oro/Bundle/RedisConfigBundle", + "version": "3.1.6", "source": { "type": "git", - "url": "git@github.com:orocrm/redis-config.git", - "reference": "d37a652362cdee73d12c8c46c933876c1552d624" + "url": "https://github.com/oroinc/redis-config.git", + "reference": "d54469d31b75740de4c3aabf6d7093060b0102d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orocrm/redis-config/zipball/d37a652362cdee73d12c8c46c933876c1552d624", - "reference": "d37a652362cdee73d12c8c46c933876c1552d624", + "url": "https://api.github.com/repos/oroinc/redis-config/zipball/d54469d31b75740de4c3aabf6d7093060b0102d9", + "reference": "d54469d31b75740de4c3aabf6d7093060b0102d9", "shasum": "" }, "require": { - "predis/predis": "~1.0", - "snc/redis-bundle": "1.1.*" + "predis/predis": "1.1.1", + "snc/redis-bundle": "~2.1.0" + }, + "require-dev": { + "phpunit/phpunit": "5.7.*" }, "type": "symfony-bundle", - "autoload": { - "psr-0": { - "Oro\\Bundle\\RedisConfigBundle": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" } }, - "notification-url": "https://packagist.orocrm.com/downloads/", + "autoload": { + "psr-4": { + "Oro\\Bundle\\RedisConfigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, "license": [ "MIT" ], "description": "OroRedisConfigBundle", - "homepage": "https://github.com/orocrm/redis-config", + "homepage": "https://github.com/oroinc/redis-config", "keywords": [ "Oro", "OroCRM", + "OroCommerce", "OroPlatform", "Redis" ], - "time": "2016-05-25T12:17:15+00:00" + "support": { + "source": "https://github.com/oroinc/redis-config/tree/3.1", + "issues": "https://github.com/oroinc/redis-config/issues" + }, + "time": "2020-09-18T15:40:13+00:00" }, { "name": "paragonie/random_compat", - "version": "v2.0.10", + "version": "v2.0.19", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" + "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", - "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241", + "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241", "shasum": "" }, "require": { @@ -5884,10 +6163,11 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2017-03-13T16:27:32+00:00" + "time": "2020-10-15T10:06:57+00:00" }, { "name": "phpcollection/phpcollection", @@ -5938,505 +6218,495 @@ "time": "2015-05-17T12:39:23+00:00" }, { - "name": "phpoffice/phpexcel", - "version": "1.8.1", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/PHPOffice/PHPExcel.git", - "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/372c7cbb695a6f6f1e62649381aeaa37e7e70b32", - "reference": "372c7cbb695a6f6f1e62649381aeaa37e7e70b32", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "ext-xml": "*", - "ext-xmlwriter": "*", - "php": ">=5.2.0" + "php": "^7.2 || ^8.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, "autoload": { - "psr-0": { - "PHPExcel": "Classes/" + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL" + "MIT" ], "authors": [ { - "name": "Maarten Balliauw", - "homepage": "http://blog.maartenballiauw.be" - }, - { - "name": "Mark Baker" - }, - { - "name": "Franck Lefevre", - "homepage": "http://blog.rootslabs.net" - }, - { - "name": "Erik Tilt" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "http://phpexcel.codeplex.com", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "OpenXML", - "excel", - "php", - "spreadsheet", - "xls", - "xlsx" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2015-05-01T07:00:55+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.5.0", + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.4", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", - "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "4.7.*" + "doctrine/instantiator": "^1.0.5", + "mockery/mockery": "^1.0", + "phpdocumentor/type-resolver": "0.4.*", + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "4.x-dev" } }, "autoload": { - "psr-0": { - "PhpOption\\": "src/" + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache2" + "MIT" ], "authors": [ { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "time": "2015-07-25T16:39:46+00:00" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2019-12-28T18:55:12+00:00" }, { - "name": "piwik/device-detector", - "version": "3.7.7", + "name": "phpdocumentor/type-resolver", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/piwik/device-detector.git", - "reference": "f0e5d6bc159241fdfc2e02f7abd4ab5d519d2c30" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/piwik/device-detector/zipball/f0e5d6bc159241fdfc2e02f7abd4ab5d519d2c30", - "reference": "f0e5d6bc159241fdfc2e02f7abd4ab5d519d2c30", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { - "mustangostang/spyc": "*", - "php": ">=5.3.2" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "fabpot/php-cs-fixer": "~1.7", - "phpunit/phpunit": "4.1.*" - }, - "suggest": { - "doctrine/cache": "Can directly be used for caching purpose" + "ext-tokenizer": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, "autoload": { "psr-4": { - "DeviceDetector\\": "" + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0+" + "MIT" ], "authors": [ { - "name": "The Piwik Team", - "email": "hello@piwik.org", - "homepage": "http://piwik.org/the-piwik-team/" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.", - "homepage": "http://piwik.org", - "keywords": [ - "devicedetection", - "parser", - "useragent" - ], - "time": "2017-04-02T17:25:50+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-09-17T18:55:26+00:00" }, { - "name": "predis/predis", - "version": "v1.1.1", + "name": "phpoffice/phpexcel", + "version": "1.8.2", "source": { "type": "git", - "url": "https://github.com/nrk/predis.git", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" + "url": "https://github.com/PHPOffice/PHPExcel.git", + "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nrk/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", + "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/1441011fb7ecdd8cc689878f54f8b58a6805f870", + "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870", "shasum": "" }, "require": { - "php": ">=5.3.9" + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "php": "^5.2|^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "suggest": { - "ext-curl": "Allows access to Webdis when paired with phpiredis", - "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" + "squizlabs/php_codesniffer": "2.*" }, "type": "library", "autoload": { - "psr-4": { - "Predis\\": "src/" + "psr-0": { + "PHPExcel": "Classes/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-2.1" ], "authors": [ { - "name": "Daniele Alessandri", - "email": "suppakilla@gmail.com", - "homepage": "http://clorophilla.net" + "name": "Maarten Balliauw", + "homepage": "http://blog.maartenballiauw.be" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Franck Lefevre", + "homepage": "http://rootslabs.net" + }, + { + "name": "Mark Baker", + "homepage": "http://markbakeruk.net" } ], - "description": "Flexible and feature-complete Redis client for PHP and HHVM", - "homepage": "http://github.com/nrk/predis", + "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PHPExcel", "keywords": [ - "nosql", - "predis", - "redis" + "OpenXML", + "excel", + "php", + "spreadsheet", + "xls", + "xlsx" ], - "time": "2016-06-16T16:22:20+00:00" + "abandoned": "phpoffice/phpspreadsheet", + "time": "2018-11-22T23:07:24+00:00" }, { - "name": "psr/log", - "version": "1.0.2", + "name": "phpoption/phpoption", + "version": "1.7.5", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", + "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "PhpOption\\": "src/PhpOption/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "Apache-2.0" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Option Type for PHP", "keywords": [ - "log", - "psr", - "psr-3" + "language", + "option", + "php", + "type" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2020-07-20T17:29:33+00:00" }, { - "name": "ramsey/uuid", - "version": "3.6.1", + "name": "piwik/device-detector", + "version": "3.10.2", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "4ae32dd9ab8860a4bbd750ad269cba7f06f7934e" + "url": "https://github.com/matomo-org/device-detector.git", + "reference": "67e96595cd7649b7967533053fcbfbe02d5c55a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/4ae32dd9ab8860a4bbd750ad269cba7f06f7934e", - "reference": "4ae32dd9ab8860a4bbd750ad269cba7f06f7934e", + "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/67e96595cd7649b7967533053fcbfbe02d5c55a3", + "reference": "67e96595cd7649b7967533053fcbfbe02d5c55a3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" + "mustangostang/spyc": "*", + "php": ">=5.3.2" }, "require-dev": { - "apigen/apigen": "^4.1", - "codeception/aspect-mock": "^1.0 | ^2.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.4", - "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|>=5.0 <5.4", - "satooshi/php-coveralls": "^0.6.1", - "squizlabs/php_codesniffer": "^2.3" + "fabpot/php-cs-fixer": "~1.7", + "matthiasmullie/scrapbook": "@stable", + "phpunit/phpunit": "^4.8.36", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" }, "suggest": { - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + "doctrine/cache": "Can directly be used for caching purpose" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, "autoload": { "psr-4": { - "Ramsey\\Uuid\\": "src/" + "DeviceDetector\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-3.0-or-later" ], "authors": [ { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - }, - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" + "name": "The Matomo Team", + "email": "hello@matomo.org", + "homepage": "https://matomo.org/team/" } ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.", + "homepage": "https://matomo.org", "keywords": [ - "guid", - "identifier", - "uuid" + "devicedetection", + "parser", + "useragent" ], - "time": "2017-03-26T20:37:53+00:00" + "abandoned": "matomo/device-detector", + "time": "2018-05-07T19:33:29+00:00" }, { - "name": "react/event-loop", - "version": "v0.3.5", - "target-dir": "React/EventLoop", + "name": "predis/predis", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "13e03b17e54ea864c6653a2cf6d146dad8464e91" + "url": "https://github.com/predis/predis.git", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/13e03b17e54ea864c6653a2cf6d146dad8464e91", - "reference": "13e03b17e54ea864c6653a2cf6d146dad8464e91", + "url": "https://api.github.com/repos/predis/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" }, "suggest": { - "ext-libev": "*", - "ext-libevent": ">=0.0.5" + "ext-curl": "Allows access to Webdis when paired with phpiredis", + "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3-dev" - } - }, "autoload": { - "psr-0": { - "React\\EventLoop": "" + "psr-4": { + "Predis\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Event loop abstraction layer that libraries can use for evented I/O.", + "authors": [ + { + "name": "Daniele Alessandri", + "email": "suppakilla@gmail.com", + "homepage": "http://clorophilla.net" + } + ], + "description": "Flexible and feature-complete Redis client for PHP and HHVM", + "homepage": "http://github.com/nrk/predis", "keywords": [ - "event-loop" + "nosql", + "predis", + "redis" ], - "time": "2016-12-28T22:48:03+00:00" + "time": "2016-06-16T16:22:20+00:00" }, { - "name": "react/socket", - "version": "v0.3.4", - "target-dir": "React/Socket", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "19bc0c4309243717396022ffb2e59be1cc784327" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/19bc0c4309243717396022ffb2e59be1cc784327", - "reference": "19bc0c4309243717396022ffb2e59be1cc784327", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "evenement/evenement": "1.0.*", - "php": ">=5.3.3", - "react/event-loop": "0.3.*", - "react/stream": "0.3.*" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.3-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "React\\Socket": "" + "psr-4": { + "Psr\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Library for building an evented socket server.", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", "keywords": [ - "Socket" + "cache", + "psr", + "psr-6" ], - "time": "2014-02-17T22:32:00+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { - "name": "react/stream", - "version": "v0.3.4", - "target-dir": "React/Stream", + "name": "psr/container", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "feef56628afe3fa861f0da5f92c909e029efceac" + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/feef56628afe3fa861f0da5f92c909e029efceac", - "reference": "feef56628afe3fa861f0da5f92c909e029efceac", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { - "evenement/evenement": "1.0.*", - "php": ">=5.3.3" - }, - "suggest": { - "react/event-loop": "0.3.*", - "react/promise": "~1.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.3-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "React\\Stream": "" + "psr-4": { + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Basic readable and writable stream interfaces that support piping.", + "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": [ - "pipe", - "stream" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], - "time": "2014-02-16T19:48:52+00:00" + "time": "2017-02-14T16:28:37+00:00" }, { - "name": "robloach/component-installer", - "version": "0.2.3", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/RobLoach/component-installer.git", - "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7", - "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0", - "kriswallsmith/assetic": "1.*", - "php": ">=5.3.2" - }, - "require-dev": { - "composer/composer": "1.*@alpha", - "phpunit/phpunit": "4.*" + "php": ">=5.3.0" }, - "type": "composer-plugin", + "type": "library", "extra": { "branch-alias": { "dev-master": "1.0.x-dev" - }, - "class": "ComponentInstaller\\ComponentInstallerPlugin" + } }, "autoload": { - "psr-0": { - "ComponentInstaller": "src/" + "psr-4": { + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6445,39 +6715,48 @@ ], "authors": [ { - "name": "Rob Loach", - "homepage": "http://robloach.net" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Allows installation of Components via Composer.", - "time": "2015-08-10T12:35:38+00:00" + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "seld/cli-prompt", - "version": "1.0.3", + "name": "psr/link", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/cli-prompt.git", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + "url": "https://github.com/php-fig/link.git", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", - "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Seld\\CliPrompt\\": "src/" + "Psr\\Link\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6486,47 +6765,47 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "description": "Common interfaces for HTTP links", "keywords": [ - "cli", - "console", - "hidden", - "input", - "prompt" + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" ], - "time": "2017-03-18T11:32:45+00:00" + "time": "2016-10-28T16:06:13+00:00" }, { - "name": "seld/jsonlint", - "version": "1.6.0", + "name": "psr/log", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "791f8c594f300d246cdf01c6b3e1e19611e301d8" + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/791f8c594f300d246cdf01c6b3e1e19611e301d8", - "reference": "791f8c594f300d246cdf01c6b3e1e19611e301d8", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { - "php": "^5.3 || ^7.0" + "php": ">=5.3.0" }, - "require-dev": { - "phpunit/phpunit": "^4.5" - }, - "bin": [ - "bin/jsonlint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6535,46 +6814,45 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "JSON Linter", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "json", - "linter", - "parser", - "validator" + "log", + "psr", + "psr-3" ], - "time": "2017-03-06T16:42:24+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { - "name": "seld/phar-utils", + "name": "psr/simple-cache", "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=5.3" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Seld\\PharUtils\\": "src/" + "Psr\\SimpleCache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6583,58 +6861,46 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "PHAR file format utilities, for when PHP phars you up", + "description": "Common interfaces for simple caching", "keywords": [ - "phra" + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" ], - "time": "2015-10-13T18:44:15+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { - "name": "sensio/distribution-bundle", - "version": "v4.0.38", - "target-dir": "Sensio/Bundle/DistributionBundle", + "name": "ralouphie/getallheaders", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "95469374e703f01b8e760023ac4f2f64da6a1dd9" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/95469374e703f01b8e760023ac4f2f64da6a1dd9", - "reference": "95469374e703f01b8e760023ac4f2f64da6a1dd9", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", "shasum": "" }, "require": { - "php": ">=5.3.9", - "sensiolabs/security-checker": "~3.0", - "symfony/class-loader": "~2.2", - "symfony/framework-bundle": "~2.3", - "symfony/process": "~2.2" + "php": ">=5.6" }, "require-dev": { - "symfony/form": "~2.2", - "symfony/validator": "~2.2", - "symfony/yaml": "~2.2" - }, - "suggest": { - "symfony/form": "If you want to use the configurator", - "symfony/validator": "If you want to use the configurator", - "symfony/yaml": "If you want to use the configurator" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" }, + "type": "library", "autoload": { - "psr-0": { - "Sensio\\Bundle\\DistributionBundle": "" - } + "files": [ + "src/getallheaders.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6642,54 +6908,71 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Base bundle for Symfony Distributions", - "keywords": [ - "configuration", - "distribution" - ], - "time": "2017-01-04T13:34:44+00:00" + "description": "A polyfill for getallheaders.", + "time": "2019-03-08T08:55:37+00:00" }, { - "name": "sensio/framework-extra-bundle", - "version": "v3.0.12", + "name": "ramsey/uuid", + "version": "3.9.3", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "3e8936fe13aa4086644977d334d8fcd275f50357" + "url": "https://github.com/ramsey/uuid.git", + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357", - "reference": "3e8936fe13aa4086644977d334d8fcd275f50357", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", "shasum": "" }, "require": { - "doctrine/common": "~2.2", - "symfony/framework-bundle": "~2.3|~3.0" + "ext-json": "*", + "paragonie/random_compat": "^1 | ^2 | 9.99.99", + "php": "^5.4 | ^7 | ^8", + "symfony/polyfill-ctype": "^1.8" + }, + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "symfony/expression-language": "~2.4|~3.0", - "symfony/security-bundle": "~2.4|~3.0" + "codeception/aspect-mock": "^1 | ^2", + "doctrine/annotations": "^1.2", + "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", + "jakub-onderka/php-parallel-lint": "^1", + "mockery/mockery": "^0.9.11 | ^1", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock-phpunit": "^0.3 | ^1.1", + "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", + "squizlabs/php_codesniffer": "^3.5" }, "suggest": { - "symfony/expression-language": "", - "symfony/psr-http-message-bridge": "To use the PSR-7 converters", - "symfony/security-bundle": "" + "ext-ctype": "Provides support for PHP Ctype functions", + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "" - } + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6697,97 +6980,98 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + }, + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" } ], - "description": "This bundle provides a way to configure your controllers with annotations", + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", "keywords": [ - "annotations", - "controllers" + "guid", + "identifier", + "uuid" ], - "time": "2015-12-18T17:39:27+00:00" + "time": "2020-02-21T04:36:14+00:00" }, { - "name": "sensiolabs/security-checker", - "version": "v3.0.7", + "name": "react/event-loop", + "version": "v0.4.3", "source": { "type": "git", - "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "59a6a299e2f5612dc8692d40e84373703a5df1b5" + "url": "https://github.com/reactphp/event-loop.git", + "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/59a6a299e2f5612dc8692d40e84373703a5df1b5", - "reference": "59a6a299e2f5612dc8692d40e84373703a5df1b5", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/8bde03488ee897dc6bb3d91e4e17c353f9c5252f", + "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f", "shasum": "" }, "require": { - "symfony/console": "~2.0|~3.0" + "php": ">=5.4.0" }, - "bin": [ - "security-checker" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "require-dev": { + "phpunit/phpunit": "~4.8" }, + "suggest": { + "ext-event": "~1.0", + "ext-libev": "*", + "ext-libevent": ">=0.1.0" + }, + "type": "library", "autoload": { - "psr-0": { - "SensioLabs\\Security": "" + "psr-4": { + "React\\EventLoop\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" - } + "description": "Event loop abstraction layer that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" ], - "description": "A security checker for your composer.lock", - "time": "2017-03-29T09:29:53+00:00" + "time": "2017-04-27T10:56:23+00:00" }, { - "name": "snc/redis-bundle", - "version": "1.1.10", - "target-dir": "Snc/RedisBundle", + "name": "react/promise", + "version": "v2.8.0", "source": { "type": "git", - "url": "https://github.com/snc/SncRedisBundle.git", - "reference": "3b11bdc877f470fa8a1e728ada48c62c0d33e0ed" + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/snc/SncRedisBundle/zipball/3b11bdc877f470fa8a1e728ada48c62c0d33e0ed", - "reference": "3b11bdc877f470fa8a1e728ada48c62c0d33e0ed", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/framework-bundle": "^2.1", - "symfony/yaml": "^2.1" + "php": ">=5.4.0" }, "require-dev": { - "doctrine/cache": "^1.0", - "phpunit/phpunit": "^4.0", - "predis/predis": "^1.0", - "symfony/console": "^2.1" - }, - "suggest": { - "monolog/monolog": "If you want to use the monolog redis handler.", - "predis/predis": "If you want to use predis.", - "symfony/console": "If you want to use commands to interact with the redis database" + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" }, - "type": "symfony-bundle", + "type": "library", "autoload": { - "psr-0": { - "Snc\\RedisBundle": "" - } + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6795,169 +7079,136 @@ ], "authors": [ { - "name": "Henrik Westphal", - "email": "henrik.westphal@gmail.com" - }, - { - "name": "Community contributors", - "homepage": "https://github.com/snc/SncRedisBundle/contributors" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" } ], - "description": "A Redis bundle for Symfony2", - "homepage": "https://github.com/snc/SncRedisBundle", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "nosql", - "redis", - "symfony" + "promise", + "promises" ], - "time": "2016-01-21T18:29:37+00:00" + "time": "2020-05-12T15:16:56+00:00" }, { - "name": "stof/doctrine-extensions-bundle", - "version": "v1.2.2", + "name": "react/socket", + "version": "v0.4.6", "source": { "type": "git", - "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "4e7499d25dc5d0862da09fa8e336164948a29a25" + "url": "https://github.com/reactphp/socket.git", + "reference": "cf074e53c974df52388ebd09710a9018894745d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/4e7499d25dc5d0862da09fa8e336164948a29a25", - "reference": "4e7499d25dc5d0862da09fa8e336164948a29a25", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2", + "reference": "cf074e53c974df52388ebd09710a9018894745d2", "shasum": "" }, "require": { - "gedmo/doctrine-extensions": "^2.3.1", - "php": ">=5.3.2", - "symfony/framework-bundle": "~2.1|~3.0" - }, - "suggest": { - "doctrine/doctrine-bundle": "to use the ORM extensions", - "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions" + "evenement/evenement": "~2.0|~1.0", + "php": ">=5.3.0", + "react/event-loop": "0.4.*|0.3.*", + "react/promise": "^2.0 || ^1.1", + "react/stream": "^0.4.5" }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } + "require-dev": { + "clue/block-react": "^1.1", + "phpunit/phpunit": "~4.8", + "react/socket-client": "^0.5.1" }, + "type": "library", "autoload": { "psr-4": { - "Stof\\DoctrineExtensionsBundle\\": "" + "React\\Socket\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integration of the gedmo/doctrine-extensions with Symfony2", - "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP", "keywords": [ - "behaviors", - "doctrine2", - "extensions", - "gedmo", - "loggable", - "nestedset", - "sluggable", - "sortable", - "timestampable", - "translatable", - "tree" + "Socket" ], - "time": "2016-01-26T23:58:32+00:00" + "time": "2017-01-26T09:23:38+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.6", + "name": "react/stream", + "version": "v0.4.6", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e" + "url": "https://github.com/reactphp/stream.git", + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e", - "reference": "81fdccfaf8bdc5d5d7a1ef6bb3a61bbb1a6c4a3e", + "url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee", "shasum": "" }, "require": { - "php": ">=5.3.3" + "evenement/evenement": "^2.0|^1.0", + "php": ">=5.3.8" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" + "clue/stream-filter": "~1.2", + "react/event-loop": "^0.4|^0.3", + "react/promise": "^2.0|^1.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.4-dev" - } + "suggest": { + "react/event-loop": "^0.4", + "react/promise": "^2.0" }, + "type": "library", "autoload": { - "files": [ - "lib/swift_required.php" - ] + "psr-4": { + "React\\Stream\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "description": "Basic readable and writable stream interfaces that support piping.", "keywords": [ - "email", - "mail", - "mailer" + "pipe", + "stream" ], - "time": "2017-02-13T07:52:53+00:00" + "time": "2017-01-25T14:44:14+00:00" }, { - "name": "sylius/flow-bundle", - "version": "v0.19.0", + "name": "robloach/component-installer", + "version": "0.2.3", "source": { "type": "git", - "url": "https://github.com/Sylius/SyliusFlowBundle.git", - "reference": "aa055fc0dbb2f16487365dde669d1679fb7c7384" + "url": "https://github.com/RobLoach/component-installer.git", + "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Sylius/SyliusFlowBundle/zipball/aa055fc0dbb2f16487365dde669d1679fb7c7384", - "reference": "aa055fc0dbb2f16487365dde669d1679fb7c7384", + "url": "https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7", + "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7", "shasum": "" }, "require": { - "php": "^5.6|^7.0", - "symfony/framework-bundle": "^2.8" + "composer-plugin-api": "^1.0", + "kriswallsmith/assetic": "1.*", + "php": ">=5.3.2" }, "require-dev": { - "phpspec/phpspec": "^2.4", - "symfony/yaml": "~2.1" + "composer/composer": "1.*@alpha", + "phpunit/phpunit": "4.*" }, - "type": "symfony-bundle", + "type": "composer-plugin", "extra": { "branch-alias": { - "dev-master": "0.19-dev" - } + "dev-master": "1.0.x-dev" + }, + "class": "ComponentInstaller\\ComponentInstallerPlugin" }, "autoload": { - "psr-4": { - "Sylius\\Bundle\\FlowBundle\\": "" + "psr-0": { + "ComponentInstaller": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6966,76 +7217,43 @@ ], "authors": [ { - "name": "Sylius project", - "homepage": "http://sylius.org" - }, - { - "name": "Community contributions", - "homepage": "http://github.com/Sylius/Sylius/contributors" - }, - { - "name": "Paweł Jędrzejewski", - "homepage": "http://pjedrzejewski.com" + "name": "Rob Loach", + "homepage": "http://robloach.net" } ], - "description": "Multiple action setups for Symfony2, build your checkouts/installers or whatever needs more than one step to complete.", - "homepage": "http://sylius.org", - "keywords": [ - "checkout", - "flow", - "installation", - "steps" - ], - "time": "2016-05-24T12:26:59+00:00" + "description": "Allows installation of Components via Composer.", + "abandoned": "oomphinc/composer-installers-extender", + "time": "2015-08-10T12:35:38+00:00" }, { - "name": "symfony/assetic-bundle", - "version": "v2.8.1", + "name": "seld/cli-prompt", + "version": "1.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/assetic-bundle.git", - "reference": "0241b135ff64c6031048c6425cd833a8300da46b" + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/assetic-bundle/zipball/0241b135ff64c6031048c6425cd833a8300da46b", - "reference": "0241b135ff64c6031048c6425cd833a8300da46b", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/b8dfcf02094b8c03b40322c229493bb2884423c5", + "reference": "b8dfcf02094b8c03b40322c229493bb2884423c5", "shasum": "" }, "require": { - "kriswallsmith/assetic": "~1.4", - "php": ">=5.3.0", - "symfony/console": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" - }, - "conflict": { - "kriswallsmith/spork": "<=0.2", - "twig/twig": "<1.27" + "php": ">=5.3" }, "require-dev": { - "kriswallsmith/spork": "~0.3", - "patchwork/jsqueeze": "~1.0", - "symfony/class-loader": "~2.3|~3.0", - "symfony/css-selector": "~2.3|~3.0", - "symfony/dom-crawler": "~2.3|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/twig-bundle": "~2.3|~3.0" + "phpstan/phpstan": "^0.12.63" }, - "suggest": { - "kriswallsmith/spork": "to be able to dump assets in parallel", - "symfony/twig-bundle": "to use the Twig integration" - }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\AsseticBundle\\": "" + "Seld\\CliPrompt\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7044,56 +7262,47 @@ ], "authors": [ { - "name": "Kris Wallsmith", - "email": "kris.wallsmith@gmail.com", - "homepage": "http://kriswallsmith.net/" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Integrates Assetic into Symfony2", - "homepage": "https://github.com/symfony/AsseticBundle", + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", "keywords": [ - "assets", - "compression", - "minification" + "cli", + "console", + "hidden", + "input", + "prompt" ], - "time": "2016-11-22T11:42:57+00:00" + "time": "2020-12-15T21:32:01+00:00" }, { - "name": "symfony/monolog-bundle", - "version": "v3.0.3", + "name": "seld/jsonlint", + "version": "1.8.3", "source": { "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "ebce76a39a65495a66c34eb1574cc4b9e35a4e64" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/ebce76a39a65495a66c34eb1574cc4b9e35a4e64", - "reference": "ebce76a39a65495a66c34eb1574cc4b9e35a4e64", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", "shasum": "" }, "require": { - "monolog/monolog": "~1.22", - "php": ">=5.3.2", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0", - "symfony/monolog-bridge": "~2.7|~3.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "symfony/console": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" + "Seld\\JsonLint\\": "src/Seld/JsonLint/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7102,49 +7311,47 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Symfony MonologBundle", - "homepage": "http://symfony.com", + "description": "JSON Linter", "keywords": [ - "log", - "logging" + "json", + "linter", + "parser", + "validator" ], - "time": "2017-01-10T20:01:51+00:00" + "time": "2020-11-11T09:19:24+00:00" }, { - "name": "symfony/polyfill-apcu", - "version": "v1.3.0", + "name": "seld/phar-utils", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "5d4474f447403c3348e37b70acc2b95475b7befa" + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/5d4474f447403c3348e37b70acc2b95475b7befa", - "reference": "5d4474f447403c3348e37b70acc2b95475b7befa", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ] + "psr-4": { + "Seld\\PharUtils\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7152,56 +7359,50 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", - "homepage": "https://symfony.com", + "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" + "phar" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2020-07-07T18:42:57+00:00" }, { - "name": "symfony/polyfill-intl-icu", - "version": "v1.3.0", + "name": "sensio/distribution-bundle", + "version": "v5.0.25", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4" + "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", + "reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2d6e2b20d457603eefb6e614286c22efca30fdb4", - "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/80a38234bde8321fb92aa0b8c27978a272bb4baf", + "reference": "80a38234bde8321fb92aa0b8c27978a272bb4baf", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=5.3.9", + "sensiolabs/security-checker": "~5.0|~6.0", + "symfony/class-loader": "~2.3|~3.0", + "symfony/config": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/filesystem": "~2.3|~3.0", + "symfony/http-kernel": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ] + "psr-4": { + "Sensio\\Bundle\\DistributionBundle\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7209,59 +7410,55 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony polyfill for intl's ICU-related data and classes", - "homepage": "https://symfony.com", + "description": "Base bundle for Symfony Distributions", "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" + "configuration", + "distribution" ], - "time": "2016-11-14T01:06:16+00:00" + "abandoned": true, + "time": "2019-06-18T15:43:58+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.3.0", + "name": "sensio/framework-extra-bundle", + "version": "v3.0.12", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357", "shasum": "" }, "require": { - "php": ">=5.3.3" + "doctrine/common": "~2.2", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0", + "symfony/security-bundle": "~2.4|~3.0" }, "suggest": { - "ext-mbstring": "For best performance" + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7269,58 +7466,51 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "This bundle provides a way to configure your controllers with annotations", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "annotations", + "controllers" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2015-12-18T17:39:27+00:00" }, { - "name": "symfony/polyfill-php54", - "version": "v1.3.0", + "name": "sensiolabs/security-checker", + "version": "v6.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0" + "url": "https://github.com/sensiolabs/security-checker.git", + "reference": "a576c01520d9761901f269c4934ba55448be4a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/90e085822963fdcc9d1c5b73deb3d2e5783b16a0", - "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54", + "reference": "a576c01520d9761901f269c4934ba55448be4a54", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1.3", + "symfony/console": "^2.8|^3.4|^4.2|^5.0", + "symfony/http-client": "^4.3|^5.0", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-ctype": "^1.11" }, + "bin": [ + "security-checker" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "6.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php54\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "SensioLabs\\Security\\": "SensioLabs/Security" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7328,54 +7518,175 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" } ], - "description": "Symfony polyfill backporting some PHP 5.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14T01:06:16+00:00" + "description": "A security checker for your composer.lock", + "abandoned": "https://github.com/fabpot/local-php-security-checker", + "time": "2019-11-01T13:20:14+00:00" }, { - "name": "symfony/polyfill-php55", - "version": "v1.3.0", + "name": "snc/redis-bundle", + "version": "2.1.13", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php55.git", - "reference": "03e3f0350bca2220e3623a0e340eef194405fc67" + "url": "https://github.com/snc/SncRedisBundle.git", + "reference": "7c8652c1811c573ae567c1bcaa5e1c65723c5907" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/03e3f0350bca2220e3623a0e340eef194405fc67", - "reference": "03e3f0350bca2220e3623a0e340eef194405fc67", + "url": "https://api.github.com/repos/snc/SncRedisBundle/zipball/7c8652c1811c573ae567c1bcaa5e1c65723c5907", + "reference": "7c8652c1811c573ae567c1bcaa5e1c65723c5907", "shasum": "" }, "require": { - "ircmaxell/password-compat": "~1.0", - "php": ">=5.3.3" + "php": "^5.3.3 || ^7.0", + "symfony/framework-bundle": "^2.7 || ^3.0 || ^4.0", + "symfony/yaml": "^2.7 || ^3.0 || ^4.0" }, - "type": "library", + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "predis/predis": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/phpunit-bridge": "^2.7 || ^3.0 || ^4.0" + }, + "suggest": { + "monolog/monolog": "If you want to use the monolog redis handler.", + "predis/predis": "If you want to use predis.", + "symfony/console": "If you want to use commands to interact with the redis database", + "symfony/proxy-manager-bridge": "If you want to lazy-load some services" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php55\\": "" + "Snc\\RedisBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Henrik Westphal", + "email": "henrik.westphal@gmail.com" }, + { + "name": "Community contributors", + "homepage": "https://github.com/snc/SncRedisBundle/contributors" + } + ], + "description": "A Redis bundle for Symfony", + "homepage": "https://github.com/snc/SncRedisBundle", + "keywords": [ + "nosql", + "redis", + "symfony" + ], + "time": "2019-12-09T12:56:15+00:00" + }, + { + "name": "stof/doctrine-extensions-bundle", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", + "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/46db71ec7ffee9122eca3cdddd4ef8d84bae269c", + "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c", + "shasum": "" + }, + "require": { + "gedmo/doctrine-extensions": "^2.3.4", + "php": ">=5.3.2", + "symfony/framework-bundle": "~2.7|~3.2|~4.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.0", + "symfony/security-bundle": "^2.7 || ^3.2 || ^4.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "to use the ORM extensions", + "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Stof\\DoctrineExtensionsBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integration of the gedmo/doctrine-extensions with Symfony2", + "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", + "keywords": [ + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree" + ], + "time": "2017-12-24T16:06:50+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.12", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { "files": [ - "bootstrap.php" + "lib/swift_required.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7384,54 +7695,52 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Chris Corbyn" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony polyfill backporting some PHP 5.5+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "email", + "mail", + "mailer" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.3.0", + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/1dd42b9b89556f18092f3d1ada22cb05ac85383c", - "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, "files": [ - "bootstrap.php" + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7448,49 +7757,52 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2020-09-07T11:33:47+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.3.0", + "name": "symfony/http-client", + "version": "v4.3.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2" + "url": "https://github.com/symfony/http-client.git", + "reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", - "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", + "url": "https://api.github.com/repos/symfony/http-client/zipball/ae3a9cd491f1aadb5583f34a6bda5cca34081ce8", + "reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" + "php": "^7.1.3", + "psr/log": "^1.0", + "symfony/http-client-contracts": "^1.1.7", + "symfony/polyfill-php73": "^1.11" + }, + "provide": { + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "1.1" + }, + "require-dev": { + "nyholm/psr7": "^1.0", + "psr/http-client": "^1.0", + "symfony/http-kernel": "^4.3", + "symfony/process": "^4.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Component\\HttpClient\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7507,42 +7819,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony HttpClient component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2019-11-08T08:23:45+00:00" }, { - "name": "symfony/polyfill-util", - "version": "v1.3.0", + "name": "symfony/http-client-contracts", + "version": "v1.1.10", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "7e86f903f9720d0caa7688f5c29a2de2d77cbb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/746bce0fca664ac0a575e465f65c6643faddf7fb", - "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e86f903f9720d0caa7688f5c29a2de2d77cbb89", + "reference": "7e86f903f9720d0caa7688f5c29a2de2d77cbb89", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1.3" + }, + "suggest": { + "symfony/http-client-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.1-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Util\\": "" + "Symfony\\Contracts\\HttpClient\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -7559,54 +7872,56 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "Generic abstractions related to HTTP clients", "homepage": "https://symfony.com", "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2020-08-17T09:35:39+00:00" }, { - "name": "symfony/security-acl", - "version": "v3.0.0", + "name": "symfony/mime", + "version": "v5.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/security-acl.git", - "reference": "053b49bf4aa333a392c83296855989bcf88ddad1" + "url": "https://github.com/symfony/mime.git", + "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-acl/zipball/053b49bf4aa333a392c83296855989bcf88ddad1", - "reference": "053b49bf4aa333a392c83296855989bcf88ddad1", + "url": "https://api.github.com/repos/symfony/mime/zipball/7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", + "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/security-core": "~2.8|~3.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" }, - "require-dev": { - "doctrine/common": "~2.2", - "doctrine/dbal": "~2.2", - "psr/log": "~1.0", - "symfony/phpunit-bridge": "~2.8|~3.0" + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4" }, - "suggest": { - "doctrine/dbal": "For using the built-in ACL implementation", - "symfony/class-loader": "For using the ACL generateSql script", - "symfony/finder": "For using the ACL generateSql script" + "require-dev": { + "egulias/email-validator": "^2.1.10", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.1", + "symfony/property-info": "^4.4|^5.1", + "symfony/serializer": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { "psr-4": { - "Symfony\\Component\\Security\\Acl\\": "" + "Symfony\\Component\\Mime\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -7626,50 +7941,54 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Security Component - ACL (Access Control List)", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", - "time": "2015-12-28T09:39:46+00:00" + "keywords": [ + "mime", + "mime-type" + ], + "time": "2021-02-02T06:10:15+00:00" }, { - "name": "symfony/swiftmailer-bundle", - "version": "v2.4.2", + "name": "symfony/monolog-bundle", + "version": "v3.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/swiftmailer-bundle.git", - "reference": "ad751095576ce0c12a284e30e3fff80c91f27225" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/ad751095576ce0c12a284e30e3fff80c91f27225", - "reference": "ad751095576ce0c12a284e30e3fff80c91f27225", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff", "shasum": "" }, "require": { - "php": ">=5.3.2", - "swiftmailer/swiftmailer": ">=4.2.0,~5.0", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0" + "monolog/monolog": "~1.22", + "php": ">=5.6", + "symfony/config": "~2.7|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", + "symfony/http-kernel": "~2.7|~3.3|~4.0", + "symfony/monolog-bridge": "~2.7|~3.3|~4.0" }, "require-dev": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/phpunit-bridge": "~2.7|~3.0", - "symfony/yaml": "~2.7|~3.0" - }, - "suggest": { - "psr/log": "Allows logging" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\SwiftmailerBundle\\": "" - } + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7685,122 +8004,178 @@ "email": "fabien@symfony.com" } ], - "description": "Symfony SwiftmailerBundle", + "description": "Symfony MonologBundle", "homepage": "http://symfony.com", - "time": "2016-12-20T04:44:33+00:00" + "keywords": [ + "log", + "logging" + ], + "time": "2018-11-04T09:58:13+00:00" }, { - "name": "symfony/symfony", - "version": "v2.8.13", + "name": "symfony/polyfill-apcu", + "version": "v1.22.0", "source": { "type": "git", - "url": "https://github.com/symfony/symfony.git", - "reference": "d04e2eb13ae63068fc8862530b403756e3702896" + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/d04e2eb13ae63068fc8862530b403756e3702896", - "reference": "d04e2eb13ae63068fc8862530b403756e3702896", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/3b3944f40987b9d3f9b9147f86c32df87d9f3505", + "reference": "3b3944f40987b9d3f9b9147f86c32df87d9f3505", "shasum": "" }, "require": { - "doctrine/common": "~2.4", - "php": ">=5.3.9", - "psr/log": "~1.0", - "symfony/polyfill-apcu": "~1.1", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php54": "~1.0", - "symfony/polyfill-php55": "~1.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.0", - "symfony/polyfill-util": "~1.0", - "symfony/security-acl": "~2.7|~3.0.0", - "twig/twig": "~1.27|~2.0" + "php": ">=7.1" }, - "conflict": { - "phpdocumentor/reflection": "<1.0.7" + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, - "replace": { - "symfony/asset": "self.version", - "symfony/browser-kit": "self.version", - "symfony/class-loader": "self.version", - "symfony/config": "self.version", - "symfony/console": "self.version", - "symfony/css-selector": "self.version", - "symfony/debug": "self.version", - "symfony/debug-bundle": "self.version", - "symfony/dependency-injection": "self.version", - "symfony/doctrine-bridge": "self.version", - "symfony/dom-crawler": "self.version", - "symfony/event-dispatcher": "self.version", - "symfony/expression-language": "self.version", - "symfony/filesystem": "self.version", - "symfony/finder": "self.version", - "symfony/form": "self.version", - "symfony/framework-bundle": "self.version", - "symfony/http-foundation": "self.version", - "symfony/http-kernel": "self.version", - "symfony/intl": "self.version", - "symfony/ldap": "self.version", - "symfony/locale": "self.version", - "symfony/monolog-bridge": "self.version", - "symfony/options-resolver": "self.version", - "symfony/process": "self.version", - "symfony/property-access": "self.version", - "symfony/property-info": "self.version", - "symfony/proxy-manager-bridge": "self.version", - "symfony/routing": "self.version", - "symfony/security": "self.version", - "symfony/security-bundle": "self.version", - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version", - "symfony/serializer": "self.version", - "symfony/stopwatch": "self.version", - "symfony/swiftmailer-bridge": "self.version", - "symfony/templating": "self.version", - "symfony/translation": "self.version", - "symfony/twig-bridge": "self.version", - "symfony/twig-bundle": "self.version", - "symfony/validator": "self.version", - "symfony/var-dumper": "self.version", - "symfony/web-profiler-bundle": "self.version", - "symfony/yaml": "self.version" + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Apcu\\": "" + }, + "files": [ + "bootstrap.php" + ] }, - "require-dev": { - "doctrine/data-fixtures": "1.0.*", - "doctrine/dbal": "~2.4", - "doctrine/doctrine-bundle": "~1.2", - "doctrine/orm": "~2.4,>=2.4.5", - "egulias/email-validator": "~1.2,>=1.2.1", - "monolog/monolog": "~1.11", - "ocramius/proxy-manager": "~0.4|~1.0|~2.0", - "phpdocumentor/reflection": "^1.0.7", - "symfony/phpunit-bridge": "~3.2" + "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 apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", - "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", - "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", - "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/", - "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", - "Symfony\\Bundle\\": "src/Symfony/Bundle/", - "Symfony\\Component\\": "src/Symfony/Component/" + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b2b1e732a6c039f1a3ea3414b3379a2433e183d6", + "reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance and support of other locales than \"en\"" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" }, "classmap": [ - "src/Symfony/Component/Intl/Resources/stubs" + "Resources/stubs" ], "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -7809,1140 +8184,3547 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "The Symfony PHP framework", + "description": "Symfony polyfill for intl's ICU-related data and classes", "homepage": "https://symfony.com", "keywords": [ - "framework" + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2016-10-27T02:18:45+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "tinymce/tinymce", - "version": "4.1.10", + "name": "symfony/polyfill-intl-idn", + "version": "v1.22.0", "source": { "type": "git", - "url": "https://github.com/tinymce/tinymce-dist.git", - "reference": "503d6fe1e69bd9830d39689b6e32a6c7ebffb861" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/503d6fe1e69bd9830d39689b6e32a6c7ebffb861", - "reference": "503d6fe1e69bd9830d39689b6e32a6c7ebffb861", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", + "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", "shasum": "" }, - "type": "component", + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", "extra": { - "component": { - "scripts": [ - "tinymce.js", - "plugins/*/plugin.js", - "themes/*/theme.js" - ], - "files": [ - "tinymce.min.js", - "plugins/*/plugin.min.js", - "themes/*/theme.min.js", - "skins/**" - ] + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-2.1" + "MIT" ], - "description": "Web based JavaScript HTML WYSIWYG editor control.", - "homepage": "http://www.tinymce.com", + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", "keywords": [ - "editor", - "html", - "javascript", - "richtext", - "tinymce", - "wysiwyg" + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "6e971c891537eb617a00bb07a43d182a6915faba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba", + "reference": "6e971c891537eb617a00bb07a43d182a6915faba", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "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 for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "time": "2021-01-07T17:09:11+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "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": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "metapackage", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "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": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "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": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "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.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.22.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2021-01-07T16:49:33+00:00" + }, + { + "name": "symfony/security-acl", + "version": "v3.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-acl.git", + "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/dc8f10b3bda34e9ddcad49edc7accf61f31fce43", + "reference": "dc8f10b3bda34e9ddcad49edc7accf61f31fce43", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/security-core": "^2.8|^3.0|^4.0|^5.0" + }, + "require-dev": { + "doctrine/common": "~2.2", + "doctrine/dbal": "~2.2", + "psr/log": "~1.0", + "symfony/phpunit-bridge": "^2.8|^3.0|^4.0|^5.0" + }, + "suggest": { + "doctrine/dbal": "For using the built-in ACL implementation", + "symfony/class-loader": "For using the ACL generateSql script", + "symfony/finder": "For using the ACL generateSql script" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Acl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - ACL (Access Control List)", + "homepage": "https://symfony.com", + "time": "2019-12-12T09:55:57+00:00" + }, + { + "name": "symfony/swiftmailer-bundle", + "version": "v2.6.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "c4808f5169efc05567be983909d00f00521c53ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec", + "reference": "c4808f5169efc05567be983909d00f00521c53ec", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "swiftmailer/swiftmailer": "~4.2|~5.0", + "symfony/config": "~2.7|~3.0", + "symfony/dependency-injection": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0" + }, + "require-dev": { + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/phpunit-bridge": "~3.3@dev", + "symfony/yaml": "~2.7|~3.0" + }, + "suggest": { + "psr/log": "Allows logging" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony SwiftmailerBundle", + "homepage": "http://symfony.com", + "time": "2017-10-19T01:06:41+00:00" + }, + { + "name": "symfony/symfony", + "version": "v3.4.36", + "source": { + "type": "git", + "url": "https://github.com/symfony/symfony.git", + "reference": "0a6fccb5772ad2467253e6849d589bd09d9eb195" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/symfony/zipball/0a6fccb5772ad2467253e6849d589bd09d9eb195", + "reference": "0a6fccb5772ad2467253e6849d589bd09d9eb195", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "ext-xml": "*", + "fig/link-util": "^1.0", + "php": "^5.5.9|>=7.0.8", + "psr/cache": "~1.0", + "psr/container": "^1.0", + "psr/link": "^1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-apcu": "~1.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.6", + "twig/twig": "^1.41|^2.10" + }, + "conflict": { + "monolog/monolog": ">=2", + "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/container-implementation": "1.0", + "psr/log-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "symfony/asset": "self.version", + "symfony/browser-kit": "self.version", + "symfony/cache": "self.version", + "symfony/class-loader": "self.version", + "symfony/config": "self.version", + "symfony/console": "self.version", + "symfony/css-selector": "self.version", + "symfony/debug": "self.version", + "symfony/debug-bundle": "self.version", + "symfony/dependency-injection": "self.version", + "symfony/doctrine-bridge": "self.version", + "symfony/dom-crawler": "self.version", + "symfony/dotenv": "self.version", + "symfony/event-dispatcher": "self.version", + "symfony/expression-language": "self.version", + "symfony/filesystem": "self.version", + "symfony/finder": "self.version", + "symfony/form": "self.version", + "symfony/framework-bundle": "self.version", + "symfony/http-foundation": "self.version", + "symfony/http-kernel": "self.version", + "symfony/inflector": "self.version", + "symfony/intl": "self.version", + "symfony/ldap": "self.version", + "symfony/lock": "self.version", + "symfony/monolog-bridge": "self.version", + "symfony/options-resolver": "self.version", + "symfony/process": "self.version", + "symfony/property-access": "self.version", + "symfony/property-info": "self.version", + "symfony/proxy-manager-bridge": "self.version", + "symfony/routing": "self.version", + "symfony/security": "self.version", + "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version", + "symfony/serializer": "self.version", + "symfony/stopwatch": "self.version", + "symfony/templating": "self.version", + "symfony/translation": "self.version", + "symfony/twig-bridge": "self.version", + "symfony/twig-bundle": "self.version", + "symfony/validator": "self.version", + "symfony/var-dumper": "self.version", + "symfony/web-link": "self.version", + "symfony/web-profiler-bundle": "self.version", + "symfony/web-server-bundle": "self.version", + "symfony/workflow": "self.version", + "symfony/yaml": "self.version" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.6", + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/doctrine-bundle": "~1.4", + "doctrine/orm": "~2.4,>=2.4.5", + "egulias/email-validator": "~1.2,>=1.2.8|~2.0", + "monolog/monolog": "~1.11", + "ocramius/proxy-manager": "~0.4|~1.0|~2.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "predis/predis": "~1.0", + "symfony/phpunit-bridge": "^3.4.31|^4.3.4|~5.0", + "symfony/security-acl": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", + "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", + "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", + "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", + "Symfony\\Bundle\\": "src/Symfony/Bundle/", + "Symfony\\Component\\": "src/Symfony/Component/" + }, + "classmap": [ + "src/Symfony/Component/Intl/Resources/stubs" + ], + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "The Symfony PHP framework", + "homepage": "https://symfony.com", + "keywords": [ + "framework" + ], + "time": "2019-12-01T13:50:53+00:00" + }, + { + "name": "tinymce/tinymce", + "version": "4.6.7", + "source": { + "type": "git", + "url": "https://github.com/tinymce/tinymce-dist.git", + "reference": "9f9cf10d009892009a296dff48970b079ec78c7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/9f9cf10d009892009a296dff48970b079ec78c7a", + "reference": "9f9cf10d009892009a296dff48970b079ec78c7a", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "tinymce.js", + "plugins/*/plugin.js", + "themes/*/theme.js" + ], + "files": [ + "tinymce.min.js", + "plugins/*/plugin.min.js", + "themes/*/theme.min.js", + "skins/**" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "description": "Web based JavaScript HTML WYSIWYG editor control.", + "homepage": "http://www.tinymce.com", + "keywords": [ + "editor", + "html", + "javascript", + "richtext", + "tinymce", + "wysiwyg" + ], + "time": "2017-09-18T11:31:55+00:00" + }, + { + "name": "true/punycode", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/true/php-punycode.git", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.7", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TrueBV\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Renan Gonçalves", + "email": "renan.saddam@gmail.com" + } + ], + "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", + "homepage": "https://github.com/true/php-punycode", + "keywords": [ + "idna", + "punycode" + ], + "time": "2016-11-16T10:37:54+00:00" + }, + { + "name": "twig/extensions", + "version": "v1.5.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", + "shasum": "" + }, + "require": { + "twig/twig": "^1.27|^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.4", + "symfony/translation": "^2.7|^3.4" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_Extensions_": "lib/" + }, + "psr-4": { + "Twig\\Extensions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Common additional features for Twig that do not directly belong in core", + "keywords": [ + "i18n", + "text" + ], + "abandoned": true, + "time": "2018-12-05T18:34:18+00:00" + }, + { + "name": "twig/twig", + "version": "v1.41.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "575cd5028362da591facde1ef5d7b94553c375c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/575cd5028362da591facde1ef5d7b94553c375c9", + "reference": "575cd5028362da591facde1ef5d7b94553c375c9", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.41-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-05-14T11:59:08+00:00" + }, + { + "name": "ua-parser/uap-php", + "version": "v3.9.14", + "source": { + "type": "git", + "url": "https://github.com/ua-parser/uap-php.git", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "reference": "b796c5ea5df588e65aeb4e2c6cce3811dec4fed6", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.1", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.33", + "phpunit/phpunit": "^8 || ^9", + "symfony/console": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/filesystem": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/finder": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "symfony/yaml": "^3.4 || ^4.2 || ^4.3 || ^5.0", + "vimeo/psalm": "^3.12" + }, + "suggest": { + "symfony/console": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/filesystem": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/finder": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0", + "symfony/yaml": "Required for CLI usage - ^3.4 || ^4.3 || ^5.0" + }, + "bin": [ + "bin/uaparser" + ], + "type": "library", + "autoload": { + "psr-4": { + "UAParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dave Olsen", + "email": "dmolsen@gmail.com" + }, + { + "name": "Lars Strojny", + "email": "lars@strojny.net" + } + ], + "description": "A multi-language port of Browserscope's user agent parser.", + "time": "2020-10-02T23:36:20+00:00" + }, + { + "name": "vakata/jstree", + "version": "3.3.11", + "source": { + "type": "git", + "url": "https://github.com/vakata/jstree.git", + "reference": "4a77e59a3f67b0beb1b576cc211cb7e7a76a9879" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vakata/jstree/zipball/4a77e59a3f67b0beb1b576cc211cb7e7a76a9879", + "reference": "4a77e59a3f67b0beb1b576cc211cb7e7a76a9879", + "shasum": "" + }, + "require": { + "components/jquery": ">=1.9.1" + }, + "suggest": { + "robloach/component-installer": "Allows installation of Components via Composer" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "dist/jstree.js" + ], + "styles": [ + "dist/themes/default/style.css" + ], + "images": [ + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ], + "files": [ + "dist/jstree.min.js", + "dist/themes/default/style.min.css", + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Bozhanov", + "email": "jstree@jstree.com" + } + ], + "description": "jsTree is jquery plugin, that provides interactive trees.", + "homepage": "http://jstree.com", + "time": "2020-12-18T20:56:30+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", + "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^7.5.13" + }, + "type": "library", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2020-07-08T17:02:28+00:00" + }, + { + "name": "willdurand/jsonp-callback-validator", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/JsonpCallbackValidator.git", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonpCallbackValidator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" + } + ], + "description": "JSONP callback validator.", + "time": "2014-01-20T22:35:06+00:00" + }, + { + "name": "willdurand/negotiation", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William DURAND", + "email": "william.durand1@gmail.com" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "time": "2015-10-01T07:42:40+00:00" + }, + { + "name": "zendframework/zend-code", + "version": "3.4.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-code.git", + "reference": "268040548f92c2bfcba164421c1add2ba43abaaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/268040548f92c2bfcba164421c1add2ba43abaaa", + "reference": "268040548f92c2bfcba164421c1add2ba43abaaa", + "shasum": "" + }, + "require": { + "php": "^7.1", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" + }, + "conflict": { + "phpspec/prophecy": "<1.9.0" + }, + "require-dev": { + "doctrine/annotations": "^1.7", + "ext-phar": "*", + "phpunit/phpunit": "^7.5.16 || ^8.4", + "zendframework/zend-coding-standard": "^1.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev", + "dev-develop": "3.5.x-dev", + "dev-dev-4.0": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "keywords": [ + "ZendFramework", + "code", + "zf" + ], + "abandoned": "laminas/laminas-code", + "time": "2019-12-10T19:21:15+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "abandoned": "laminas/laminas-eventmanager", + "time": "2018-04-25T15:33:34+00:00" + }, + { + "name": "zendframework/zend-loader", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-loader.git", + "reference": "91da574d29b58547385b2298c020b257310898c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/91da574d29b58547385b2298c020b257310898c6", + "reference": "91da574d29b58547385b2298c020b257310898c6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Loader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Autoloading and plugin loading strategies", + "keywords": [ + "ZendFramework", + "loader", + "zf" + ], + "abandoned": "laminas/laminas-loader", + "time": "2019-09-04T19:38:14+00:00" + }, + { + "name": "zendframework/zend-mail", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mail.git", + "reference": "d7beb63d5f7144a21ac100072c453e63860cdab8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mail/zipball/d7beb63d5f7144a21ac100072c453e63860cdab8", + "reference": "d7beb63d5f7144a21ac100072c453e63860cdab8", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^5.6 || ^7.0", + "true/punycode": "^2.1", + "zendframework/zend-loader": "^2.5", + "zendframework/zend-mime": "^2.5", + "zendframework/zend-stdlib": "^2.7 || ^3.0", + "zendframework/zend-validator": "^2.10.2" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.25 || ^6.4.4 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-crypt": "^2.6 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1" + }, + "suggest": { + "zendframework/zend-crypt": "Crammd5 support in SMTP Auth", + "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\Mail", + "config-provider": "Zend\\Mail\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Provides generalized functionality to compose and send both text and MIME-compliant multipart e-mail messages", + "keywords": [ + "ZendFramework", + "mail", + "zf" + ], + "abandoned": "laminas/laminas-mail", + "time": "2018-06-07T13:37:07+00:00" + }, + { + "name": "zendframework/zend-mime", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mime.git", + "reference": "c91e0350be53cc9d29be15563445eec3b269d7c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/c91e0350be53cc9d29be15563445eec3b269d7c1", + "reference": "c91e0350be53cc9d29be15563445eec3b269d7c1", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.21 || ^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-mail": "^2.6" + }, + "suggest": { + "zendframework/zend-mail": "Zend\\Mail component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Create and parse MIME messages and parts", + "keywords": [ + "ZendFramework", + "mime", + "zf" + ], + "abandoned": "laminas/laminas-mime", + "time": "2019-10-16T19:30:37+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "66536006722aff9e62d1b331025089b7ec71c065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "keywords": [ + "ZendFramework", + "stdlib", + "zf" + ], + "abandoned": "laminas/laminas-stdlib", + "time": "2018-08-28T21:34:05+00:00" + }, + { + "name": "zendframework/zend-validator", + "version": "2.13.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-validator.git", + "reference": "b54acef1f407741c5347f2a97f899ab21f2229ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/b54acef1f407741c5347f2a97f899ab21f2229ef", + "reference": "b54acef1f407741c5347f2a97f899ab21f2229ef", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "php": "^7.1", + "zendframework/zend-stdlib": "^3.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-db": "^2.7", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-http": "^2.5.4", + "zendframework/zend-i18n": "^2.6", + "zendframework/zend-math": "^2.6", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-session": "^2.8", + "zendframework/zend-uri": "^2.5" + }, + "suggest": { + "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators", + "zendframework/zend-db": "Zend\\Db component, required by the (No)RecordExists validator", + "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", + "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages", + "zendframework/zend-i18n-resources": "Translations of validator messages", + "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", + "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", + "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.13.x-dev", + "dev-develop": "2.14.x-dev" + }, + "zf": { + "component": "Zend\\Validator", + "config-provider": "Zend\\Validator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Validator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria", + "keywords": [ + "ZendFramework", + "validator", + "zf" + ], + "abandoned": "laminas/laminas-validator", + "time": "2019-12-28T04:07:18+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/behat", + "version": "v3.4.3", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/d60b161bff1b95ec4bb80bb8cb210ccf890314c2", + "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.5.1", + "behat/transliterator": "^1.2", + "container-interop/container-interop": "^1.2", + "ext-mbstring": "*", + "php": ">=5.3.3", + "psr/container": "^1.0", + "symfony/class-loader": "~2.1||~3.0||~4.0", + "symfony/config": "~2.3||~3.0||~4.0", + "symfony/console": "~2.5||~3.0||~4.0", + "symfony/dependency-injection": "~2.1||~3.0||~4.0", + "symfony/event-dispatcher": "~2.1||~3.0||~4.0", + "symfony/translation": "~2.3||~3.0||~4.0", + "symfony/yaml": "~2.1||~3.0||~4.0" + }, + "require-dev": { + "herrera-io/box": "~1.6.1", + "phpunit/phpunit": "^4.8.36|^6.3", + "symfony/process": "~2.5|~3.0|~4.0" + }, + "suggest": { + "behat/mink-extension": "for integration with Mink testing framework", + "behat/symfony2-extension": "for integration with Symfony2 web framework", + "behat/yii-extension": "for integration with Yii web framework" + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Behat": "src/", + "Behat\\Testwork": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "Agile", + "BDD", + "ScenarioBDD", + "Scrum", + "StoryBDD", + "User story", + "business", + "development", + "documentation", + "examples", + "symfony", + "testing" + ], + "time": "2017-11-27T10:37:56+00:00" + }, + { + "name": "behat/gherkin", + "version": "v4.8.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd", + "shasum": "" + }, + "require": { + "php": "~7.2|~8.0" + }, + "require-dev": { + "cucumber/cucumber": "dev-gherkin-16.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/phpunit-bridge": "~3|~4|~5", + "symfony/yaml": "~3|~4|~5" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "time": "2021-02-04T12:44:21+00:00" + }, + { + "name": "behat/mink", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/Mink.git", + "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887", + "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20", + "symfony/debug": "^2.7|^3.0|^4.0", + "symfony/phpunit-bridge": "^3.4.38 || ^5.0.5" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", + "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Browser controller/emulator abstraction for PHP", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "time": "2020-03-11T15:45:53+00:00" + }, + { + "name": "behat/mink-extension", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "80f7849ba53867181b7e412df9210e12fba50177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", + "reference": "80f7849ba53867181b7e412df9210e12fba50177", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.5", + "behat/mink": "^1.5", + "php": ">=5.3.2", + "symfony/config": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "^1.1", + "phpspec/phpspec": "^2.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "time": "2018-02-06T15:36:30+00:00" + }, + { + "name": "behat/mink-selenium2-driver", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkSelenium2Driver.git", + "reference": "312a967dd527f28980cce40850339cd5316da092" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/312a967dd527f28980cce40850339cd5316da092", + "reference": "312a967dd527f28980cce40850339cd5316da092", + "shasum": "" + }, + "require": { + "behat/mink": "~1.7@dev", + "instaclick/php-webdriver": "~1.1", + "php": ">=5.4" + }, + "require-dev": { + "mink/driver-testsuite": "dev-master" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pete Otaqui", + "email": "pete@otaqui.com", + "homepage": "https://github.com/pete-otaqui" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Selenium2 (WebDriver) driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "ajax", + "browser", + "javascript", + "selenium", + "testing", + "webdriver" + ], + "time": "2020-03-11T14:43:21+00:00" + }, + { + "name": "behat/symfony2-extension", + "version": "2.1.5", + "source": { + "type": "git", + "url": "https://github.com/Behat/Symfony2Extension.git", + "reference": "d7c834487426a784665f9c1e61132274dbf2ea26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Symfony2Extension/zipball/d7c834487426a784665f9c1e61132274dbf2ea26", + "reference": "d7c834487426a784665f9c1e61132274dbf2ea26", + "shasum": "" + }, + "require": { + "behat/behat": "^3.4.3", + "php": ">=5.3.3", + "symfony/framework-bundle": "~2.0|~3.0|~4.0" + }, + "require-dev": { + "behat/mink": "~1.7@dev", + "behat/mink-browserkit-driver": "~1.3@dev", + "behat/mink-extension": "~2.0", + "phpspec/phpspec": "~2.0|~3.0|~4.0", + "phpunit/phpunit": "~4.0|~5.0", + "symfony/symfony": "~2.1|~3.0|~4.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Symfony2Extension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Symfony2 framework extension for Behat", + "homepage": "http://behat.org", + "keywords": [ + "BDD", + "framework", + "symfony" + ], + "time": "2018-04-20T15:48:23+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "f28d44c286812c714741478d968104c5e604a1d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", + "reference": "f28d44c286812c714741478d968104c5e604a1d4", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2020-11-13T08:04:11+00:00" + }, + { + "name": "eltrino/phpunit-mockannotations", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/eltrino/PHPUnit_MockAnnotations.git", + "reference": "1a06ed59ea0702359848fc01e958f4f92abb503a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/eltrino/PHPUnit_MockAnnotations/zipball/1a06ed59ea0702359848fc01e958f4f92abb503a", + "reference": "1a06ed59ea0702359848fc01e958f4f92abb503a", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "~6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Eltrino\\PHPUnit\\MockAnnotations\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ruslan Voitenko", + "email": "ruslan.voitenko@eltrino.com" + } + ], + "description": "PHPUnit MockAnnotations", + "time": "2017-04-14T15:44:49+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.12.6", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "f3241a98b563ffc38f2570d216a90c4fc88fea21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f3241a98b563ffc38f2570d216a90c4fc88fea21", + "reference": "f3241a98b563ffc38f2570d216a90c4fc88fea21", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.2", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.3", + "symfony/console": "^3.4.17 || ^4.1.6", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.2", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.1", + "php-cs-fixer/accessible-object": "^1.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", + "phpunitgoodpractices/traits": "^1.5.1", + "symfony/phpunit-bridge": "^4.0" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/TestCase.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "time": "2019-01-04T18:19:54+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.9.2", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^2.9.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "abandoned": true, + "time": "2020-12-11T09:56:16+00:00" + }, + { + "name": "instaclick/php-webdriver", + "version": "1.4.7", + "source": { + "type": "git", + "url": "https://github.com/instaclick/php-webdriver.git", + "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/b5f330e900e9b3edfc18024a5ec8c07136075712", + "reference": "b5f330e900e9b3edfc18024a5ec8c07136075712", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "satooshi/php-coveralls": "^1.0||^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "WebDriver": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Justin Bishop", + "email": "jubishop@gmail.com", + "role": "Developer" + }, + { + "name": "Anthon Pang", + "email": "apang@softwaredevelopment.ca", + "role": "Fork Maintainer" + } + ], + "description": "PHP WebDriver for Selenium 2", + "homepage": "http://instaclick.com/", + "keywords": [ + "browser", + "selenium", + "webdriver", + "webtest" + ], + "time": "2019-09-25T09:05:11+00:00" + }, + { + "name": "johnkary/phpunit-speedtrap", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/johnkary/phpunit-speedtrap.git", + "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", + "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "JohnKary\\PHPUnit\\Listener\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Kary", + "email": "john@johnkary.net" + } + ], + "description": "Find slow tests in your PHPUnit test suite", + "homepage": "https://github.com/johnkary/phpunit-speedtrap", + "keywords": [ + "phpunit", + "profile", + "slow" + ], + "time": "2017-12-06T15:14:00+00:00" + }, + { + "name": "mybuilder/phpunit-accelerator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/mybuilder/phpunit-accelerator.git", + "reference": "b1fef62c66b7eade5a02b5d12322373e7a86fbb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mybuilder/phpunit-accelerator/zipball/b1fef62c66b7eade5a02b5d12322373e7a86fbb2", + "reference": "b1fef62c66b7eade5a02b5d12322373e7a86fbb2", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "phpunit/phpunit": ">=5.7 <7" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyBuilder\\PhpunitAccelerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Keyvan Akbary", + "email": "keyvan@mybuilder.com" + } + ], + "description": "PHPUnit accelerator", + "keywords": [ + "accelerator", + "fast", + "free", + "memory", + "phpunit", + "property" ], - "time": "2015-05-05T12:07:24+00:00" + "time": "2017-06-21T07:43:12+00:00" }, { - "name": "twig/extensions", - "version": "v1.4.1", + "name": "myclabs/deep-copy", + "version": "1.10.2", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig-extensions.git", - "reference": "f0bb8431c8691f5a39f1017d9a5967a082bf01ff" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/f0bb8431c8691f5a39f1017d9a5967a082bf01ff", - "reference": "f0bb8431c8691f5a39f1017d9a5967a082bf01ff", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "twig/twig": "~1.20|~2.0" + "php": "^7.1 || ^8.0" }, - "require-dev": { - "symfony/translation": "~2.3" + "replace": { + "myclabs/deep-copy": "self.version" }, - "suggest": { - "symfony/translation": "Allow the time_diff output to be translated" + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, "autoload": { - "psr-0": { - "Twig_Extensions_": "lib/" - } + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Common additional features for Twig that do not directly belong in core", - "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "i18n", - "text" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], - "time": "2016-10-25T17:34:14+00:00" + "time": "2020-11-13T09:40:50+00:00" }, { - "name": "twig/twig", - "version": "v1.29.0", + "name": "nelmio/alice", + "version": "v2.3.6", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "74f723e542368ca2080b252740be5f1113ebb898" + "url": "https://github.com/nelmio/alice.git", + "reference": "80f853ddba25b30e11827261a6c3820239ee1b58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/74f723e542368ca2080b252740be5f1113ebb898", - "reference": "74f723e542368ca2080b252740be5f1113ebb898", + "url": "https://api.github.com/repos/nelmio/alice/zipball/80f853ddba25b30e11827261a6c3820239ee1b58", + "reference": "80f853ddba25b30e11827261a6c3820239ee1b58", "shasum": "" }, "require": { - "php": ">=5.2.7" + "fzaninotto/faker": "^1.5", + "php": "^5.6||^7.0||^8.0", + "symfony/yaml": "^2.0||^3.0" }, "require-dev": { - "symfony/debug": "~2.7", - "symfony/phpunit-bridge": "~3.2@dev" + "doctrine/common": "^2.3", + "phpspec/prophecy": "^1.5.0", + "phpunit/phpunit": "^5.6||^6.0", + "symfony/phpunit-bridge": "^3.0", + "symfony/property-access": "^2.2||^3.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.29-dev" - } - }, "autoload": { - "psr-0": { - "Twig_": "lib/" + "psr-4": { + "Nelmio\\Alice\\": "src/Nelmio/Alice" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "name": "Tim Shelburne", + "email": "shelburt02@gmail.com" }, { - "name": "Twig Team", - "homepage": "http://twig.sensiolabs.org/contributors", - "role": "Contributors" + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "http://twig.sensiolabs.org", + "description": "Expressive fixtures generator", "keywords": [ - "templating" + "Fixture", + "data", + "orm", + "test" ], - "time": "2016-12-13T17:28:18+00:00" + "time": "2021-01-06T14:37:19+00:00" }, { - "name": "vakata/jstree", - "version": "3.3.4", + "name": "oro/twig-inspector", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/vakata/jstree.git", - "reference": "a6a0d0dfb784d5ef0b3415d847ac7b6bfbab1f16" + "url": "https://github.com/oroinc/twig-inspector.git", + "reference": "fe8294e16a4d358cf86b94a2c2e51333c80e5c65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vakata/jstree/zipball/a6a0d0dfb784d5ef0b3415d847ac7b6bfbab1f16", - "reference": "a6a0d0dfb784d5ef0b3415d847ac7b6bfbab1f16", + "url": "https://api.github.com/repos/oroinc/twig-inspector/zipball/fe8294e16a4d358cf86b94a2c2e51333c80e5c65", + "reference": "fe8294e16a4d358cf86b94a2c2e51333c80e5c65", "shasum": "" }, "require": { - "components/jquery": ">=1.9.1" - }, - "suggest": { - "robloach/component-installer": "Allows installation of Components via Composer" + "symfony/config": "^3.4 | ^4.0", + "symfony/dependency-injection": "^3.4 | ^4.0", + "symfony/http-foundation": "^3.4 | ^4.0", + "symfony/http-kernel": "^3.4 | ^4.0", + "symfony/routing": "^3.4 | ^4.0", + "twig/twig": "~1.34|~2.4" }, - "type": "component", + "type": "symfony-bundle", "extra": { - "component": { - "scripts": [ - "dist/jstree.js" - ], - "styles": [ - "dist/themes/default/style.css" - ], - "images": [ - "dist/themes/default/32px.png", - "dist/themes/default/40px.png", - "dist/themes/default/throbber.gif" - ], - "files": [ - "dist/jstree.min.js", - "dist/themes/default/style.min.css", - "dist/themes/default/32px.png", - "dist/themes/default/40px.png", - "dist/themes/default/throbber.gif" - ] + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\TwigInspector\\": "" } }, - "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Ivan Bozhanov", - "email": "jstree@jstree.com" + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" } ], - "description": "jsTree is jquery plugin, that provides interactive trees.", - "homepage": "http://jstree.com", - "time": "2017-04-06T14:23:09+00:00" + "description": "Oro Twig Inspector adds the possibility to find twig templates and blocks used for rendering HTML pages faster during development", + "homepage": "https://github.com/oroinc/twig-inspector", + "keywords": [ + "ORO", + "debug", + "inspect", + "symfony", + "template", + "toolbar-extension", + "twig" + ], + "support": { + "source": "https://github.com/oroinc/twig-inspector/tree/master", + "issues": "https://github.com/oroinc/twig-inspector/issues" + }, + "time": "2019-05-27T10:05:30+00:00" }, { - "name": "willdurand/jsonp-callback-validator", - "version": "v1.1.0", + "name": "pdepend/pdepend", + "version": "2.8.0", "source": { "type": "git", - "url": "https://github.com/willdurand/JsonpCallbackValidator.git", - "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + "url": "https://github.com/pdepend/pdepend.git", + "reference": "c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", - "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38", + "reference": "c64472f8e76ca858c79ad9a4cf1e2734b3f8cc38", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.7", + "symfony/config": "^2.3.0|^3|^4|^5", + "symfony/dependency-injection": "^2.3.0|^3|^4|^5", + "symfony/filesystem": "^2.3.0|^3|^4|^5" }, "require-dev": { - "phpunit/phpunit": "~3.7" + "easy-doc/easy-doc": "0.0.0 || ^1.2.3", + "gregwar/rst": "^1.0", + "phpunit/phpunit": "^4.8.35|^5.7", + "squizlabs/php_codesniffer": "^2.0.0" }, + "bin": [ + "src/bin/pdepend" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, "autoload": { - "psr-0": { - "JsonpCallbackValidator": "src/" + "psr-4": { + "PDepend\\": "src/main/php/PDepend" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" - ], - "authors": [ - { - "name": "William Durand", - "email": "william.durand1@gmail.com", - "homepage": "http://www.willdurand.fr" - } + "BSD-3-Clause" ], - "description": "JSONP callback validator.", - "time": "2014-01-20T22:35:06+00:00" + "description": "Official version of pdepend to be handled with Composer", + "time": "2020-06-20T10:53:13+00:00" }, { - "name": "willdurand/negotiation", - "version": "1.5.0", + "name": "phar-io/manifest", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", - "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-4": { - "Negotiation\\": "src/Negotiation" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "William Durand", - "email": "william.durand1@gmail.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", - "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" - ], - "time": "2015-10-01T07:42:40+00:00" + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" }, { - "name": "zendframework/zend-code", - "version": "2.6.3", + "name": "phar-io/version", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-code.git", - "reference": "95033f061b083e16cdee60530ec260d7d628b887" + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887", - "reference": "95033f061b083e16cdee60530ec260d7d628b887", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", "shasum": "" }, "require": { - "php": "^5.5 || 7.0.0 - 7.0.4 || ^7.0.6", - "zendframework/zend-eventmanager": "^2.6 || ^3.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.8.21", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "zendframework/zend-stdlib": "Zend\\Stdlib component" + "php": "^5.6 || ^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" - } - }, "autoload": { - "psr-4": { - "Zend\\Code\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "provides facilities to generate arbitrary code using an object oriented interface", - "homepage": "https://github.com/zendframework/zend-code", - "keywords": [ - "code", - "zf2" + "authors": [ + { + "name": "Arne Blankerts", + "role": "Developer", + "email": "arne@blankerts.de" + }, + { + "name": "Sebastian Heuer", + "role": "Developer", + "email": "sebastian@phpeople.de" + }, + { + "name": "Sebastian Bergmann", + "role": "Developer", + "email": "sebastian@phpunit.de" + } ], - "time": "2016-04-20T17:26:42+00:00" + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" }, { - "name": "zendframework/zend-crypt", - "version": "2.4.0", + "name": "php-cs-fixer/diff", + "version": "v1.3.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-crypt.git", - "reference": "425b7c12f2a322ad74039f8e122e0a2695bf9787" + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-crypt/zipball/425b7c12f2a322ad74039f8e122e0a2695bf9787", - "reference": "425b7c12f2a322ad74039f8e122e0a2695bf9787", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", + "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-math": "self.version", - "zendframework/zend-servicemanager": "self.version", - "zendframework/zend-stdlib": "self.version" + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master" - }, - "suggest": { - "ext-mcrypt": "Required for most features of Zend\\Crypt" + "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", + "symfony/process": "^3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" - } - }, "autoload": { - "psr-4": { - "Zend\\Crypt\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-crypt", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "SpacePossum" + } + ], + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", "keywords": [ - "crypt", - "zf2" + "diff" ], - "time": "2015-03-25T20:55:48+00:00" + "time": "2020-10-14T08:39:05+00:00" }, { - "name": "zendframework/zend-eventmanager", - "version": "3.1.0", + "name": "phpmd/phpmd", + "version": "2.6.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "c3bce7b7d47c54040b9ae51bc55491c72513b75d" + "url": "https://github.com/phpmd/phpmd.git", + "reference": "7425e155cf22cdd2b4dd3458a7da4cf6c0201562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/c3bce7b7d47c54040b9ae51bc55491c72513b75d", - "reference": "c3bce7b7d47c54040b9ae51bc55491c72513b75d", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/7425e155cf22cdd2b4dd3458a7da4cf6c0201562", + "reference": "7425e155cf22cdd2b4dd3458a7da4cf6c0201562", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^5.6", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0" - }, - "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", - "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" - } + "ext-xml": "*", + "pdepend/pdepend": "^2.5", + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.0" }, + "bin": [ + "src/bin/phpmd" + ], + "type": "project", "autoload": { - "psr-4": { - "Zend\\EventManager\\": "src/" + "psr-0": { + "PHPMD\\": "src/main/php" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://github.com/zendframework/zend-eventmanager", + "authors": [ + { + "name": "Manuel Pichler", + "role": "Project Founder", + "email": "github@manuel-pichler.de", + "homepage": "https://github.com/manuelpichler" + }, + { + "name": "Other contributors", + "role": "Contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors" + }, + { + "name": "Marc Würth", + "role": "Project Maintainer", + "email": "ravage@bluewin.ch", + "homepage": "https://github.com/ravage84" + } + ], + "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", + "homepage": "http://phpmd.org/", "keywords": [ - "event", - "eventmanager", - "events", - "zf2" + "mess detection", + "mess detector", + "pdepend", + "phpmd", + "pmd" ], - "time": "2016-12-19T21:47:12+00:00" + "time": "2019-07-05T23:07:02+00:00" }, { - "name": "zendframework/zend-loader", - "version": "2.4.0", + "name": "phpspec/prophecy", + "version": "v1.10.3", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-loader.git", - "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/65de2c7a56f8eee633c6bf1cfab73e45648880d4", - "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { - "php": ">=5.3.23" + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master" + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { "psr-4": { - "Zend\\Loader\\": "src/" + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } ], - "homepage": "https://github.com/zendframework/zend-loader", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ - "loader", - "zf2" + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" ], - "time": "2015-03-23T18:29:14+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { - "name": "zendframework/zend-mail", - "version": "2.4.0", + "name": "phpunit/php-code-coverage", + "version": "5.3.2", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-mail.git", - "reference": "daf098ef42baa0be5357bbc7e0f6478d30f87a7c" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mail/zipball/daf098ef42baa0be5357bbc7e0f6478d30f87a7c", - "reference": "daf098ef42baa0be5357bbc7e0f6478d30f87a7c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-crypt": "self.version", - "zendframework/zend-loader": "self.version", - "zendframework/zend-mime": "self.version", - "zendframework/zend-stdlib": "self.version", - "zendframework/zend-validator": "self.version" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master", - "zendframework/zend-servicemanager": "self.version" + "phpunit/phpunit": "^6.0" }, "suggest": { - "zendframework/zend-servicemanager": "Zend\\ServiceManager component" + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { - "psr-4": { - "Zend\\Mail\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "provides generalized functionality to compose and send both text and MIME-compliant multipart e-mail messages", - "homepage": "https://github.com/zendframework/zend-mail", + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", "keywords": [ - "mail", - "zf2" + "coverage", + "testing", + "xunit" ], - "time": "2015-03-31T15:39:14+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { - "name": "zendframework/zend-math", - "version": "2.4.0", + "name": "phpunit/php-file-iterator", + "version": "1.4.5", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-math.git", - "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-math/zipball/f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73", - "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { - "php": ">=5.3.23" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master" - }, - "suggest": { - "ext-bcmath": "If using the bcmath functionality", - "ext-gmp": "If using the gmp functionality", - "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable", - "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { - "psr-4": { - "Zend\\Math\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-math", + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sb@sebastian-bergmann.de" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "math", - "zf2" + "filesystem", + "iterator" ], - "time": "2015-03-23T18:29:14+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { - "name": "zendframework/zend-mime", - "version": "2.4.0", + "name": "phpunit/php-text-template", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-mime.git", - "reference": "3e4a99a7693737342bc5c980b07ced17451739e1" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/3e4a99a7693737342bc5c980b07ced17451739e1", - "reference": "3e4a99a7693737342bc5c980b07ced17451739e1", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-stdlib": "self.version" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master", - "zendframework/zend-mail": "self.version" - }, - "suggest": { - "zendframework/zend-mail": "Zend\\Mail component" + "php": ">=5.3.3" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" - } - }, "autoload": { - "psr-4": { - "Zend\\Mime\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-mime", + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "mime", - "zf2" + "template" ], - "time": "2015-03-25T20:55:48+00:00" + "time": "2015-06-21T13:50:34+00:00" }, { - "name": "zendframework/zend-servicemanager", - "version": "2.4.0", + "name": "phpunit/php-timer", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/57cf99fa5ac08c05a135a8d0d676c52a5e450083", - "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", "shasum": "" }, "require": { - "php": ">=5.3.23" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master", - "zendframework/zend-di": "self.version" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", - "zendframework/zend-di": "Zend\\Di component" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Zend\\ServiceManager\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-service-manager", + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sb@sebastian-bergmann.de" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "servicemanager", - "zf2" + "timer" ], - "time": "2015-03-23T18:29:14+00:00" + "time": "2017-02-26T11:10:40+00:00" }, { - "name": "zendframework/zend-stdlib", - "version": "2.4.0", + "name": "phpunit/php-token-stream", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3", - "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { - "php": ">=5.3.23" + "ext-tokenizer": "*", + "php": "^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master", - "zendframework/zend-eventmanager": "self.version", - "zendframework/zend-filter": "self.version", - "zendframework/zend-serializer": "self.version", - "zendframework/zend-servicemanager": "self.version" - }, - "suggest": { - "zendframework/zend-eventmanager": "To support aggregate hydrator usage", - "zendframework/zend-filter": "To support naming strategy hydrator usage", - "zendframework/zend-serializer": "Zend\\Serializer component", - "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Zend\\Stdlib\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-stdlib", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", "keywords": [ - "stdlib", - "zf2" + "tokenizer" ], - "time": "2015-03-25T20:55:48+00:00" + "abandoned": true, + "time": "2017-11-27T05:48:46+00:00" }, { - "name": "zendframework/zend-validator", - "version": "2.4.0", + "name": "phpunit/phpcov", + "version": "4.0.5", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-validator.git", - "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f" + "url": "https://github.com/sebastianbergmann/phpcov.git", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/45fac2545a0f2eb66d71cb7966feee481e7c475f", - "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f", + "url": "https://api.github.com/repos/sebastianbergmann/phpcov/zipball/19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", "shasum": "" }, "require": { - "php": ">=5.3.23", - "zendframework/zend-stdlib": "self.version" - }, - "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "dev-master", - "zendframework/zend-db": "self.version", - "zendframework/zend-filter": "self.version", - "zendframework/zend-i18n": "self.version", - "zendframework/zend-math": "self.version", - "zendframework/zend-servicemanager": "self.version", - "zendframework/zend-session": "self.version", - "zendframework/zend-uri": "self.version" - }, - "suggest": { - "zendframework/zend-db": "Zend\\Db component", - "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", - "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators", - "zendframework/zend-math": "Zend\\Math component", - "zendframework/zend-resources": "Translations of validator messages", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", - "zendframework/zend-session": "Zend\\Session component", - "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" + "php": "^7.0", + "phpunit/php-code-coverage": "^5.2.1 || ^6.0", + "phpunit/phpunit": "^6.0 || ^7.0", + "sebastian/diff": "^1.1 || ^2.0", + "sebastian/finder-facade": "^1.1", + "sebastian/version": "^2.0", + "symfony/console": "^3.0 || ^4.0" }, + "bin": [ + "phpcov" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev", - "dev-develop": "2.4-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { - "psr-4": { - "Zend\\Validator\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "provides a set of commonly needed validators", - "homepage": "https://github.com/zendframework/zend-validator", - "keywords": [ - "validator", - "zf2" + "authors": [ + { + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" + } ], - "time": "2015-03-25T20:55:48+00:00" - } - ], - "packages-dev": [ + "description": "CLI frontend for php-code-coverage", + "homepage": "https://github.com/sebastianbergmann/phpcov", + "time": "2018-02-02T10:07:44+00:00" + }, { - "name": "eltrino/phpunit-mockannotations", - "version": "dev-master", + "name": "phpunit/phpunit", + "version": "6.5.14", "source": { "type": "git", - "url": "https://github.com/eltrino/PHPUnit_MockAnnotations.git", - "reference": "c58587669e081a69f32499ad8db92aba450072ee" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/eltrino/PHPUnit_MockAnnotations/zipball/c58587669e081a69f32499ad8db92aba450072ee", - "reference": "c58587669e081a69f32499ad8db92aba450072ee", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", "shasum": "" }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, "require-dev": { - "phpunit/phpunit": "~4.5" + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { - "psr-0": { - "Eltrino\\PHPUnit\\MockAnnotations\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Ruslan Voitenko", - "email": "ruslan.voitenko@eltrino.com" + "name": "Sebastian Bergmann", + "role": "lead", + "email": "sebastian@phpunit.de" } ], - "description": "PHPUnit MockAnnotations", - "time": "2015-09-15 09:39:33" + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-02-01T05:22:47+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0", + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", "shasum": "" }, "require": { - "php": ">=5.5" + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "mock", + "xunit" ], - "time": "2015-12-27T11:43:31+00:00" + "abandoned": true, + "time": "2018-08-09T05:50:03+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" + "php": ">=5.6" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "phpunit/phpunit": "^8.5" }, "type": "library", - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2020-11-30T08:15:22+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "0.2.1", + "name": "sebastian/comparator", + "version": "2.1.3", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "time": "2016-11-25T06:54:22+00:00" + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01T13:46:46+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.7.0", + "name": "sebastian/diff", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "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" + "php": "^7.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "diff" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2017-08-03T08:09:46+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "2.2.4", + "name": "sebastian/environment", + "version": "3.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "php": "^7.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "phpunit/phpunit": "^6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -8957,40 +11739,44 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "coverage", - "testing", - "xunit" + "Xdebug", + "environment", + "hhvm" ], - "time": "2015-10-06T15:47:00+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "name": "sebastian/exporter", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -9005,36 +11791,56 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "filesystem", - "iterator" + "export", + "exporter" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2020-11-30T07:47:53+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "sebastian/finder-facade", + "version": "1.2.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/finder-facade.git", + "reference": "167c45d131f7fc3d159f56f191a0a22228765e16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/167c45d131f7fc3d159f56f191a0a22228765e16", + "reference": "167c45d131f7fc3d159f56f191a0a22228765e16", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1", + "symfony/finder": "^2.3|^3.0|^4.0|^5.0", + "theseer/fdomdocument": "^1.6" }, "type": "library", + "extra": { + "branch-alias": [] + }, "autoload": { "classmap": [ "src/" @@ -9051,37 +11857,38 @@ "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" + "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "https://github.com/sebastianbergmann/finder-facade", + "abandoned": true, + "time": "2020-01-16T08:08:45+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.9", + "name": "sebastian/global-state", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -9096,42 +11903,42 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "timer" + "global state" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2017-04-27T15:39:26+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "1.4.11", + "name": "sebastian/object-enumerator", + "version": "3.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": ">=7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -9149,58 +11956,34 @@ "email": "sebastian@phpunit.de" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-02-27T10:12:30+00:00" + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2020-11-30T07:40:27+00:00" }, { - "name": "phpunit/phpunit", - "version": "4.8.35", + "name": "sebastian/object-reflector", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/791b1a67c25af50e230f841ee7a9c6eba507dc87", - "reference": "791b1a67c25af50e230f841ee7a9c6eba507dc87", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "php": ">=7.0" }, - "suggest": { - "phpunit/php-invoker": "~1.1" + "require-dev": { + "phpunit/phpunit": "^6.0" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -9215,49 +11998,41 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2017-02-06T05:18:07+00:00" + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2020-11-30T07:37:18+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", + "name": "sebastian/phpcpd", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + "url": "https://github.com/sebastianbergmann/phpcpd.git", + "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/dfed51c1288790fc957c9433e2f49ab152e8a564", + "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" + "php": "^5.6|^7.0", + "phpunit/php-timer": "^1.0.6", + "sebastian/finder-facade": "^1.1", + "sebastian/version": "^1.0|^2.0", + "symfony/console": "^2.7|^3.0|^4.0" }, + "bin": [ + "phpcpd" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -9272,44 +12047,38 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-10-02T06:51:40+00:00" + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "https://github.com/sebastianbergmann/phpcpd", + "time": "2017-11-16T08:49:28+00:00" }, { - "name": "sebastian/comparator", - "version": "1.2.4", + "name": "sebastian/recursion-context", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -9323,55 +12092,43 @@ ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2020-11-30T07:34:24+00:00" }, { - "name": "sebastian/diff", - "version": "1.4.1", + "name": "sebastian/resource-operations", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" + "php": ">=5.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -9384,46 +12141,36 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2015-12-08T07:14:41+00:00" + "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/environment", - "version": "1.3.8", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -9438,203 +12185,201 @@ "authors": [ { "name": "Sebastian Bergmann", + "role": "lead", "email": "sebastian@phpunit.de" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-08-18T05:49:44+00:00" + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "sebastian/exporter", - "version": "1.2.2", + "name": "sensio/generator-bundle", + "version": "v3.1.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/process": "~2.7|~3.0", + "symfony/yaml": "~2.7|~3.0", + "twig/twig": "^1.28.2|^2.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "doctrine/orm": "~2.4", + "symfony/doctrine-bridge": "~2.7|~3.0", + "symfony/filesystem": "~2.7|~3.0", + "symfony/phpunit-bridge": "^3.3" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Sensio\\Bundle\\GeneratorBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-06-17T09:04:28+00:00" + "description": "This bundle generates code for you", + "abandoned": "symfony/maker-bundle", + "time": "2017-12-07T15:36:41+00:00" }, { - "name": "sebastian/global-state", - "version": "1.1.1", + "name": "squizlabs/php_codesniffer", + "version": "3.3.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "src/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "http://www.squizlabs.com/php-codesniffer", "keywords": [ - "global state" + "phpcs", + "standards" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2018-09-23T23:08:17+00:00" }, { - "name": "sebastian/recursion-context", - "version": "1.0.5", + "name": "symfony/phpunit-bridge", + "version": "v3.4.47", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "120273ad5d03a8deee08ca9260e2598f288f2bac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/120273ad5d03a8deee08ca9260e2598f288f2bac", + "reference": "120273ad5d03a8deee08ca9260e2598f288f2bac", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "phpunit/phpunit": "~4.4" + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" }, - "type": "library", + "suggest": { + "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" + "description": "Symfony PHPUnit Bridge", + "homepage": "https://symfony.com", + "time": "2020-11-13T16:28:59+00:00" }, { - "name": "sebastian/version", - "version": "1.0.6", + "name": "theseer/fdomdocument", + "version": "1.6.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + "url": "https://github.com/theseer/fDOMDocument.git", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "url": "https://api.github.com/repos/theseer/fDOMDocument/zipball/6e8203e40a32a9c770bcb62fe37e68b948da6dca", + "reference": "6e8203e40a32a9c770bcb62fe37e68b948da6dca", "shasum": "" }, + "require": { + "ext-dom": "*", + "lib-libxml": "*", + "php": ">=5.3.3" + }, "type": "library", "autoload": { "classmap": [ @@ -9647,64 +12392,54 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Arne Blankerts", + "role": "lead", + "email": "arne@blankerts.de" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" + "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": "2017-06-30T11:53:12+00:00" }, { - "name": "webmozart/assert", + "name": "theseer/tokenizer", "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "75a63c33a8577608444246075ea0af0d052e452a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", + "reference": "75a63c33a8577608444246075ea0af0d052e452a", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2016-11-23T20:04:58+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2020-07-12T23:59:07+00:00" } ], "aliases": [], @@ -9712,8 +12447,6 @@ "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, - "platform": { - "php": ">=5.4.4" - }, + "platform": [], "platform-dev": [] } diff --git a/app/config/.gitignore b/config/.gitignore similarity index 100% rename from app/config/.gitignore rename to config/.gitignore diff --git a/app/config/config.yml b/config/config.yml similarity index 63% rename from app/config/config.yml rename to config/config.yml index 05b71c504..8010c530e 100644 --- a/app/config/config.yml +++ b/config/config.yml @@ -4,24 +4,27 @@ imports: framework: #esi: ~ - translator: { fallback: en } + translator: + paths: + - '%kernel.project_dir%/translations' + fallback: en secret: "%secret%" router: - resource: "%kernel.root_dir%/config/routing.yml" + resource: "%kernel.project_dir%/config/routing.yml" strict_requirements: "%kernel.debug%" form: true csrf_protection: true validation: { enable_annotations: true } templating: engines: ['twig', 'php'] - assets_version: "%assets_version%" - assets_version_format: "%%s?version=%%s" - default_locale: "%locale%" - trusted_proxies: ~ + assets: + version: %assets_version% + version_format: %%s?version=%%s + default_locale: en session: name: BAPID - handler_id: "%session_handler%" - save_path: "%kernel.root_dir%/cache/sessions" + handler_id: %session_handler% + save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%' gc_maxlifetime: 3600 cookie_httponly: true fragments: @@ -34,23 +37,10 @@ framework: twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" - exception_controller: "FOS\RestBundle\Controller\ExceptionController::showAction" + exception_controller: "Oro\\Bundle\\UIBundle\\Controller\\ExceptionController::showAction" globals: bap: - layout: ::base.html.twig # default layout across all Oro bundles - -# Assetic Configuration -assetic: - debug: false - use_controller: false - filters: - cssrewrite: ~ - lessphp: - file: "%kernel.root_dir%/../vendor/leafo/lessphp/lessc.inc.php" - apply_to: "\.less$" - paths: ["%kernel.root_dir%/../web/bundles"] - cssmin: - file: "%kernel.root_dir%/Resources/php/cssmin-v3.0.1.php" + layout: base.html.twig # default layout across all Oro bundles # Swiftmailer Configuration swiftmailer: @@ -93,29 +83,37 @@ stof_doctrine_extensions: services: twig.extension.intl: - class: Twig_Extensions_Extension_Intl - tags: - - { name: twig.extension } + class: Twig_Extensions_Extension_Intl + tags: + - { name: twig.extension } escape_wsse_authentication: authentication_provider_class: Oro\Bundle\UserBundle\Security\WsseAuthProvider -genemu_form: - select2: ~ - autocomplete: ~ - -a2lix_translation_form: +oro_translation: locales: [en, fr] templating: "OroUIBundle:Form:translatable.html.twig" lexik_maintenance: authorized: - path: "maintenance|.*\.js" # "maintenance" is only for demo purposes, remove in production! -# ips: ["127.0.0.1"] # Optional. Authorized ip addresses + path: 'maintenance|.*\.js' # "maintenance" is only for demo purposes, remove in production! + # ips: ["127.0.0.1"] # Optional. Authorized ip addresses driver: class: Lexik\Bundle\MaintenanceBundle\Drivers\FileDriver options: - file_path: "%kernel.root_dir%/cache/maintenance_lock" + file_path: %kernel.project_dir%/var/cache/maintenance_lock + +liip_imagine: + loaders: + default: + filesystem: + data_root: + - %kernel.project_dir%/public + - %kernel.project_dir%/var/attachments + resolvers: + default: + web_path: + web_root: %kernel.project_dir%/public # # ORO Bundles config @@ -125,7 +123,7 @@ oro_distribution: oro_require_js: build_path: "js/oro.min.js" - building_timeout: 3600 + build_timeout: 3600 build: preserveLicenseComments: true @@ -149,3 +147,23 @@ oro_message_queue: default: '%message_queue_transport%' '%message_queue_transport%': '%message_queue_transport_config%' client: ~ + +oro_locale: + formatting_code: en + language: en + +oro_attachment: + upload_file_mime_types: + - application/msword + - application/vnd.ms-excel + - application/pdf + - application/zip + - image/gif + - image/jpeg + - image/png + upload_image_mime_types: + - image/gif + - image/jpeg + - image/png +oro_navigation: + js_routing_filename_prefix: 'diamante' \ No newline at end of file diff --git a/config/config_dev.yml b/config/config_dev.yml new file mode 100644 index 000000000..72b4894b6 --- /dev/null +++ b/config/config_dev.yml @@ -0,0 +1,33 @@ +imports: + - { resource: config.yml } + +framework: + router: { resource: "%kernel.project_dir%/config/routing_dev.yml" } + profiler: { only_exceptions: false } + ide: phpstorm + +web_profiler: + toolbar: true + excluded_ajax_paths: '^/((index(_[\w]+)|app(_[\w]+)?)\.php/)?(_wdt|bundles)' + intercept_redirects: false + +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + + # collect all log records to buffer and write them to log file on CLI command error + message_queue.consumer.console_error: + type: service + id: oro_message_queue.log.handler.console_error + handler: main + level: debug + +oro_message_queue: + client: + traceable_producer: true + +#swiftmailer: +# delivery_address: me@example.com diff --git a/app/config/config_prod.yml b/config/config_prod.yml similarity index 71% rename from app/config/config_prod.yml rename to config/config_prod.yml index f994976f6..7db563e28 100644 --- a/app/config/config_prod.yml +++ b/config/config_prod.yml @@ -7,6 +7,10 @@ imports: # result_cache_driver: apc # query_cache_driver: apc +doctrine: + dbal: + logging: true + monolog: handlers: detailed_logs: @@ -22,9 +26,11 @@ monolog: type: fingers_crossed action_level: critical handler: deduplicated + buffer_size: 1000 deduplicated: type: deduplication handler: swift + buffer_size: 1000 swift: type: swift_mailer email_prototype: @@ -33,3 +39,13 @@ monolog: mailer: swiftmailer.mailer.default level: debug formatter: monolog.formatter.html + + # collect all log records to buffer and write them to log file on CLI command error + message_queue.consumer.console_error: + type: service + id: oro_message_queue.log.handler.console_error + handler: nested + level: debug + +oro_require_js: + build_logger: false diff --git a/app/config/config_test.yml b/config/config_test.yml similarity index 89% rename from app/config/config_test.yml rename to config/config_test.yml index c66c8c356..4b907376a 100644 --- a/app/config/config_test.yml +++ b/config/config_test.yml @@ -1,6 +1,6 @@ imports: - { resource: config.yml } - - { resource: parameters_test.yml } + - { resource: parameters_test.yml, ignore_errors: true } - { resource: security_test.yml } parameters: @@ -33,11 +33,9 @@ services: - '@oro_message_queue.test.message_collector.inner' swiftmailer: + logging: true disable_delivery: true -oro_require_js: - js_engine: ~ - # configure loose default password requirements for auto-generated test users oro_user: settings: @@ -54,3 +52,8 @@ oro_user: twig: strict_variables: true + debug: false + +oro_message_queue: + transport: + dbal: null diff --git a/config/dist/config.yml b/config/dist/config.yml new file mode 100644 index 000000000..b9221b3f4 --- /dev/null +++ b/config/dist/config.yml @@ -0,0 +1,65 @@ +imports: + - { resource: '@OroDistributionBundle/Resources/config/security.yml' } + - { resource: ../parameters.yml } + +framework: + #esi: ~ + translator: + paths: + - '%kernel.project_dir%/translations' + fallback: en + secret: "%secret%" + router: + resource: "%kernel.project_dir%/config/dist/routing.yml" + strict_requirements: "%kernel.debug%" + form: true + csrf_protection: true + validation: { enable_annotations: true } + templating: { engines: ['twig', 'php'] } #assets_version: SomeVersionScheme + default_locale: en + session: + name: BAPID_DIST + handler_id: %session_handler% + save_path: %kernel.project_dir%/var/cache/sessions + gc_maxlifetime: 3600 + cookie_httponly: true + fragments: + enabled: true + path: /_fragment # used for controller action in template + +# Twig Configuration +twig: + debug: "%kernel.debug%" + strict_variables: "%kernel.debug%" + +lexik_maintenance: + driver: + class: Lexik\Bundle\MaintenanceBundle\Drivers\FileDriver + options: + file_path: %kernel.project_dir%/var/cache/maintenance_lock + +services: + oro.cache.abstract: + abstract: true + class: Doctrine\Common\Cache\PhpFileCache + arguments: [%kernel.cache_dir%/dist] + twig.extension.intl: + class: Twig_Extensions_Extension_Intl + tags: + - { name: twig.extension } + +oro_help: + defaults: + server: http://help.orocrm.com/ + prefix: Third_Party + vendors: + Oro: + prefix: ~ + alias: Platform + +monolog: + handlers: + oro_distribution: + type: stream + path: %kernel.logs_dir%/%kernel.environment%.distribution.log + channels: oro_distribution diff --git a/config/dist/config_dev.yml b/config/dist/config_dev.yml new file mode 100644 index 000000000..231f40065 --- /dev/null +++ b/config/dist/config_dev.yml @@ -0,0 +1,11 @@ +imports: + - { resource: config.yml } + +framework: + router: { resource: "%kernel.project_dir%/config/dist/routing_dev.yml" } + profiler: { only_exceptions: false } + +web_profiler: + toolbar: true + excluded_ajax_paths: '^/((index(_[\w]+)|app(_[\w]+)?)\.php/)?(_wdt|bundles)' + intercept_redirects: false \ No newline at end of file diff --git a/config/dist/config_prod.yml b/config/dist/config_prod.yml new file mode 100644 index 000000000..984e005a8 --- /dev/null +++ b/config/dist/config_prod.yml @@ -0,0 +1,2 @@ +imports: + - { resource: config.yml } \ No newline at end of file diff --git a/config/dist/config_test.yml b/config/dist/config_test.yml new file mode 100644 index 000000000..ef4ff594b --- /dev/null +++ b/config/dist/config_test.yml @@ -0,0 +1,3 @@ +imports: + - { resource: config.yml } + - { resource: ../parameters_test.yml, ignore_errors: true } diff --git a/config/dist/routing.yml b/config/dist/routing.yml new file mode 100644 index 000000000..c6d75fb56 --- /dev/null +++ b/config/dist/routing.yml @@ -0,0 +1,9 @@ +# +# ORO routes +# +index: + path: / + defaults: { _controller: OroDistributionBundle:Package:listInstalled } + +oro_distribution: + resource: "@OroDistributionBundle/Resources/config/routing.yml" \ No newline at end of file diff --git a/config/dist/routing_dev.yml b/config/dist/routing_dev.yml new file mode 100644 index 000000000..d3a7f9309 --- /dev/null +++ b/config/dist/routing_dev.yml @@ -0,0 +1,10 @@ +_wdt: + resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" + prefix: /_wdt + +_profiler: + resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" + prefix: /_profiler + +_main: + resource: routing.yml \ No newline at end of file diff --git a/app/config/parameters.yml.dist b/config/parameters.yml.dist similarity index 50% rename from app/config/parameters.yml.dist rename to config/parameters.yml.dist index 7b3e72589..6dbf5543b 100644 --- a/app/config/parameters.yml.dist +++ b/config/parameters.yml.dist @@ -5,6 +5,7 @@ parameters: database_name: diamantedesk database_user: root database_password: ~ + database_driver_options: [] mailer_transport: mail mailer_host: 127.0.0.1 @@ -14,12 +15,16 @@ parameters: mailer_password: ~ # WebSocket server config - websocket_bind_address: "0.0.0.0" # The host IP the socket server will bind to - websocket_bind_port: 8080 # The port the socket server will listen on - websocket_frontend_host: "*" # Websocket host the browser will connect to - websocket_frontend_port: 8080 # Websocket port the browser will connect to - websocket_backend_host: "*" # Websocket host the application server will connect to - websocket_backend_port: 8080 # Websocket port the application server will connect to + websocket_bind_address: "0.0.0.0" # The host IP the socket server will bind to + websocket_bind_port: 8080 # The port the socket server will listen on + websocket_frontend_host: "*" # Websocket host the browser will connect to + websocket_frontend_port: 8080 # Websocket port the browser will connect to + websocket_frontend_path: "" # Websocket url path the browser will connect to (for example "/websocket" or "/ws") + websocket_backend_host: "*" # Websocket host the application server will connect to + websocket_backend_port: 8080 # Websocket port the application server will connect to + websocket_backend_path: "" # Websocket url path the application server will connect to (for example "/websocket" or "/ws") + websocket_backend_transport: tcp # Socket transport (for example "tcp", "ssl" or "tls") + websocket_backend_ssl_context_options: {} # Socket context options, usually needed when using secure transport session_handler: session.handler.native_file diff --git a/config/parameters_test.yml.dist b/config/parameters_test.yml.dist new file mode 100644 index 000000000..bb61d9007 --- /dev/null +++ b/config/parameters_test.yml.dist @@ -0,0 +1,36 @@ +parameters: + database_driver: pdo_mysql + database_host: 127.0.0.1 + database_port: ~ + database_name: diamantedesk_test + database_user: root + database_password: root + database_driver_options: [] + + mailer_transport: smtp + mailer_host: 127.0.0.1 + mailer_port: ~ + mailer_encryption: ~ + mailer_user: ~ + mailer_password: ~ + + # WebSocket server config + websocket_bind_address: "0.0.0.0" # The host IP the socket server will bind to + websocket_bind_port: 8080 # The port the socket server will listen on + websocket_frontend_host: "*" # Websocket host the browser will connect to + websocket_frontend_port: 8080 # Websocket port the browser will connect to + websocket_frontend_path: "" # Websocket url path the browser will connect to (for example "/websocket" or "/ws") + websocket_backend_host: "*" # Websocket host the application server will connect to + websocket_backend_port: 8080 # Websocket port the application server will connect to + websocket_backend_path: "" # Websocket url path the application server will connect to (for example "/websocket" or "/ws") + websocket_backend_transport: tcp # Socket transport (for example "tcp", "ssl" or "tls") + websocket_backend_ssl_context_options: {} # Socket context options, usually needed when using secure transport + + session_handler: ~ + + secret: ThisTokenIsNotSoSecretChangeIt + installed: ~ + assets_version: ~ + assets_version_strategy: time_hash + message_queue_transport: 'null' + message_queue_transport_config: {} diff --git a/app/config/routing.yml b/config/routing.yml similarity index 50% rename from app/config/routing.yml rename to config/routing.yml index 81284f299..a2e7c6acc 100644 --- a/app/config/routing.yml +++ b/config/routing.yml @@ -1,15 +1,8 @@ # # 3rd party routes # -nelmio_api_doc: - resource: "@NelmioApiDocBundle/Resources/config/routing.yml" - prefix: /api/doc - -fos_js_routing: - resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml" - _liip_imagine: - resource: "@LiipImagineBundle/Resources/config/routing.xml" + resource: "@LiipImagineBundle/Resources/config/routing.yaml" # # ORO routes diff --git a/app/config/routing_dev.yml b/config/routing_dev.yml similarity index 100% rename from app/config/routing_dev.yml rename to config/routing_dev.yml diff --git a/config/security.yml b/config/security.yml new file mode 100644 index 000000000..4bf3e2969 --- /dev/null +++ b/config/security.yml @@ -0,0 +1,12 @@ +security: + encoders: + Symfony\Component\Security\Core\User\User: plaintext + + firewalls: + dev: + pattern: ^/(_(profiler|wdt)|css|images|js)/ + security: false + diamante_embedded_form: + pattern: ^/embedded-form/submit-ticket + provider: chain_provider + anonymous: true diff --git a/app/config/security_test.yml b/config/security_test.yml similarity index 88% rename from app/config/security_test.yml rename to config/security_test.yml index d114bb426..9b3f119d2 100644 --- a/app/config/security_test.yml +++ b/config/security_test.yml @@ -4,7 +4,8 @@ security: cache: id: security.acl.cache.doctrine prefix: sf2_acl_ - + access_decision_manager: + strategy: unanimous firewalls: main: organization-http-basic: diff --git a/dev.json b/dev.json new file mode 100644 index 000000000..874ebcf70 --- /dev/null +++ b/dev.json @@ -0,0 +1,138 @@ +{ + "name": "oro/platform-application", + "description": "Oro Platform Empty Application", + "homepage": "https://github.com/orocrm/platform-application.git", + "license": "MIT", + "autoload": { + "psr-4": {"": "src/"}, + "classmap": [ + "vendor/oro/platform/src/Oro/Component/Testing/DeprecationErrorHandler.php", + "src/AppKernel.php", + "src/AppCache.php" + ], + "exclude-from-classmap": [ + "/vendor/symfony/phpunit-bridge/DeprecationErrorHandler.php", + "**/Tests/" + ] + }, + "repositories": [ + { + "type": "path", + "url": "../../package/*" + }, + { + "type": "composer", + "url": "https://packagist.orocrm.com" + }, + { + "type": "composer", + "url": "https://asset-packagist.orocrm.com" + } + ], + "require": { + "oro/platform": "~3.1.1", + "oro/platform-serialised-fields": "~3.1.1", + "oro/oauth2-server": "~3.1.1", + "oro/calendar-bundle": "~3.1.1", + "oro/redis-config": "~3.1.1" + }, + "require-dev": { + "sensio/generator-bundle": "3.1.*", + "behat/behat": "3.4.*", + "behat/mink-extension": "2.3.*", + "behat/mink-selenium2-driver": "1.*", + "behat/symfony2-extension": "2.1.*", + "nelmio/alice": "2.3.*", + "phpunit/phpunit": "6.5.*", + "johnkary/phpunit-speedtrap": "2.0.*", + "mybuilder/phpunit-accelerator": "2.0.*", + "squizlabs/php_codesniffer": "3.3.*", + "phpmd/phpmd": "2.6.*", + "sebastian/phpcpd": "3.0.*", + "phpunit/phpcov": "4.0.*", + "symfony/phpunit-bridge": "3.4.*", + "friendsofphp/php-cs-fixer": "2.12.6", + "oro/twig-inspector": "1.0.*" + }, + "config": { + "component-dir": "public/bundles/components", + "bin-dir": "bin", + "fxp-asset": { + "enabled": false + } + }, + "scripts": { + "post-install-cmd": [ + "@build-parameters", + "@build-bootstrap", + "@install-requirements-file", + "@set-permissions", + "@install-assets", + "@set-assets-version" + ], + "post-update-cmd": [ + "@build-parameters", + "@build-bootstrap", + "@install-requirements-file", + "@set-permissions", + "@install-assets", + "@set-assets-version" + ], + "build-parameters": [ + "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters" + ], + "build-bootstrap": [ + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap" + ], + "install-requirements-file": [ + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile" + ], + "set-permissions": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setPermissions" + ], + "install-assets": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::installAssets" + ], + "set-assets-version": [ + "Oro\\Bundle\\InstallerBundle\\Composer\\ScriptHandler::setAssetsVersion" + ] + }, + "minimum-stability": "dev", + "prefer-stable": true, + "extra": { + "symfony-web-dir": "public", + "symfony-var-dir": "var", + "symfony-bin-dir": "bin", + "symfony-tests-dir": "tests", + "incenteev-parameters": { + "file": "config/parameters.yml", + "env-map": { + "database_driver": "ORO_DB_DRIVER", + "database_host": "ORO_DB_HOST", + "database_port": "ORO_DB_PORT", + "database_name": "ORO_DB_NAME", + "database_user": "ORO_DB_USER", + "database_password": "ORO_DB_PASSWORD", + "mailer_transport": "ORO_MAILER_TRANSPORT", + "mailer_host": "ORO_MAILER_HOST", + "mailer_port": "ORO_MAILER_PORT", + "mailer_encryption": "ORO_MAILER_ENCRYPTION", + "mailer_user": "ORO_MAILER_USER", + "mailer_password": "ORO_MAILER_PASSWORD", + "websocket_bind_address": "ORO_WS_BIND_ADDRESS", + "websocket_bind_port": "ORO_WS_BIND_PORT", + "websocket_frontend_host": "ORO_WS_FRONTEND_HOST", + "websocket_frontend_port": "ORO_WS_FRONTEND_PORT", + "websocket_backend_host": "ORO_WS_BACKEND_HOST", + "websocket_backend_port": "ORO_WS_BACKEND_PORT", + "web_backend_prefix": "ORO_WEB_BACKEND_PREFIX", + "session_handler": "ORO_SESSION_HANDLER", + "locale": "ORO_LOCALE", + "secret": "ORO_SECRET", + "installed": "ORO_INSTALLED", + "message_queue_transport": "ORO_MQ_TRANSPORT", + "message_queue_transport_config": "ORO_MQ_TRANSPORT_CONFIG" + } + } + } +} diff --git a/dev.lock b/dev.lock new file mode 100644 index 000000000..28e851555 --- /dev/null +++ b/dev.lock @@ -0,0 +1,11742 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "c140d80bbb08aeeae59f335bf4af08a6", + "packages": [ + { + "name": "akeneo/batch-bundle", + "version": "0.4.8", + "target-dir": "Akeneo/Bundle/BatchBundle", + "source": { + "type": "git", + "url": "https://github.com/laboro/BatchBundle.git", + "reference": "aff218f6ba5714baae575698c0578bf8da207f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laboro/BatchBundle/zipball/aff218f6ba5714baae575698c0578bf8da207f41", + "reference": "aff218f6ba5714baae575698c0578bf8da207f41", + "shasum": "" + }, + "require": { + "doctrine/orm": "^2.1.3", + "monolog/monolog": "^1.1.0", + "php": ">=5.4.4", + "symfony/swiftmailer-bundle": "^2.3.5", + "symfony/symfony": "^2.1|~3.0" + }, + "require-dev": { + "phpspec/phpspec": "2.1.*" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Akeneo\\Bundle\\BatchBundle": "" + } + }, + "license": [ + "MIT" + ], + "description": "Akeneo Batch Bundle", + "keywords": [ + "Akeneo", + "Batch", + "Job", + "Processor", + "Reader", + "Writer" + ], + "support": { + "source": "https://github.com/laboro/BatchBundle/tree/0.4.8" + }, + "time": "2018-03-20T11:52:51+00:00" + }, + { + "name": "ass/xmlsecurity", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/aschamberger/XmlSecurity.git", + "reference": "c8976519ebbf6e4d953cd781d09df44b7f65fbb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aschamberger/XmlSecurity/zipball/c8976519ebbf6e4d953cd781d09df44b7f65fbb8", + "reference": "c8976519ebbf6e4d953cd781d09df44b7f65fbb8", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "lib-openssl": ">=0.9.0", + "php": ">=5.3.0" + }, + "require-dev": { + "satooshi/php-coveralls": "dev-master" + }, + "suggest": { + "ext-mcrypt": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ass\\XmlSecurity": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Robert Richards", + "email": "rrichards@cdatazone.org" + }, + { + "name": "Andreas Schamberger", + "email": "mail@andreass.net" + } + ], + "description": "The XmlSecurity library is written in PHP for working with XML Encryption and Signatures", + "homepage": "https://github.com/aschamberger/XmlSecurity", + "keywords": [ + "encryption", + "security", + "signature", + "xml" + ], + "time": "2015-05-31T10:10:35+00:00" + }, + { + "name": "behat/transliterator", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Transliterator.git", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "chuyskywalker/rolling-curl": "^3.1", + "php-yaoi/php-yaoi": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Transliterator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "time": "2017-04-04T11:38:05+00:00" + }, + { + "name": "bower-asset/autobahnjs", + "version": "v0.8.0", + "source": { + "type": "git", + "url": "https://github.com/crossbario/autobahn-js.git", + "reference": "5561cb7d39004cb764a01454d922c2b4a083d010" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/crossbario/autobahn-js/zipball/5561cb7d39004cb764a01454d922c2b4a083d010", + "reference": "5561cb7d39004cb764a01454d922c2b4a083d010" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/autolinker.js", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/gregjacobs/Autolinker.js.git", + "reference": "355143d271c314e1cb68eb120b55450461927427" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/gregjacobs/Autolinker.js/zipball/355143d271c314e1cb68eb120b55450461927427", + "reference": "355143d271c314e1cb68eb120b55450461927427" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/backbone", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/jashkenas/backbone.git", + "reference": "05fde9e201f7e2137796663081105cd6dad12a98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jashkenas/backbone/zipball/05fde9e201f7e2137796663081105cd6dad12a98", + "reference": "05fde9e201f7e2137796663081105cd6dad12a98" + }, + "require": { + "bower-asset/underscore": ">=1.7.0" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/backbone-pageable", + "version": "1.2.3", + "source": { + "type": "git", + "url": "git@github.com:wyuenho/backbone-pageable.git", + "reference": "d1063263056195d2534fd7d56595c1816eec2173" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wyuenho/backbone-pageable/zipball/d1063263056195d2534fd7d56595c1816eec2173", + "reference": "d1063263056195d2534fd7d56595c1816eec2173" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/backbone.paginator", + "version": "2.0.5", + "source": { + "type": "git", + "url": "git@github.com:addyosmani/backbone.paginator.git", + "reference": "71123a819b2b0fd549da6699f4f0e46b48223025" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/addyosmani/backbone.paginator/zipball/71123a819b2b0fd549da6699f4f0e46b48223025", + "reference": "71123a819b2b0fd549da6699f4f0e46b48223025" + }, + "require": { + "bower-asset/backbone": ">=1.2.3,<2.0.0", + "bower-asset/underscore": ">=1.8.3,<2.0.0" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/backgrid", + "version": "0.3.7", + "source": { + "type": "git", + "url": "git@github.com:wyuenho/backgrid.git", + "reference": "9a45dbc4a2af4a555e8274b7cc1a966a7586cfea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wyuenho/backgrid/zipball/9a45dbc4a2af4a555e8274b7cc1a966a7586cfea", + "reference": "9a45dbc4a2af4a555e8274b7cc1a966a7586cfea" + }, + "require": { + "bower-asset/backbone": "~1.2.3", + "bower-asset/underscore": ">=1.8.3,<2.0.0" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/backgrid-paginator", + "version": "v0.3.8", + "source": { + "type": "git", + "url": "git@github.com:wyuenho/backgrid-paginator.git", + "reference": "77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wyuenho/backgrid-paginator/zipball/77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7", + "reference": "77ec7004d0dd0e72d81a11a797bd19e69aa8dfb7" + }, + "require": { + "bower-asset/backbone": ">=1.1.2,<2.0.0", + "bower-asset/backbone.paginator": ">=2.0.0,<3.0.0", + "bower-asset/backgrid": "~0.3.5", + "bower-asset/underscore": ">=1.5.0,<2.0.0" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/base64", + "version": "1.0.1", + "source": { + "type": "git", + "url": "git@github.com:davidchambers/Base64.js.git", + "reference": "b2d49f347ed1bce61000a82769bffc837b7c79dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/davidchambers/Base64.js/zipball/b2d49f347ed1bce61000a82769bffc837b7c79dc", + "reference": "b2d49f347ed1bce61000a82769bffc837b7c79dc" + }, + "type": "bower-asset", + "license": [ + "WTFPL" + ] + }, + { + "name": "bower-asset/bean", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "git@github.com:fat/bean.git", + "reference": "0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fat/bean/zipball/0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea", + "reference": "0bbb3911ec2bb15333fdcf3a0a7904a1d4f62dea" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/bootstrap", + "version": "v4.1.1", + "source": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git", + "reference": "779ad9f174ea5ab7e755f6df0ec9e5912d67dd16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twbs/bootstrap/zipball/779ad9f174ea5ab7e755f6df0ec9e5912d67dd16", + "reference": "779ad9f174ea5ab7e755f6df0ec9e5912d67dd16" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/chaplin", + "version": "1.2.0", + "source": { + "type": "git", + "url": "git@github.com:chaplinjs/downloads.git", + "reference": "9b52a254842650787341c67e82edc7758220c19f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/chaplinjs/downloads/zipball/9b52a254842650787341c67e82edc7758220c19f", + "reference": "9b52a254842650787341c67e82edc7758220c19f" + }, + "require": { + "bower-asset/backbone": "dev-1.x|1.x" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/crypto-js", + "version": "3.1.7", + "source": { + "type": "git", + "url": "git@github.com:brix/crypto-js.git", + "reference": "67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brix/crypto-js/zipball/67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6", + "reference": "67d2e996e25e00f66118b3b8ab7f7fc8eae6e8d6" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/datepair", + "version": "0.4.15", + "source": { + "type": "git", + "url": "git@github.com:jonthornton/Datepair.js.git", + "reference": "5d243d5d513c42dfc07e27db80484e91bc15b9d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jonthornton/Datepair.js/zipball/5d243d5d513c42dfc07e27db80484e91bc15b9d1", + "reference": "5d243d5d513c42dfc07e27db80484e91bc15b9d1" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/flotr2", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/HumbleSoftware/Flotr2.git", + "reference": "df0ddedcab1a8fdb3a7abafc5fe97819931e7bd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/HumbleSoftware/Flotr2/zipball/df0ddedcab1a8fdb3a7abafc5fe97819931e7bd5", + "reference": "df0ddedcab1a8fdb3a7abafc5fe97819931e7bd5" + }, + "type": "bower-asset", + "time": "2014-07-21T18:45:41+00:00" + }, + { + "name": "bower-asset/font-awesome", + "version": "v4.7.0", + "source": { + "type": "git", + "url": "git@github.com:FortAwesome/Font-Awesome.git", + "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FortAwesome/Font-Awesome/zipball/a8386aae19e200ddb0f6845b5feeee5eb7013687", + "reference": "a8386aae19e200ddb0f6845b5feeee5eb7013687" + }, + "type": "bower-asset", + "license": [ + "OFL-1.1", + "MIT", + "CC-BY-3.0" + ] + }, + { + "name": "bower-asset/fullcalendar", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/fullcalendar/fullcalendar.git", + "reference": "447ab267528a211b253058dfb5d898b7a2296492" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fullcalendar/fullcalendar/zipball/447ab267528a211b253058dfb5d898b7a2296492", + "reference": "447ab267528a211b253058dfb5d898b7a2296492" + }, + "require": { + "bower-asset/jquery": ">=2,<4.0", + "bower-asset/moment": ">=2.9.0,<3.0.0" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/fuse", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/krisk/Fuse.git", + "reference": "f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/krisk/Fuse/zipball/f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33", + "reference": "f68a18a9b94eedfc82dfc7d7def8a8966c9f5b33" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/jquery", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/jquery/jquery-dist.git", + "reference": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", + "reference": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/jquery-ajax-queue", + "version": "v0.0.1", + "source": { + "type": "git", + "url": "git@github.com:flydreamers/ajaxQueue.git", + "reference": "50ffe758abe1a365ad228851ee7028677bfb07b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/flydreamers/ajaxQueue/zipball/50ffe758abe1a365ad228851ee7028677bfb07b4", + "reference": "50ffe758abe1a365ad228851ee7028677bfb07b4" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/jquery-cookie", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "git@github.com:carhartl/jquery-cookie.git", + "reference": "7f88a4e631aba8a8c688fd8999ce6b9bcfd50718" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/carhartl/jquery-cookie/zipball/7f88a4e631aba8a8c688fd8999ce6b9bcfd50718", + "reference": "7f88a4e631aba8a8c688fd8999ce6b9bcfd50718" + }, + "require": { + "bower-asset/jquery": ">=1.2" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/jquery-form", + "version": "v4.2.1", + "source": { + "type": "git", + "url": "https://github.com/jquery-form/form.git", + "reference": "c15a69251b36544cda48892c23e0dcec21fff838" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jquery-form/form/zipball/c15a69251b36544cda48892c23e0dcec21fff838", + "reference": "c15a69251b36544cda48892c23e0dcec21fff838" + }, + "require": { + "bower-asset/jquery": ">=1.7" + }, + "type": "bower-asset", + "license": [ + "(MIT OR LGPL-3.0)" + ] + }, + { + "name": "bower-asset/jquery-mousewheel", + "version": "3.1.13", + "source": { + "type": "git", + "url": "https://github.com/jquery/jquery-mousewheel.git", + "reference": "67289b6b2aa0066d7d78a5807f520387135ffb22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jquery/jquery-mousewheel/zipball/67289b6b2aa0066d7d78a5807f520387135ffb22", + "reference": "67289b6b2aa0066d7d78a5807f520387135ffb22" + }, + "require": { + "bower-asset/jquery": ">=1.2.2" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/jquery-ui-multiselect-widget", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "git@github.com:ehynds/jquery-ui-multiselect-widget.git", + "reference": "a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ehynds/jquery-ui-multiselect-widget/zipball/a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635", + "reference": "a5f3e0cffa6cc1d9fcd75c5977e3185b4bd5d635" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/jquery-validate", + "version": "1.16.0", + "source": { + "type": "git", + "url": "git@github.com:jzaefferer/jquery-validation.git", + "reference": "29b9c702b9c831419f9f774d2acb86f42f803e11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jzaefferer/jquery-validation/zipball/29b9c702b9c831419f9f774d2acb86f42f803e11", + "reference": "29b9c702b9c831419f9f774d2acb86f42f803e11" + }, + "require": { + "bower-asset/jquery": ">=1.7.2" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/jquery.numeric", + "version": "v1.5", + "source": { + "type": "git", + "url": "git@github.com:SamWM/jquery-numeric.git", + "reference": "bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SamWM/jquery-numeric/zipball/bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9", + "reference": "bb9ef0cfbddcd815d21bff6cdbae0133f85e57e9" + }, + "require": { + "bower-asset/jquery": ">=1.6" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/jsplumb", + "version": "1.7.10", + "source": { + "type": "git", + "url": "git@github.com:sporritt/jsPlumb.git", + "reference": "b2b347b3d20a172d4f73528365bcf01ef953017c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sporritt/jsPlumb/zipball/b2b347b3d20a172d4f73528365bcf01ef953017c", + "reference": "b2b347b3d20a172d4f73528365bcf01ef953017c" + }, + "type": "bower-asset", + "license": [ + "MIT/GPL2" + ] + }, + { + "name": "bower-asset/lightgallery", + "version": "1.4.0", + "source": { + "type": "git", + "url": "git@github.com:sachinchoolur/lightGallery.git", + "reference": "7b7603e9b1bbabee2228fb8411f34ad67993c130" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sachinchoolur/lightGallery/zipball/7b7603e9b1bbabee2228fb8411f34ad67993c130", + "reference": "7b7603e9b1bbabee2228fb8411f34ad67993c130" + }, + "require": { + "bower-asset/jquery": ">=1.7.0" + }, + "type": "bower-asset", + "license": [ + "GPLv3" + ] + }, + { + "name": "bower-asset/malihu-custom-scrollbar-plugin", + "version": "3.1.5", + "source": { + "type": "git", + "url": "git@github.com:malihu/malihu-custom-scrollbar-plugin.git", + "reference": "eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/malihu/malihu-custom-scrollbar-plugin/zipball/eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29", + "reference": "eac2b0af71a7ca06cc19e28d15ba60f6db2dfd29" + }, + "require": { + "bower-asset/jquery": ">=1.6", + "bower-asset/jquery-mousewheel": ">=3.0.6" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/moment", + "version": "2.18.1", + "source": { + "type": "git", + "url": "git@github.com:moment/moment.git", + "reference": "b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moment/moment/zipball/b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378", + "reference": "b8a7fc310eb3625e83fc0c8f1ea2840fa83c7378" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/moment-timezone", + "version": "0.5.13", + "source": { + "type": "git", + "url": "git@github.com:moment/moment-timezone.git", + "reference": "2b8da8f103f019949d45dc86fd6763960c8474d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/moment/moment-timezone/zipball/2b8da8f103f019949d45dc86fd6763960c8474d8", + "reference": "2b8da8f103f019949d45dc86fd6763960c8474d8" + }, + "require": { + "bower-asset/moment": ">=2.9.0" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/numeral", + "version": "2.0.6", + "source": { + "type": "git", + "url": "git@github.com:adamwdraper/Numeral-js.git", + "reference": "7de892ffb438af6e63b9c4f6aff0c9bc3932f09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/adamwdraper/Numeral-js/zipball/7de892ffb438af6e63b9c4f6aff0c9bc3932f09f", + "reference": "7de892ffb438af6e63b9c4f6aff0c9bc3932f09f" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/select2", + "version": "3.4.1", + "source": { + "type": "git", + "url": "https://github.com/select2/select2.git", + "reference": "13dc8a1ff3af6515c23dbca1ae3dcc0b0dc1b0c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/select2/select2/zipball/13dc8a1ff3af6515c23dbca1ae3dcc0b0dc1b0c1", + "reference": "13dc8a1ff3af6515c23dbca1ae3dcc0b0dc1b0c1" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/text", + "version": "2.0.15", + "source": { + "type": "git", + "url": "git@github.com:requirejs/text.git", + "reference": "d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/requirejs/text/zipball/d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f", + "reference": "d04de4ffd7bf5ba6cb80cdca2d40d4f6f52a1b1f" + }, + "type": "bower-asset", + "license": [ + "MIT" + ] + }, + { + "name": "bower-asset/timepicker", + "version": "1.11.11", + "source": { + "type": "git", + "url": "git@github.com:jonthornton/jquery-timepicker.git", + "reference": "3f26316a6f417c77737488d763e9a9055c20d8ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jonthornton/jquery-timepicker/zipball/3f26316a6f417c77737488d763e9a9055c20d8ae", + "reference": "3f26316a6f417c77737488d763e9a9055c20d8ae" + }, + "require": { + "bower-asset/jquery": ">=1.7" + }, + "type": "bower-asset", + "license": [ + "http://opensource.org/licenses/MIT" + ] + }, + { + "name": "bower-asset/underscore", + "version": "1.8.3", + "source": { + "type": "git", + "url": "git@github.com:jashkenas/underscore.git", + "reference": "e4743ab712b8ab42ad4ccb48b155034d02394e4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jashkenas/underscore/zipball/e4743ab712b8ab42ad4ccb48b155034d02394e4d", + "reference": "e4743ab712b8ab42ad4ccb48b155034d02394e4d" + }, + "type": "bower-asset" + }, + { + "name": "bower-asset/when", + "version": "2.4.0", + "source": { + "type": "git", + "url": "git@github.com:cujojs/when.git", + "reference": "a2acf1d86d150f5e9617e761b4c69c3158ed01ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cujojs/when/zipball/a2acf1d86d150f5e9617e761b4c69c3158ed01ea", + "reference": "a2acf1d86d150f5e9617e761b4c69c3158ed01ea" + }, + "type": "bower-asset" + }, + { + "name": "brick/math", + "version": "0.8.5", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "510f506185d4c988f97180426ec80fb3dbf51e04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/510f506185d4c988f97180426ec80fb3dbf51e04", + "reference": "510f506185d4c988f97180426ec80fb3dbf51e04", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "2.*", + "phpunit/phpunit": "7.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "brick", + "math" + ], + "time": "2019-02-12T10:40:15+00:00" + }, + { + "name": "components/jquery", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/components/jquery.git", + "reference": "09a1658378bc1f818856086396ebeab7d0ec2276" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jquery/zipball/09a1658378bc1f818856086396ebeab7d0ec2276", + "reference": "09a1658378bc1f818856086396ebeab7d0ec2276", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "jquery.js" + ], + "files": [ + "jquery.min.js", + "jquery.min.map" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Resig", + "email": "jeresig@gmail.com" + } + ], + "description": "jQuery JavaScript Library", + "homepage": "http://jquery.com", + "time": "2016-09-23T06:06:29+00:00" + }, + { + "name": "components/jqueryui", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/components/jqueryui.git", + "reference": "44ecf3794cc56b65954cc19737234a3119d036cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/components/jqueryui/zipball/44ecf3794cc56b65954cc19737234a3119d036cc", + "reference": "44ecf3794cc56b65954cc19737234a3119d036cc", + "shasum": "" + }, + "require": { + "components/jquery": ">=1.6" + }, + "type": "component", + "extra": { + "component": { + "name": "jquery-ui", + "scripts": [ + "jquery-ui.js" + ], + "files": [ + "ui/**", + "themes/**", + "jquery-ui.min.js" + ], + "shim": { + "deps": [ + "jquery" + ], + "exports": "jQuery" + } + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "jQuery UI Team", + "homepage": "http://jqueryui.com/about" + }, + { + "name": "Joern Zaefferer", + "email": "joern.zaefferer@gmail.com", + "homepage": "http://bassistance.de" + }, + { + "name": "Scott Gonzalez", + "email": "scott.gonzalez@gmail.com", + "homepage": "http://scottgonzalez.com" + }, + { + "name": "Kris Borchers", + "email": "kris.borchers@gmail.com", + "homepage": "http://krisborchers.com" + }, + { + "name": "Mike Sherov", + "email": "mike.sherov@gmail.com", + "homepage": "http://mike.sherov.com" + }, + { + "name": "TJ VanToll", + "email": "tj.vantoll@gmail.com", + "homepage": "http://tjvantoll.com" + }, + { + "name": "Corey Frang", + "email": "gnarf37@gmail.com", + "homepage": "http://gnarf.net" + }, + { + "name": "Felix Nagel", + "email": "info@felixnagel.com", + "homepage": "http://www.felixnagel.com" + } + ], + "description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.", + "time": "2016-09-16T05:47:55+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2019-01-28T09:30:10+00:00" + }, + { + "name": "composer/composer", + "version": "1.6.5", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/cli-prompt": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2018-05-04T09:44:59+00:00" + }, + { + "name": "composer/semver", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2019-03-19T17:25:45+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2019-03-26T10:23:26+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "defuse/php-encryption", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/defuse/php-encryption.git", + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "paragonie/random_compat": ">= 2", + "php": ">=5.4.0" + }, + "require-dev": { + "nikic/php-parser": "^2.0|^3.0|^4.0", + "phpunit/phpunit": "^4|^5" + }, + "bin": [ + "bin/generate-defuse-key" + ], + "type": "library", + "autoload": { + "psr-4": { + "Defuse\\Crypto\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Hornby", + "email": "taylor@defuse.ca", + "homepage": "https://defuse.ca/" + }, + { + "name": "Scott Arciszewski", + "email": "info@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "Secure PHP Encryption Library", + "keywords": [ + "aes", + "authenticated encryption", + "cipher", + "crypto", + "cryptography", + "encrypt", + "encryption", + "openssl", + "security", + "symmetric key cryptography" + ], + "time": "2018-07-24T23:27:56+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/53120e0eb10355388d6ccbe462f1fea34ddadb24", + "reference": "53120e0eb10355388d6ccbe462f1fea34ddadb24", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.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": "2019-03-25T19:12:02+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", + "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "alcaeus/mongo-php-adapter": "^1.1", + "doctrine/coding-standard": "^4.0", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^7.0", + "predis/predis": "~1.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "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": "Caching library offering an object-oriented API for many cache backends", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2018-08-21T18:01:43+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "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": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22T10:37:32+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "30e33f60f64deec87df728c02b107f82cdafad9d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d", + "reference": "30e33f60f64deec87df728c02b107f82cdafad9d", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/inflector": "^1.0", + "doctrine/lexer": "^1.0", + "doctrine/persistence": "^1.1", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.3", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^4.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "time": "2018-11-21T01:24:55+00:00" + }, + { + "name": "doctrine/data-fixtures", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a", + "reference": "3a1e2c3c600e615a2dffe56d4ca0875cc5233e0a", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "php": "^7.1" + }, + "conflict": { + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/dbal": "^2.5.4", + "doctrine/orm": "^2.5.4", + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM with PHP 7", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database" + ], + "time": "2018-03-20T09:06:36+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.7.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "c0e5736016a51b427a8cba8bc470fbea78165819" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/c0e5736016a51b427a8cba8bc470fbea78165819", + "reference": "c0e5736016a51b427a8cba8bc470fbea78165819", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.7.1", + "ext-pdo": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0", + "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", + "symfony/console": "^2.0.5||^3.0", + "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "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" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2018-07-13T04:49:01+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/703fad32e4c8cbe609caf45a71a1d4266c830f0f", + "reference": "703fad32e4c8cbe609caf45a71a1d4266c830f0f", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^2.5.12", + "doctrine/doctrine-cache-bundle": "~1.2", + "jdorn/sql-formatter": "^1.2.16", + "php": "^5.5.9|^7.0", + "symfony/console": "~2.7|~3.0|~4.0", + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0", + "symfony/framework-bundle": "^2.7.22|~3.0|~4.0" + }, + "conflict": { + "symfony/http-foundation": "<2.6" + }, + "require-dev": { + "doctrine/orm": "~2.4", + "phpunit/phpunit": "^4.8.36|^5.7|^6.4", + "satooshi/php-coveralls": "^1.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", + "symfony/property-info": "~2.8|~3.0|~4.0", + "symfony/validator": "~2.7|~3.0|~4.0", + "symfony/web-profiler-bundle": "~2.7|~3.0|~4.0", + "symfony/yaml": "~2.7|~3.0|~4.0", + "twig/twig": "~1.26|~2.0" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "time": "2018-04-19T14:07:39+00:00" + }, + { + "name": "doctrine/doctrine-cache-bundle", + "version": "1.3.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineCacheBundle.git", + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/5514c90d9fb595e1095e6d66ebb98ce9ef049927", + "reference": "5514c90d9fb595e1095e6d66ebb98ce9ef049927", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.4.2", + "doctrine/inflector": "~1.0", + "php": ">=5.3.2", + "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "instaclick/coding-standard": "~1.1", + "instaclick/object-calisthenics-sniffs": "dev-master", + "instaclick/symfony2-coding-standard": "dev-remaster", + "phpunit/phpunit": "~4.8.36|~5.6|~6.5|~7.0", + "predis/predis": "~0.8", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "~1.5", + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/finder": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", + "symfony/security-acl": "~2.7|~3.3", + "symfony/validator": "~2.7|~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" + }, + "suggest": { + "symfony/security-acl": "For using this bundle to cache ACLs" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Fabio B. Silva", + "email": "fabio.bat.silva@gmail.com" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@hotmail.com" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Bundle for Doctrine Cache", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2018-11-09T06:25:35+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "v2.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/74b8cc70a4a25b774628ee59f4cdf3623a146273", + "reference": "74b8cc70a4a25b774628ee59f4cdf3623a146273", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "~1.0", + "doctrine/doctrine-bundle": "~1.0", + "php": ">=5.3.2", + "symfony/doctrine-bridge": "~2.7|~3.0|~4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "time": "2017-10-30T19:26:42+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Event Manager component", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "eventdispatcher", + "eventmanager" + ], + "time": "2018-06-11T11:59:03+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "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": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2018-01-09T20:05:19+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "a2c590166b2133a4633738648b6b064edae0814a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" + }, + "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://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2019-03-17T17:37:11+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": "doctrine/orm", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "434820973cadf2da2d66e7184be370084cc32ca8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/434820973cadf2da2d66e7184be370084cc32ca8", + "reference": "434820973cadf2da2d66e7184be370084cc32ca8", + "shasum": "" + }, + "require": { + "doctrine/annotations": "~1.5", + "doctrine/cache": "~1.6", + "doctrine/collections": "^1.4", + "doctrine/common": "^2.7.1", + "doctrine/dbal": "^2.6", + "doctrine/instantiator": "~1.1", + "ext-pdo": "*", + "php": "^7.1", + "symfony/console": "~3.0|~4.0" + }, + "require-dev": { + "doctrine/coding-standard": "^1.0", + "phpunit/phpunit": "^6.5", + "squizlabs/php_codesniffer": "^3.2", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "lib/Doctrine/ORM" + } + }, + "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": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2018-11-20T23:46:46+00:00" + }, + { + "name": "doctrine/persistence", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", + "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "doctrine/event-manager": "^1.0", + "doctrine/reflection": "^1.0", + "php": "^7.1" + }, + "conflict": { + "doctrine/common": "<2.10@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^5.0", + "phpstan/phpstan": "^0.8", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "time": "2018-11-21T00:33:13+00:00" + }, + { + "name": "doctrine/reflection", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/reflection.git", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^4.0", + "doctrine/common": "^2.8", + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpunit/phpunit": "^7.0", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "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" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Doctrine Reflection component", + "homepage": "https://www.doctrine-project.org/projects/reflection.html", + "keywords": [ + "reflection" + ], + "time": "2018-06-14T14:45:07+00:00" + }, + { + "name": "escapestudios/wsse-authentication-bundle", + "version": "2.3.0", + "target-dir": "Escape/WSSEAuthenticationBundle", + "source": { + "type": "git", + "url": "https://github.com/djoos/EscapeWSSEAuthenticationBundle.git", + "reference": "fe5585f20570c89a3e6f9b889104c1263a734a22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/djoos/EscapeWSSEAuthenticationBundle/zipball/fe5585f20570c89a3e6f9b889104c1263a734a22", + "reference": "fe5585f20570c89a3e6f9b889104c1263a734a22", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "php": ">=5.3.9", + "symfony/framework-bundle": "~2.3|~3.0", + "symfony/security-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/finder": "~2.3|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-0": { + "Escape\\WSSEAuthenticationBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Joos", + "email": "david.joos@escapestudios.com" + }, + { + "name": "Community contributors", + "homepage": "https://github.com/djoos/EscapeWSSEAuthenticationBundle/graphs/contributors" + } + ], + "description": "Symfony2 bundle to implement WSSE authentication", + "homepage": "https://github.com/djoos/EscapeWSSEAuthenticationBundle", + "keywords": [ + "Authentication", + "bundle", + "wsse" + ], + "time": "2018-02-08T14:04:44+00:00" + }, + { + "name": "evenement/evenement", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/6ba9a777870ab49f417e703229d53931ed40fd7a", + "reference": "6ba9a777870ab49f417e703229d53931ed40fd7a", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0||^5.7||^4.8.35" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-0": { + "Evenement": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "time": "2017-07-17T17:39:19+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.10.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "d85d39da4576a6934b72480be6978fb10c860021" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021", + "reference": "d85d39da4576a6934b72480be6978fb10c860021", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "simpletest/simpletest": "^1.1" + }, + "type": "library", + "autoload": { + "psr-0": { + "HTMLPurifier": "library/" + }, + "files": [ + "library/HTMLPurifier.composer.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "time": "2018-02-23T01:58:20+00:00" + }, + { + "name": "fig/link-util", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link-util.git", + "reference": "1a07821801a148be4add11ab0603e4af55a72fac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac", + "reference": "1a07821801a148be4add11ab0603e4af55a72fac", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/link": "~1.0@dev" + }, + "require-dev": { + "phpunit/phpunit": "^5.1", + "squizlabs/php_codesniffer": "^2.3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common utility implementations for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "time": "2016-10-17T18:31:11+00:00" + }, + { + "name": "friendsofsymfony/jsrouting-bundle", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git", + "reference": "be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6", + "reference": "be6c7ec335d0f0cf3b6d152d6b64d5772f5919b6", + "shasum": "" + }, + "require": { + "php": "^5.3.9|^7.0", + "symfony/console": "~2.7||~3.0|^4.0", + "symfony/framework-bundle": "~2.7||~3.0|^4.0", + "symfony/serializer": "~2.7||~3.0|^4.0", + "willdurand/jsonp-callback-validator": "~1.0" + }, + "require-dev": { + "symfony/expression-language": "~2.7||~3.0|^4.0", + "symfony/phpunit-bridge": "^3.3|^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "FOS\\JsRoutingBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSJsRoutingBundle/contributors" + }, + { + "name": "William Durand", + "email": "will+git@drnd.me" + } + ], + "description": "A pretty nice way to expose your Symfony2 routing to client applications.", + "homepage": "http://friendsofsymfony.github.com", + "keywords": [ + "Js Routing", + "javascript", + "routing" + ], + "time": "2018-11-28T20:11:21+00:00" + }, + { + "name": "friendsofsymfony/rest-bundle", + "version": "1.8.0", + "target-dir": "FOS/RestBundle", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", + "reference": "c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1", + "reference": "c0f1aaf9e61a89b02eb5f2fbd2871d686706acb1", + "shasum": "" + }, + "require": { + "doctrine/inflector": "~1.0", + "php": "^5.3.9|~7.0", + "psr/log": "~1.0", + "symfony/finder": "~2.3|~3.0", + "symfony/framework-bundle": "~2.3|~3.0", + "symfony/http-kernel": "^2.3.24|~3.0", + "willdurand/jsonp-callback-validator": "~1.0", + "willdurand/negotiation": "~1.2" + }, + "conflict": { + "jms/serializer": "<0.13", + "jms/serializer-bundle": "<0.11", + "sensio/framework-extra-bundle": ">=3.0.13", + "symfony/validator": ">=2.5.0,<2.5.5" + }, + "require-dev": { + "jms/serializer": "~0.13|~1.0", + "jms/serializer-bundle": "~0.11|~1.0", + "phpoption/phpoption": "~1.1.0", + "sensio/framework-extra-bundle": "~2.0|~3.0,<3.0.13", + "sllh/php-cs-fixer-styleci-bridge": "^1.3", + "symfony/browser-kit": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/form": "~2.3|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/security": "~2.3|~3.0", + "symfony/serializer": "~2.3|~3.0", + "symfony/validator": "~2.3|~3.0", + "symfony/yaml": "~2.3|~3.0" + }, + "suggest": { + "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ~0.12|~1.0", + "sensio/framework-extra-bundle": "Add support for route annotations and the view response listener, requires ~2.0|~3.0", + "symfony/serializer": "Add support for basic serialization capabilities and xml decoding, requires ~2.3", + "symfony/validator": "Add support for validation capabilities in the ParamFetcher, requires ~2.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-0": { + "FOS\\RestBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lukas Kahwe Smith", + "email": "smith@pooteeweet.org" + }, + { + "name": "FriendsOfSymfony Community", + "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony", + "homepage": "http://friendsofsymfony.github.com", + "keywords": [ + "rest" + ], + "time": "2016-06-21T08:42:59+00:00" + }, + { + "name": "gedmo/doctrine-extensions", + "version": "v2.4.37", + "source": { + "type": "git", + "url": "https://github.com/Atlantic18/DoctrineExtensions.git", + "reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/5dd471f656e46d815f063bf3f12c667649ec7ffb", + "reference": "5dd471f656e46d815f063bf3f12c667649ec7ffb", + "shasum": "" + }, + "require": { + "behat/transliterator": "~1.2", + "doctrine/common": "~2.4", + "php": ">=5.3.2" + }, + "conflict": { + "doctrine/annotations": "<1.2" + }, + "require-dev": { + "doctrine/common": ">=2.5.0", + "doctrine/mongodb-odm": ">=1.0.2", + "doctrine/orm": ">=2.5.0", + "phpunit/phpunit": "^4.8.35|^5.7|^6.5", + "symfony/yaml": "~2.6|~3.0|~4.0" + }, + "suggest": { + "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", + "doctrine/orm": "to use the extensions with the ORM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gedmo\\": "lib/Gedmo" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Buchmann", + "email": "david@liip.ch" + }, + { + "name": "Gediminas Morkevicius", + "email": "gediminas.morkevicius@gmail.com" + }, + { + "name": "Gustavo Falco", + "email": "comfortablynumb84@gmail.com" + } + ], + "description": "Doctrine2 behavioral extensions", + "homepage": "http://gediminasm.org/", + "keywords": [ + "Blameable", + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree", + "uploadable" + ], + "time": "2019-03-17T18:16:12+00:00" + }, + { + "name": "gos/pnctl-event-loop-emitter", + "version": "v0.1.7", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/PNCTLEventLoopEmitter.git", + "reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/PNCTLEventLoopEmitter/zipball/93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3", + "reference": "93bb0f0e60e4e1f4025f77c8a4fd9ae0c3b45fb3", + "shasum": "" + }, + "require": { + "evenement/evenement": "~2.0|~3.0", + "php": ">=5.4", + "react/event-loop": "~0.4.0|^0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\PnctlEventLoopEmitter\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Pnctl event emitter for event loop", + "homepage": "https://github.com/GeniusesOfSymfony/PnctlEventLoopEmitter", + "keywords": [ + "Pnctl", + "event loop", + "reactphp" + ], + "time": "2018-04-09T11:12:07+00:00" + }, + { + "name": "gos/pubsub-router-bundle", + "version": "v0.3.5", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle.git", + "reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/PubSubRouterBundle/zipball/a3f9666455dc42f38a7ce31ca2fc55bd27421ea0", + "reference": "a3f9666455dc42f38a7ce31ca2fc55bd27421ea0", + "shasum": "" + }, + "require": { + "doctrine/cache": "~1.4", + "php": ">=5.5", + "symfony/console": "~3.4|~4.0", + "symfony/framework-bundle": "~3.4|~4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Bundle\\PubSubRouterBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Symfony PubSub Router Bundle", + "homepage": "https://github.com/GeniusesOfSymfony/PubSubRouterBundle", + "keywords": [ + "PubSub Bundle", + "WAMP", + "bundle", + "pubsub", + "redis", + "zmq" + ], + "time": "2018-10-04T17:09:23+00:00" + }, + { + "name": "gos/ratchet", + "version": "v0.3.6", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/Ratchet.git", + "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/Ratchet/zipball/f72ee4f70f24da1fc232537088e6c368ae4211e0", + "reference": "f72ee4f70f24da1fc232537088e6c368ae4211e0", + "shasum": "" + }, + "require": { + "guzzle/http": "^3.6", + "php": ">=5.3.9", + "react/socket": "^0.3 || ^0.4", + "symfony/http-foundation": "^2.2|^3.0|^4.0", + "symfony/routing": "^2.2|^3.0|^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ratchet\\": "src/Ratchet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "role": "Developer" + } + ], + "description": "PHP WebSocket library", + "homepage": "http://socketo.me", + "keywords": [ + "Ratchet", + "WebSockets", + "server", + "sockets" + ], + "time": "2017-12-12T16:15:11+00:00" + }, + { + "name": "gos/ratchet-stack", + "version": "v0.2.0", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/RatchetStack.git", + "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/RatchetStack/zipball/a7dfc817bf8b786c575022e290ab0769dbf09814", + "reference": "a7dfc817bf8b786c575022e290ab0769dbf09814", + "shasum": "" + }, + "require": { + "cboden/ratchet": "^0.3|^0.4", + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\RatchetStack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Ratchet Stack", + "homepage": "https://github.com/GeniusesOfSymfony/RatchetStack", + "keywords": [ + "Ratchet", + "application", + "stack" + ], + "time": "2018-05-02T13:03:51+00:00" + }, + { + "name": "gos/web-socket-bundle", + "version": "v1.8.11", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/WebSocketBundle.git", + "reference": "a26b71e9014a73b95ddbb02a813157563a296a48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketBundle/zipball/a26b71e9014a73b95ddbb02a813157563a296a48", + "reference": "a26b71e9014a73b95ddbb02a813157563a296a48", + "shasum": "" + }, + "require": { + "gos/pnctl-event-loop-emitter": "~0.1", + "gos/pubsub-router-bundle": "~0.2", + "gos/ratchet": "~0.3.5", + "gos/ratchet-stack": "~0.1", + "gos/websocket-client": "~0.1.0", + "php": ">=5.4", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "replace": { + "cboden/ratchet": "~0.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "suggest": { + "ext-amqp": "*", + "ext-libev": "*", + "ext-libevent": ">=0.0.5", + "ext-zmq": "*", + "ocramius/proxy-manager": "~1.0", + "symfony/proxy-manager-bridge": "~2.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Bundle\\WebSocketBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dare", + "email": "jeremy.d.dare@gmail.com" + }, + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + } + ], + "description": "Symfony Web Socket Bundle", + "homepage": "https://github.com/GeniusesOfSymfony/WebSocketBundle", + "keywords": [ + "Ratchet", + "WAMP", + "Web Socket Bundle", + "io", + "websocket" + ], + "time": "2017-09-29T16:00:43+00:00" + }, + { + "name": "gos/websocket-client", + "version": "v0.1.2", + "source": { + "type": "git", + "url": "https://github.com/GeniusesOfSymfony/WebSocketPhpClient.git", + "reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeniusesOfSymfony/WebSocketPhpClient/zipball/13bb38cb01acee648fea1a6ca4ad3dc6148da7fe", + "reference": "13bb38cb01acee648fea1a6ca4ad3dc6148da7fe", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Gos\\Component\\WebSocketClient\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Johann Saunier", + "email": "johann_27@hotmail.fr" + }, + { + "name": "Martin Bažík", + "email": "martin@bazo.sk" + } + ], + "description": "WAMP client in PHP", + "keywords": [ + "Ratchet", + "WAMP", + "websocket" + ], + "time": "2015-08-04T11:43:11+00:00" + }, + { + "name": "guzzle/guzzle", + "version": "v3.7.4", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b170b028c6bb5799640e46c8803015b0f9a45ed9", + "reference": "b170b028c6bb5799640e46c8803015b0f9a45ed9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": ">=2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "*", + "monolog/monolog": "1.*", + "phpunit/phpunit": "3.7.*", + "psr/log": "1.0.*", + "symfony/class-loader": "*", + "zendframework/zend-cache": "2.0.*", + "zendframework/zend-log": "2.0.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle\\Tests": "tests/", + "Guzzle": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "abandoned": "guzzlehttp/guzzle", + "time": "2013-10-02T20:47:00+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.5.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "9f83dded91781a01c63574e387eaa769be769115" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115", + "reference": "9f83dded91781a01c63574e387eaa769be769115", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2018-12-04T20:46:45+00:00" + }, + { + "name": "hwi/oauth-bundle", + "version": "0.5.3", + "source": { + "type": "git", + "url": "https://github.com/hwi/HWIOAuthBundle.git", + "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hwi/HWIOAuthBundle/zipball/50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", + "reference": "50f4bcbe5c217cfdf0f7f40a174b87199b76d1e1", + "shasum": "" + }, + "require": { + "kriswallsmith/buzz": "~0.13", + "php": "^5.3.3|^7.0", + "symfony/form": "^2.3|^3.0", + "symfony/framework-bundle": "^2.3|^3.0", + "symfony/options-resolver": "^2.3|^3.0", + "symfony/security-bundle": "^2.3|^3.0", + "symfony/templating": "^2.7|^3.0", + "symfony/yaml": "^2.3|^3.0" + }, + "conflict": { + "twig/twig": "<1.12" + }, + "require-dev": { + "doctrine/orm": "^2.3", + "friendsofphp/php-cs-fixer": "^2.0", + "friendsofsymfony/user-bundle": "^1.3|^2.0", + "phpunit/phpunit": "^4.8|^5.0", + "symfony/phpunit-bridge": "^2.7|^3.0", + "symfony/property-access": "^2.3|^3.0", + "symfony/stopwatch": "^2.5|^3.0", + "symfony/twig-bundle": "^2.3|^3.0", + "symfony/validator": "^2.3|^3.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "to use Doctrine user provider", + "friendsofsymfony/user-bundle": "to connect FOSUB with this bundle", + "symfony/property-access": "to use FOSUB integration with this bundle", + "symfony/twig-bundle": "to use the Twig hwi_oauth_* functions" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.5-dev" + } + }, + "autoload": { + "psr-4": { + "HWI\\Bundle\\OAuthBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Contributors", + "homepage": "https://github.com/hwi/HWIOAuthBundle/contributors" + }, + { + "name": "Joseph Bielawski", + "email": "stloyd@gmail.com" + }, + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + }, + { + "name": "Geoffrey Bachelet", + "email": "geoffrey.bachelet@gmail.com" + } + ], + "description": "Support for authenticating users using both OAuth1.0a and OAuth2 in Symfony2.", + "homepage": "http://github.com/hwi/HWIOAuthBundle", + "keywords": [ + "37signals", + "Authentication", + "Deezer", + "EVE Online", + "amazon", + "asana", + "auth0", + "azure", + "bitbucket", + "bitly", + "box", + "bufferapp", + "clever", + "dailymotion", + "deviantart", + "discogs", + "disqus", + "dropbox", + "eventbrite", + "facebook", + "firewall", + "fiware", + "flickr", + "foursquare", + "github", + "google", + "hubic", + "instagram", + "jawbone", + "jira", + "linkedin", + "mail.ru", + "oauth", + "oauth1", + "oauth2", + "odnoklassniki", + "paypal", + "qq", + "reddit", + "runkeeper", + "salesforce", + "security", + "sensio connect", + "sina weibo", + "slack", + "sound cloud", + "spotify", + "stack exchange", + "stereomood", + "strava", + "toshl", + "trakt", + "trello", + "twitch", + "twitter", + "vkontakte", + "wechat", + "windows live", + "wordpress", + "wunderlist", + "xing", + "yahoo", + "yandex", + "youtube" + ], + "time": "2017-01-08T14:13:58+00:00" + }, + { + "name": "imagine/imagine", + "version": "v0.7.1", + "source": { + "type": "git", + "url": "https://github.com/avalanche123/Imagine.git", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/a9a702a946073cbca166718f1b02a1e72d742daa", + "reference": "a9a702a946073cbca166718f1b02a1e72d742daa", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "sami/sami": "^3.3", + "symfony/phpunit-bridge": "^3.2" + }, + "suggest": { + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, + "autoload": { + "psr-0": { + "Imagine": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" + } + ], + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ], + "time": "2017-05-16T10:31:22+00:00" + }, + { + "name": "incenteev/composer-parameter-handler", + "version": "v2.1.3", + "source": { + "type": "git", + "url": "https://github.com/Incenteev/ParameterHandler.git", + "reference": "933c45a34814f27f2345c11c37d46b3ca7303550" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550", + "reference": "933c45a34814f27f2345c11c37d46b3ca7303550", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/yaml": "^2.3 || ^3.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "^1.0@dev", + "symfony/filesystem": "^2.3 || ^3 || ^4", + "symfony/phpunit-bridge": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Incenteev\\ParameterHandler\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Composer script handling your ignored parameter file", + "homepage": "https://github.com/Incenteev/ParameterHandler", + "keywords": [ + "parameters management" + ], + "time": "2018-02-13T18:05:56+00:00" + }, + { + "name": "jdorn/sql-formatter", + "version": "v1.2.17", + "source": { + "type": "git", + "url": "https://github.com/jdorn/sql-formatter.git", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "lib" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/jdorn/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "time": "2014-01-12T16:20:24+00:00" + }, + { + "name": "jms/cg", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/cg-library.git", + "reference": "2152ea2c48f746a676debb841644ae64cae27835" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/cg-library/zipball/2152ea2c48f746a676debb841644ae64cae27835", + "reference": "2152ea2c48f746a676debb841644ae64cae27835", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": ">=4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-0": { + "CG\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Toolset for generating PHP code", + "keywords": [ + "code generation" + ], + "time": "2016-04-07T10:21:44+00:00" + }, + { + "name": "jms/metadata", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/e5854ab1aa643623dc64adde718a8eec32b957a8", + "reference": "e5854ab1aa643623dc64adde718a8eec32b957a8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2018-10-26T12:40:10+00:00" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "93d6e03fcb71d45854cc44b5a84d645c02c5d763" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/93d6e03fcb71d45854cc44b5a84d645c02c5d763", + "reference": "93d6e03fcb71d45854cc44b5a84d645c02c5d763", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "doctrine/instantiator": "^1.0.3", + "jms/metadata": "^1.3", + "jms/parser-lib": "1.*", + "php": "^5.5|^7.0", + "phpcollection/phpcollection": "~0.1", + "phpoption/phpoption": "^1.1" + }, + "conflict": { + "twig/twig": "<1.12" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "^1.3|^2.0", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.1.5", + "phpunit/phpunit": "^4.8|^5.0", + "propel/propel1": "~1.7", + "psr/container": "^1.0", + "symfony/dependency-injection": "^2.7|^3.3|^4.0", + "symfony/expression-language": "^2.6|^3.0", + "symfony/filesystem": "^2.1", + "symfony/form": "~2.1|^3.0", + "symfony/translation": "^2.1|^3.0", + "symfony/validator": "^2.2|^3.0", + "symfony/yaml": "^2.1|^3.0", + "twig/twig": "~1.12|~2.0" + }, + "suggest": { + "doctrine/cache": "Required if you like to use cache functionality.", + "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.11-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2018-06-01T12:10:12+00:00" + }, + { + "name": "jms/serializer-bundle", + "version": "1.5.0", + "target-dir": "JMS/SerializerBundle", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", + "reference": "85ee039a2b7f89d77c403e33cee7b43a875c31e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/85ee039a2b7f89d77c403e33cee7b43a875c31e5", + "reference": "85ee039a2b7f89d77c403e33cee7b43a875c31e5", + "shasum": "" + }, + "require": { + "jms/serializer": "^1.7", + "php": ">=5.4.0", + "phpoption/phpoption": "^1.1.0", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "doctrine/doctrine-bundle": "*", + "doctrine/orm": "*", + "phpunit/phpunit": "^4.2|^5.0", + "symfony/browser-kit": "*", + "symfony/class-loader": "*", + "symfony/css-selector": "*", + "symfony/expression-language": "~2.6|~3.0", + "symfony/finder": "*", + "symfony/form": "*", + "symfony/process": "*", + "symfony/stopwatch": "*", + "symfony/twig-bundle": "*", + "symfony/validator": "*", + "symfony/yaml": "*" + }, + "suggest": { + "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\SerializerBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Allows you to easily serialize, and deserialize data of any complexity", + "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2017-05-10T10:17:17+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.8", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "reference": "dcb6e1006bb5fd1e392b4daa68932880f37550d4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2019-01-14T23:55:14+00:00" + }, + { + "name": "knplabs/gaufrette", + "version": "v0.8.1", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/Gaufrette.git", + "reference": "80cc42e1c5f008a8fc9d02e856c60140c7d1ea19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/Gaufrette/zipball/80cc42e1c5f008a8fc9d02e856c60140c7d1ea19", + "reference": "80cc42e1c5f008a8fc9d02e856c60140c7d1ea19", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "conflict": { + "microsoft/windowsazure": "<0.4.3" + }, + "require-dev": { + "akeneo/phpspec-skip-example-extension": "^4.0", + "amazonwebservices/aws-sdk-for-php": "1.5.*", + "aws/aws-sdk-php": "^2.4.12||~3", + "doctrine/dbal": ">=2.3", + "dropbox-php/dropbox-php": "*", + "google/apiclient": "~1.1.3", + "league/flysystem": "~1.0", + "microsoft/azure-storage-blob": "^1.0", + "mikey179/vfsstream": "~1.2.0", + "mongodb/mongodb": "^1.1", + "phpseclib/phpseclib": "^2.0", + "phpspec/phpspec": "~5.1", + "phpunit/phpunit": "~7.5", + "rackspace/php-opencloud": "^1.9.2" + }, + "suggest": { + "ext-curl": "*", + "ext-fileinfo": "This extension is used to automatically detect the content-type of a file in the AwsS3, OpenCloud, AzureBlogStorage and GoogleCloudStorage adapters", + "ext-mbstring": "*", + "gaufrette/aws-s3-adapter": "to use AwsS3 adapter (supports SDK v2 and v3)", + "gaufrette/azure-blob-storage-adapter": "to use AzureBlobStorage adapter", + "gaufrette/doctrine-dbal-adapter": "to use DBAL adapter", + "gaufrette/flysystem-adapter": "to use Flysystem adapter", + "gaufrette/ftp-adapter": "to use Ftp adapter", + "gaufrette/gridfs-adapter": "to use GridFS adapter", + "gaufrette/in-memory-adapter": "to use InMemory adapter", + "gaufrette/local-adapter": "to use Local adapter", + "gaufrette/opencloud-adapter": "to use Opencloud adapter", + "gaufrette/phpseclib-sftp-adapter": "to use PhpseclibSftp adapter", + "gaufrette/zip-adapter": "to use Zip adapter", + "google/apiclient": "to use GoogleCloudStorage adapter", + "knplabs/knp-gaufrette-bundle": "to use with Symfony2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Gaufrette": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "The contributors", + "homepage": "http://github.com/knplabs/Gaufrette/contributors" + }, + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + } + ], + "description": "PHP library that provides a filesystem abstraction layer", + "homepage": "http://knplabs.com", + "keywords": [ + "abstraction", + "file", + "filesystem", + "media" + ], + "time": "2019-01-11T10:04:44+00:00" + }, + { + "name": "knplabs/knp-gaufrette-bundle", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpGaufretteBundle.git", + "reference": "44cf552e14031517516458b0e394f16dd36a131b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpGaufretteBundle/zipball/44cf552e14031517516458b0e394f16dd36a131b", + "reference": "44cf552e14031517516458b0e394f16dd36a131b", + "shasum": "" + }, + "require": { + "knplabs/gaufrette": "~0.1.7|~0.2", + "symfony/framework-bundle": "~2.0|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.2", + "symfony/console": "~2.0|~3.0", + "symfony/yaml": "~2.0|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Bundle\\GaufretteBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "The contributors", + "homepage": "https://github.com/knplabs/KnpGaufretteBundle/contributors" + }, + { + "name": "Antoine Hérault", + "email": "antoine.herault@gmail.com" + } + ], + "description": "Allows to easily use the Gaufrette library in a Symfony project", + "homepage": "http://knplabs.com", + "keywords": [ + "abstraction", + "file", + "filesystem", + "media" + ], + "time": "2016-01-16T00:12:11+00:00" + }, + { + "name": "knplabs/knp-menu", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpMenu.git", + "reference": "655630a1db0b72108262d1a844de3b1ba0885be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/655630a1db0b72108262d1a844de3b1ba0885be5", + "reference": "655630a1db0b72108262d1a844de3b1ba0885be5", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/http-foundation": "~2.4|~3.0|^4.0", + "symfony/phpunit-bridge": "~3.3|^4.0", + "symfony/routing": "~2.3|~3.0|^4.0", + "twig/twig": "~1.16|~2.0" + }, + "suggest": { + "twig/twig": "for the TwigRenderer and the integration with your templates" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Menu\\": "src/Knp/Menu" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/KnpLabs/KnpMenu/contributors" + }, + { + "name": "KnpLabs", + "homepage": "https://knplabs.com" + } + ], + "description": "An object oriented menu library", + "homepage": "https://knplabs.com", + "keywords": [ + "menu", + "tree" + ], + "time": "2017-11-18T20:49:26+00:00" + }, + { + "name": "knplabs/knp-menu-bundle", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpMenuBundle.git", + "reference": "6bea43eb84fc67c43ab2b43709194efffa8a8ac0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/6bea43eb84fc67c43ab2b43709194efffa8a8ac0", + "reference": "6bea43eb84fc67c43ab2b43709194efffa8a8ac0", + "shasum": "" + }, + "require": { + "knplabs/knp-menu": "~2.3", + "php": "^5.6 || ^7", + "symfony/framework-bundle": "~2.7|~3.0 | ^4.0" + }, + "require-dev": { + "symfony/expression-language": "~2.7|~3.0 | ^4.0", + "symfony/phpunit-bridge": "^3.3 | ^4.0", + "symfony/templating": "~2.7|~3.0 | ^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Bundle\\MenuBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Knplabs", + "homepage": "http://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/KnpLabs/KnpMenuBundle/contributors" + } + ], + "description": "This bundle provides an integration of the KnpMenu library", + "keywords": [ + "menu" + ], + "time": "2017-12-24T16:32:39+00:00" + }, + { + "name": "kriswallsmith/assetic", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/kriswallsmith/assetic.git", + "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1", + "reference": "e911c437dbdf006a8f62c2f59b15b2d69a5e0aa1", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/process": "~2.1|~3.0" + }, + "conflict": { + "twig/twig": "<1.27" + }, + "require-dev": { + "leafo/lessphp": "^0.3.7", + "leafo/scssphp": "~0.1", + "meenie/javascript-packer": "^1.1", + "mrclay/minify": "<2.3", + "natxet/cssmin": "3.0.4", + "patchwork/jsqueeze": "~1.0|~2.0", + "phpunit/phpunit": "~4.8 || ^5.6", + "psr/log": "~1.0", + "ptachoire/cssembed": "~1.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "twig/twig": "~1.23|~2.0", + "yfix/packager": "dev-master" + }, + "suggest": { + "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler", + "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler", + "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin", + "patchwork/jsqueeze": "Assetic provides the integration with the JSqueeze JavaScript compressor", + "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris", + "twig/twig": "Assetic provides the integration with the Twig templating engine" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-0": { + "Assetic": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kris Wallsmith", + "email": "kris.wallsmith@gmail.com", + "homepage": "http://kriswallsmith.net/" + } + ], + "description": "Asset Management for PHP", + "homepage": "https://github.com/kriswallsmith/assetic", + "keywords": [ + "assets", + "compression", + "minification" + ], + "time": "2016-11-11T18:43:20+00:00" + }, + { + "name": "kriswallsmith/buzz", + "version": "v0.16.1", + "source": { + "type": "git", + "url": "https://github.com/kriswallsmith/Buzz.git", + "reference": "4977b7d44dbef49cdc641f14be6512fdcfe32f12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kriswallsmith/Buzz/zipball/4977b7d44dbef49cdc641f14be6512fdcfe32f12", + "reference": "4977b7d44dbef49cdc641f14be6512fdcfe32f12", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.4", + "php": "^5.4 || ^7.0" + }, + "require-dev": { + "php-http/client-integration-tests": "^0.6.2", + "symfony/phpunit-bridge": "^3.4 || ^4.0" + }, + "suggest": { + "ext-curl": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Buzz\\": "lib/Buzz" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kris Wallsmith", + "email": "kris.wallsmith@gmail.com", + "homepage": "http://kriswallsmith.net/" + } + ], + "description": "Lightweight HTTP client", + "homepage": "https://github.com/kriswallsmith/Buzz", + "keywords": [ + "curl", + "http client" + ], + "time": "2018-03-19T10:34:40+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "3.2.5", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", + "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=5.5" + }, + "require-dev": { + "mdanter/ecc": "~0.3.1", + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "~4.5", + "squizlabs/php_codesniffer": "~2.3" + }, + "suggest": { + "mdanter/ecc": "Required to use Elliptic Curves based algorithms." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "time": "2018-11-11T12:22:26+00:00" + }, + { + "name": "leafo/scssphp", + "version": "v0.6.7", + "source": { + "type": "git", + "url": "https://github.com/leafo/scssphp.git", + "reference": "562213cd803e42ea53b0735554794c4022d8db89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/leafo/scssphp/zipball/562213cd803e42ea53b0735554794c4022d8db89", + "reference": "562213cd803e42ea53b0735554794c4022d8db89", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "kherge/box": "~2.5", + "phpunit/phpunit": "~3.7", + "squizlabs/php_codesniffer": "~2.5" + }, + "bin": [ + "bin/pscss" + ], + "type": "library", + "autoload": { + "psr-4": { + "Leafo\\ScssPhp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Leaf Corcoran", + "email": "leafot@gmail.com", + "homepage": "http://leafo.net" + } + ], + "description": "scssphp is a compiler for SCSS written in PHP.", + "homepage": "http://leafo.github.io/scssphp/", + "keywords": [ + "css", + "less", + "sass", + "scss", + "stylesheet" + ], + "time": "2017-02-23T05:07:33+00:00" + }, + { + "name": "league/event", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/event.git", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "~1.0.1", + "phpspec/phpspec": "^2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Event\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Event package", + "keywords": [ + "emitter", + "event", + "listener" + ], + "time": "2018-11-26T11:52:41+00:00" + }, + { + "name": "league/oauth2-server", + "version": "7.3.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth2-server.git", + "reference": "c7f499849704ebe2c60b45b6d6bb231df5601d4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/c7f499849704ebe2c60b45b6d6bb231df5601d4a", + "reference": "c7f499849704ebe2c60b45b6d6bb231df5601d4a", + "shasum": "" + }, + "require": { + "defuse/php-encryption": "^2.1", + "ext-openssl": "*", + "lcobucci/jwt": "^3.2.2", + "league/event": "^2.1", + "php": ">=7.0.0", + "psr/http-message": "^1.0.1" + }, + "replace": { + "league/oauth2server": "*", + "lncd/oauth2": "*" + }, + "require-dev": { + "phpstan/phpstan": "^0.9.2", + "phpstan/phpstan-phpunit": "^0.9.4", + "phpstan/phpstan-strict-rules": "^0.9.0", + "phpunit/phpunit": "^6.3 || ^7.0", + "roave/security-advisories": "dev-master", + "zendframework/zend-diactoros": "^1.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\OAuth2\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Bilbie", + "email": "hello@alexbilbie.com", + "homepage": "http://www.alexbilbie.com", + "role": "Developer" + }, + { + "name": "Andy Millington", + "email": "andrew@noexceptions.io", + "homepage": "https://www.noexceptions.io", + "role": "Developer" + } + ], + "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", + "homepage": "https://oauth2.thephpleague.com/", + "keywords": [ + "Authentication", + "api", + "auth", + "authorisation", + "authorization", + "oauth", + "oauth 2", + "oauth 2.0", + "oauth2", + "protect", + "resource", + "secure", + "server" + ], + "time": "2019-03-29T18:19:35+00:00" + }, + { + "name": "lexik/maintenance-bundle", + "version": "v2.1.5", + "source": { + "type": "git", + "url": "https://github.com/lexik/LexikMaintenanceBundle.git", + "reference": "3a3e916776934a95834235e4a1d71e4595d515f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lexik/LexikMaintenanceBundle/zipball/3a3e916776934a95834235e4a1d71e4595d515f5", + "reference": "3a3e916776934a95834235e4a1d71e4595d515f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/framework-bundle": "~2.7|~3.0|^4.0", + "symfony/translation": "~2.7|~3.0|^4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.7.11", + "symfony/phpunit-bridge": "~2.7|~3.0|^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Lexik\\Bundle\\MaintenanceBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dev Lexik", + "email": "dev@lexik.fr" + }, + { + "name": "Gilles Gauthier", + "email": "g.gauthier@lexik.fr" + }, + { + "name": "Djuri Baars", + "email": "info@djurict.nl" + } + ], + "description": "This bundle allows you to place your website in maintenance mode by calling two commands from your console.", + "homepage": "https://github.com/lexik/LexikMaintenanceBundle", + "keywords": [ + "Symfony2", + "bundle", + "maintenance" + ], + "time": "2018-02-14T10:18:33+00:00" + }, + { + "name": "liip/imagine-bundle", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/liip/LiipImagineBundle.git", + "reference": "3084c77e984ec669e0d645250a3cb1077d8b92f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/3084c77e984ec669e0d645250a3cb1077d8b92f6", + "reference": "3084c77e984ec669e0d645250a3cb1077d8b92f6", + "shasum": "" + }, + "require": { + "imagine/imagine": "^0.6.3|^0.7.0,<0.8", + "php": "^5.3.9|^7.0", + "symfony/asset": "~2.3|~3.0", + "symfony/filesystem": "~2.3|~3.0", + "symfony/finder": "~2.3|~3.0", + "symfony/framework-bundle": "~2.3|~3.0", + "symfony/options-resolver": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0", + "symfony/templating": "~2.3|~3.0", + "symfony/translation": "~2.3|~3.0" + }, + "require-dev": { + "amazonwebservices/aws-sdk-for-php": "~1.0", + "aws/aws-sdk-php": "~2.4", + "doctrine/cache": "~1.1", + "doctrine/orm": "~2.3", + "ext-gd": "*", + "friendsofphp/php-cs-fixer": "~1.0", + "phpunit/phpunit": "~4.3|~5.0", + "psr/log": "~1.0", + "satooshi/php-coveralls": "~1.0", + "sllh/php-cs-fixer-styleci-bridge": "~2.1", + "symfony/browser-kit": "~2.3|~3.0", + "symfony/console": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/form": "~2.3|~3.0", + "symfony/phpunit-bridge": "~2.3|~3.0", + "symfony/validator": "~2.3|~3.0", + "symfony/yaml": "~2.3|~3.0", + "twig/twig": "~1.12|~2.0" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "required on PHP >= 7.0 to use mongo components with mongodb extension", + "amazonwebservices/aws-sdk-for-php": "required to use AWS version 1 cache resolver", + "aws/aws-sdk-php": "required to use AWS version 2/3 cache resolver", + "doctrine/mongodb-odm": "required to use mongodb-backed doctrine components", + "enqueue/enqueue-bundle": "add if you like to process images in background", + "ext-exif": "required to read EXIF metadata from images", + "ext-gd": "required to use gd driver", + "ext-gmagick": "required to use gmagick driver", + "ext-imagick": "required to use imagick driver", + "ext-mongo": "required for mongodb components on PHP <7.0", + "ext-mongodb": "required for mongodb components on PHP >=7.0", + "league/flysystem": "required to use FlySystem data loader or cache resolver", + "monolog/monolog": "A psr/log compatible logger is required to enable logging", + "twig/twig": "required to use the provided Twig extension. Version 1.12 or greater needed" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-1.0": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Liip\\ImagineBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Liip and other contributors", + "homepage": "https://github.com/liip/LiipImagineBundle/contributors" + } + ], + "description": "This bundle provides an image manipulation abstraction toolkit for Symfony-based projects.", + "homepage": "http://liip.ch", + "keywords": [ + "bundle", + "image", + "imagine", + "liip", + "manipulation", + "photos", + "pictures", + "symfony", + "transformation" + ], + "time": "2017-09-09T03:53:30+00:00" + }, + { + "name": "liuggio/ExcelBundle", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/liuggio/ExcelBundle.git", + "reference": "b4fe94b64449490a1b5fbbce827c2501be335126" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/liuggio/ExcelBundle/zipball/b4fe94b64449490a1b5fbbce827c2501be335126", + "reference": "b4fe94b64449490a1b5fbbce827c2501be335126", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "phpoffice/phpexcel": "~1.8.1", + "symfony/framework-bundle": "~2.6|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.6", + "sensio/framework-extra-bundle": "~2.3|~3.0", + "symfony/browser-kit": "~2.6|~3.0", + "symfony/class-loader": "~2.6|~3.0", + "symfony/finder": "~2.6|~3.0", + "symfony/form": "~2.6|~3.0", + "symfony/validator": "~2.6|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "exclude-from-classmap": [ + "/Tests/" + ], + "psr-4": { + "Liuggio\\ExcelBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ExcelBundle Contributors", + "homepage": "https://github.com/liuggio/ExcelBundle#contributors" + }, + { + "name": "Giulio De Donato", + "email": "liuggio@gmail.com" + } + ], + "description": "This is a Symfony2 Bundle helps you to read and write Excel files (including pdf, xlsx, odt), thanks to the PHPExcel library", + "homepage": "http://www.welcometothebundle.com", + "keywords": [ + "Symfony2", + "bundle", + "excel", + "xls" + ], + "time": "2016-06-20T17:11:22+00:00" + }, + { + "name": "michelf/php-markdown", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/michelf/php-markdown.git", + "reference": "01ab082b355bf188d907b9929cd99b2923053495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495", + "reference": "01ab082b355bf188d907b9929cd99b2923053495", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Michelf\\": "Michelf/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" + }, + { + "name": "John Gruber", + "homepage": "https://daringfireball.net/" + } + ], + "description": "PHP Markdown", + "homepage": "https://michelf.ca/projects/php-markdown/", + "keywords": [ + "markdown" + ], + "time": "2018-01-15T00:49:33+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2017-06-19T01:22:40+00:00" + }, + { + "name": "mtdowling/cron-expression", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/mtdowling/cron-expression.git", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", + "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2017-01-23T04:29:33+00:00" + }, + { + "name": "mustangostang/spyc", + "version": "0.6.2", + "source": { + "type": "git", + "url": "https://github.com/mustangostang/spyc.git", + "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mustangostang/spyc/zipball/23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", + "reference": "23c35ae854d835f2d7bcc3e3ad743d7e57a8c14d", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "files": [ + "Spyc.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "mustangostang", + "email": "vlad.andersen@gmail.com" + } + ], + "description": "A simple YAML loader/dumper class for PHP", + "homepage": "https://github.com/mustangostang/spyc/", + "keywords": [ + "spyc", + "yaml", + "yml" + ], + "time": "2017-02-24T16:06:33+00:00" + }, + { + "name": "nelmio/api-doc-bundle", + "version": "2.13.3", + "target-dir": "Nelmio/ApiDocBundle", + "source": { + "type": "git", + "url": "https://github.com/nelmio/NelmioApiDocBundle.git", + "reference": "f0a606b6362c363043e01aa079bee2b0b5eb47a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/f0a606b6362c363043e01aa079bee2b0b5eb47a2", + "reference": "f0a606b6362c363043e01aa079bee2b0b5eb47a2", + "shasum": "" + }, + "require": { + "michelf/php-markdown": "~1.4", + "php": ">=5.4", + "symfony/console": "~2.3|~3.0|~4.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0", + "symfony/twig-bundle": "~2.3|~3.0|~4.0" + }, + "conflict": { + "jms/serializer": "<0.12", + "jms/serializer-bundle": "<0.11", + "symfony/symfony": "~2.7.8", + "twig/twig": "<1.12" + }, + "require-dev": { + "doctrine/doctrine-bundle": "~1.5", + "doctrine/orm": "~2.3", + "dunglas/api-bundle": "~1.0", + "friendsofsymfony/rest-bundle": "~1.0|~2.0", + "jms/serializer-bundle": ">=0.11", + "sensio/framework-extra-bundle": "~3.0", + "symfony/browser-kit": "~2.3|~3.0|~4.0", + "symfony/css-selector": "~2.3|~3.0|~4.0", + "symfony/finder": "~2.3|~3.0|~4.0", + "symfony/form": "~2.3|~3.0|~4.0", + "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", + "symfony/serializer": "~2.7|~3.0|~4.0", + "symfony/validator": "~2.3|~3.0|~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0" + }, + "suggest": { + "dunglas/api-bundle": "For making use of resources definitions of DunglasApiBundle.", + "friendsofsymfony/rest-bundle": "For making use of REST information in the doc.", + "jms/serializer": "For making use of serializer information in the doc.", + "symfony/form": "For using form definitions as input.", + "symfony/validator": "For making use of validator information in the doc." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-2.x": "2.13-dev" + } + }, + "autoload": { + "psr-0": { + "Nelmio\\ApiDocBundle": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nelmio", + "homepage": "http://nelm.io" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/nelmio/NelmioApiDocBundle/contributors" + } + ], + "description": "Generates documentation for your REST API from annotations", + "keywords": [ + "api", + "doc", + "documentation", + "rest" + ], + "time": "2017-12-05T06:14:09+00:00" + }, + { + "name": "nelmio/security-bundle", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/nelmio/NelmioSecurityBundle.git", + "reference": "fe1d31eb23c13e0918de9a66df9d315648c5d3d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/fe1d31eb23c13e0918de9a66df9d315648c5d3d1", + "reference": "fe1d31eb23c13e0918de9a66df9d315648c5d3d1", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0", + "symfony/security": "~2.3|~3.0|~4.0", + "ua-parser/uap-php": "^3.4.4" + }, + "require-dev": { + "doctrine/cache": "^1.0", + "psr/cache": "^1.0", + "symfony/phpunit-bridge": "^3.2|~4.0", + "symfony/yaml": "~2.3|~3.0|~4.0", + "twig/twig": "^1.24" + }, + "suggest": { + "ua-parser/uap-php": "To allow adapt CSP directives given the user-agent" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Nelmio\\SecurityBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nelmio", + "homepage": "http://nelm.io" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/nelmio/NelmioSecurityBundle/contributors" + } + ], + "description": "Extra security-related features for Symfony: signed/encrypted cookies, HTTPS/SSL/HSTS handling, cookie session storage, ...", + "keywords": [ + "security" + ], + "time": "2018-03-21T14:33:42+00:00" + }, + { + "name": "nesbot/carbon", + "version": "1.29.2", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ed6aa898982f441ccc9b2acdec51490f2bc5d337", + "reference": "ed6aa898982f441ccc9b2acdec51490f2bc5d337", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2", + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + } + ], + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "time": "2018-05-29T15:23:46+00:00" + }, + { + "name": "npm-asset/bootbox", + "version": "v4.1.0", + "source": { + "type": "git", + "url": "https://github.com/makeusabrew/bootbox.git", + "reference": "f4ced08acee9ba17a542d72d44db8c868f5379c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/makeusabrew/bootbox/zipball/f4ced08acee9ba17a542d72d44db8c868f5379c2", + "reference": "f4ced08acee9ba17a542d72d44db8c868f5379c2" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/bootstrap", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/twbs/bootstrap.git", + "reference": "6d03173a1aad98e75f7d33e65b411c519176c59a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twbs/bootstrap/zipball/6d03173a1aad98e75f7d33e65b411c519176c59a", + "reference": "6d03173a1aad98e75f7d33e65b411c519176c59a" + }, + "type": "npm-asset" + }, + { + "name": "npm-asset/jquery", + "version": "1.12.4", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/jquery.uniform", + "version": "4.2.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/jquery.uniform/-/jquery.uniform-4.2.0.tgz" + }, + "require": { + "npm-asset/jquery": ">=1.6.0,<2.0.0" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/requirejs", + "version": "2.3.3", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.3.tgz" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "npm-asset/xregexp", + "version": "3.2.0", + "dist": { + "type": "tar", + "url": "https://registry.npmjs.org/xregexp/-/xregexp-3.2.0.tgz" + }, + "type": "npm-asset", + "license": [ + "MIT" + ] + }, + { + "name": "ocramius/package-versions", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", + "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" + }, + "require-dev": { + "composer/composer": "^1.6.3", + "doctrine/coding-standard": "^5.0.1", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2019-02-21T12:16:21+00:00" + }, + { + "name": "ocramius/proxy-manager", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/ProxyManager.git", + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7", + "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.1.1", + "php": "^7.1.0", + "zendframework/zend-code": "^3.1.0" + }, + "require-dev": { + "couscous/couscous": "^1.5.2", + "ext-phar": "*", + "humbug/humbug": "dev-master@DEV", + "nikic/php-parser": "^3.0.4", + "phpbench/phpbench": "^0.12.2", + "phpstan/phpstan": "^0.6.4", + "phpunit/phpunit": "^5.6.4", + "phpunit/phpunit-mock-objects": "^3.4.1", + "squizlabs/php_codesniffer": "^2.7.0" + }, + "suggest": { + "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", + "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", + "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", + "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ProxyManager\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.io/" + } + ], + "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", + "homepage": "https://github.com/Ocramius/ProxyManager", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "time": "2017-05-04T11:12:50+00:00" + }, + { + "name": "oro/calendar-bundle", + "version": "dev-master", + "dist": { + "type": "path", + "url": "../../package/calendar", + "reference": "05a8f52ca30cc9e61842f1cdba1e1cea836bce73" + }, + "require": { + "bower-asset/fullcalendar": "3.4.0", + "oro/platform": "~3.1.1" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\Bundle\\CalendarBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Oro Calendar Bundle", + "homepage": "https://github.com/oroinc/OroCalendarBundle.git", + "keywords": [ + "Calendar", + "Oro" + ] + }, + { + "name": "oro/doctrine-extensions", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/oroinc/doctrine-extensions.git", + "reference": "71b38bd772d68723b3999843d710b039b667426e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oroinc/doctrine-extensions/zipball/71b38bd772d68723b3999843d710b039b667426e", + "reference": "71b38bd772d68723b3999843d710b039b667426e", + "shasum": "" + }, + "require": { + "doctrine/orm": ">=2.2.3", + "php": ">=5.4.0" + }, + "require-dev": { + "doctrine/data-fixtures": "^1.0", + "doctrine/orm": "<2.5.0", + "phpunit/phpunit": "4.*", + "squizlabs/php_codesniffer": "2.8.*", + "symfony/yaml": "2.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Oro\\DBAL": "src/", + "Oro\\ORM": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Doctrine Extensions for MySQL and PostgreSQL.", + "homepage": "https://github.com/orocrm/doctrine-extensions/", + "keywords": [ + "database", + "doctrine", + "dql", + "function", + "mysql", + "postgresql", + "type" + ], + "time": "2018-11-12T09:15:04+00:00" + }, + { + "name": "oro/oauth2-server", + "version": "dev-master", + "dist": { + "type": "path", + "url": "../../package/oauth2-server", + "reference": "63360cae13dbf32b3585f1659d31c3197266e71e" + }, + "require": { + "league/oauth2-server": "7.3.*", + "oro/platform": "3.1.*", + "symfony/psr-http-message-bridge": "^1.0", + "zendframework/zend-diactoros": "^1.7" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\Bundle\\OAuth2ServerBundle\\": "src/Oro/Bundle/OAuth2ServerBundle" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://oroinc.com" + } + ], + "description": "Oro OAuth 2.0 authorization and resource server for BAP", + "homepage": "https://github.com/oroinc/oauth2-server", + "keywords": [ + "OAuth", + "OAuth2", + "ORO" + ] + }, + { + "name": "oro/platform", + "version": "dev-master", + "dist": { + "type": "path", + "url": "../../package/platform", + "reference": "ce041f1161f6bdee8f3bbc1d035416820238924a" + }, + "require": { + "akeneo/batch-bundle": "0.4.*", + "ass/xmlsecurity": "1.1.1", + "bower-asset/autobahnjs": "0.8.0", + "bower-asset/autolinker.js": "1.4.*", + "bower-asset/backbone": "1.2.3", + "bower-asset/backbone-pageable": "1.2.3", + "bower-asset/backgrid": "0.3.7", + "bower-asset/backgrid-paginator": "0.3.8", + "bower-asset/base64": "1.0.*", + "bower-asset/bean": "1.0.6", + "bower-asset/bootstrap": "4.1.1", + "bower-asset/chaplin": "1.2.0", + "bower-asset/crypto-js": "3.1.7", + "bower-asset/datepair": "0.4.*", + "bower-asset/flotr2": "dev-master", + "bower-asset/font-awesome": "4.7.*", + "bower-asset/fuse": "3.2.*", + "bower-asset/jquery": "3.1.1", + "bower-asset/jquery-ajax-queue": "0.0.1", + "bower-asset/jquery-cookie": "1.4.1", + "bower-asset/jquery-form": "4.2.1", + "bower-asset/jquery-mousewheel": "3.1.13", + "bower-asset/jquery-ui-multiselect-widget": "2.0.1", + "bower-asset/jquery-validate": "1.16.0", + "bower-asset/jquery.numeric": "1.5.0", + "bower-asset/jsplumb": "1.7.*", + "bower-asset/lightgallery": "1.4.0", + "bower-asset/malihu-custom-scrollbar-plugin": "3.1.5", + "bower-asset/moment": "2.18.*", + "bower-asset/moment-timezone": "0.5.*", + "bower-asset/numeral": "2.0.6", + "bower-asset/select2": "3.4.1", + "bower-asset/text": "2.0.*", + "bower-asset/timepicker": "1.11.*", + "bower-asset/underscore": "1.8.3", + "bower-asset/when": "2.4.0", + "brick/math": "0.8.*", + "components/jquery": "3.1.*", + "components/jqueryui": "1.12.*", + "composer/composer": "1.6.*", + "doctrine/annotations": "1.6.*", + "doctrine/collections": "1.5.*", + "doctrine/data-fixtures": "1.3.*", + "doctrine/dbal": "2.7.*", + "doctrine/doctrine-bundle": "1.9.*", + "doctrine/doctrine-fixtures-bundle": "2.4.*", + "doctrine/orm": "2.6.*", + "escapestudios/wsse-authentication-bundle": "2.3.*", + "ext-gd": "*", + "ext-intl": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-xml": "*", + "ext-zip": "*", + "ezyang/htmlpurifier": "4.10.*", + "friendsofsymfony/jsrouting-bundle": "2.2.*", + "friendsofsymfony/rest-bundle": "1.8.0", + "gos/web-socket-bundle": "1.8.11", + "guzzle/guzzle": "3.7.*", + "hwi/oauth-bundle": "0.5.*", + "incenteev/composer-parameter-handler": "2.1.*", + "jms/cg": "1.2.*", + "jms/serializer": "1.12.*", + "jms/serializer-bundle": "1.5.*", + "knplabs/knp-gaufrette-bundle": "0.3.*", + "knplabs/knp-menu": "2.3.*", + "knplabs/knp-menu-bundle": "2.2.*", + "kriswallsmith/buzz": "0.16.*", + "leafo/scssphp": "0.6.*", + "lexik/maintenance-bundle": "2.1.5", + "liip/imagine-bundle": "1.9.*", + "liuggio/excelbundle": "2.1.*", + "monolog/monolog": "1.23.*", + "mtdowling/cron-expression": "1.2.*", + "nelmio/api-doc-bundle": "2.13.*", + "nelmio/security-bundle": "2.5.*", + "nesbot/carbon": "1.29.*", + "npm-asset/bootbox": "4.1.0", + "npm-asset/bootstrap": "3.0.3", + "npm-asset/jquery.uniform": "4.2.0", + "npm-asset/requirejs": "2.3.*", + "npm-asset/xregexp": "3.2.*", + "ocramius/proxy-manager": "2.1.1", + "oro/doctrine-extensions": "1.2.*", + "oro/redis-config": "~3.1.1", + "php": ">=7.1.26", + "phpdocumentor/reflection-docblock": "4.3.*", + "piwik/device-detector": "3.10.*", + "robloach/component-installer": "0.2.*", + "sensio/distribution-bundle": "5.0.*", + "sensio/framework-extra-bundle": "~3.0.12", + "stof/doctrine-extensions-bundle": "1.3.*", + "symfony/monolog-bundle": "3.3.*", + "symfony/polyfill-php70": "1.*", + "symfony/security-acl": "~3.0.0", + "symfony/swiftmailer-bundle": "2.6.*", + "symfony/symfony": "3.4.20", + "tinymce/tinymce": "4.6.*", + "twig/extensions": "1.5.*", + "twig/twig": "1.38.*", + "vakata/jstree": "3.3.*", + "zendframework/zend-mail": "2.10.0" + }, + "require-dev": { + "behat/behat": "3.4.*", + "behat/mink-extension": "2.3.*", + "behat/mink-selenium2-driver": "1.*", + "behat/symfony2-extension": "2.1.*", + "johnkary/phpunit-speedtrap": "1.0.*", + "mybuilder/phpunit-accelerator": "1.2.*", + "nelmio/alice": "2.3.*", + "phpmd/phpmd": "2.6.*", + "sensio/generator-bundle": "3.1.*", + "squizlabs/php_codesniffer": "3.3.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Business Application Platform (BAP)", + "homepage": "https://github.com/oroinc/platform.git" + }, + { + "name": "oro/platform-serialised-fields", + "version": "dev-master", + "dist": { + "type": "path", + "url": "../../package/serialized-fields", + "reference": "da90254b678c2e0b6f1df60f07bd2bf43164ba9b" + }, + "require": { + "oro/platform": "~3.1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\Bundle\\EntitySerializedFieldsBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "OroPlatform Serialized Fields", + "homepage": "https://github.com/oroinc/OroEntitySerializedFieldsBundle", + "keywords": [ + "Oro", + "Platform", + "entity", + "fields" + ] + }, + { + "name": "oro/redis-config", + "version": "dev-master", + "target-dir": "Oro/Bundle/RedisConfigBundle", + "dist": { + "type": "path", + "url": "../../package/redis-config", + "reference": "696fdaf47f633d49c8db3600ace88448d1f63d41" + }, + "require": { + "predis/predis": "~1.0", + "snc/redis-bundle": "~2.0.6" + }, + "require-dev": { + "phpunit/phpunit": "5.7.*" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-0": { + "Oro\\Bundle\\RedisConfigBundle": "./" + } + }, + "license": [ + "MIT" + ], + "description": "OroRedisConfigBundle", + "homepage": "https://github.com/oroinc/redis-config", + "keywords": [ + "Oro", + "OroCrm", + "OroPlatform", + "Redis" + ] + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.18", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", + "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", + "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", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2019-01-03T20:59:08+00:00" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2015-05-17T12:39:23+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpoffice/phpexcel", + "version": "1.8.2", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PHPExcel.git", + "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/1441011fb7ecdd8cc689878f54f8b58a6805f870", + "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "php": "^5.2|^7.0" + }, + "require-dev": { + "squizlabs/php_codesniffer": "2.*" + }, + "type": "library", + "autoload": { + "psr-0": { + "PHPExcel": "Classes/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "http://blog.maartenballiauw.be" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Franck Lefevre", + "homepage": "http://rootslabs.net" + }, + { + "name": "Mark Baker", + "homepage": "http://markbakeruk.net" + } + ], + "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PHPExcel", + "keywords": [ + "OpenXML", + "excel", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "abandoned": "phpoffice/phpspreadsheet", + "time": "2018-11-22T23:07:24+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25T16:39:46+00:00" + }, + { + "name": "piwik/device-detector", + "version": "3.10.2", + "source": { + "type": "git", + "url": "https://github.com/matomo-org/device-detector.git", + "reference": "67e96595cd7649b7967533053fcbfbe02d5c55a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/matomo-org/device-detector/zipball/67e96595cd7649b7967533053fcbfbe02d5c55a3", + "reference": "67e96595cd7649b7967533053fcbfbe02d5c55a3", + "shasum": "" + }, + "require": { + "mustangostang/spyc": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "fabpot/php-cs-fixer": "~1.7", + "matthiasmullie/scrapbook": "@stable", + "phpunit/phpunit": "^4.8.36", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" + }, + "suggest": { + "doctrine/cache": "Can directly be used for caching purpose" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeviceDetector\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "The Matomo Team", + "email": "hello@matomo.org", + "homepage": "https://matomo.org/team/" + } + ], + "description": "The Universal Device Detection library, that parses User Agents and detects devices (desktop, tablet, mobile, tv, cars, console, etc.), clients (browsers, media players, mobile apps, feed readers, libraries, etc), operating systems, devices, brands and models.", + "homepage": "https://matomo.org", + "keywords": [ + "devicedetection", + "parser", + "useragent" + ], + "time": "2018-05-07T19:33:29+00:00" + }, + { + "name": "predis/predis", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/nrk/predis.git", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nrk/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "ext-curl": "Allows access to Webdis when paired with phpiredis", + "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" + }, + "type": "library", + "autoload": { + "psr-4": { + "Predis\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniele Alessandri", + "email": "suppakilla@gmail.com", + "homepage": "http://clorophilla.net" + } + ], + "description": "Flexible and feature-complete Redis client for PHP and HHVM", + "homepage": "http://github.com/nrk/predis", + "keywords": [ + "nosql", + "predis", + "redis" + ], + "time": "2016-06-16T16:22:20+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "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-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/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/link", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", + "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "time": "2016-10-28T16:06:13+00:00" + }, + { + "name": "psr/log", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "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/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-20T15:27:04+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.0", + "satooshi/php-coveralls": ">=1.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "time": "2016-02-11T07:05:27+00:00" + }, + { + "name": "react/event-loop", + "version": "v0.4.3", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/8bde03488ee897dc6bb3d91e4e17c353f9c5252f", + "reference": "8bde03488ee897dc6bb3d91e4e17c353f9c5252f", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "ext-event": "~1.0", + "ext-libev": "*", + "ext-libevent": ">=0.1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Event loop abstraction layer that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "time": "2017-04-27T10:56:23+00:00" + }, + { + "name": "react/promise", + "version": "v2.7.1", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", + "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "time": "2019-01-07T21:25:54+00:00" + }, + { + "name": "react/socket", + "version": "v0.4.6", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "cf074e53c974df52388ebd09710a9018894745d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/cf074e53c974df52388ebd09710a9018894745d2", + "reference": "cf074e53c974df52388ebd09710a9018894745d2", + "shasum": "" + }, + "require": { + "evenement/evenement": "~2.0|~1.0", + "php": ">=5.3.0", + "react/event-loop": "0.4.*|0.3.*", + "react/promise": "^2.0 || ^1.1", + "react/stream": "^0.4.5" + }, + "require-dev": { + "clue/block-react": "^1.1", + "phpunit/phpunit": "~4.8", + "react/socket-client": "^0.5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server for React PHP", + "keywords": [ + "Socket" + ], + "time": "2017-01-26T09:23:38+00:00" + }, + { + "name": "react/stream", + "version": "v0.4.6", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "reference": "44dc7f51ea48624110136b535b9ba44fd7d0c1ee", + "shasum": "" + }, + "require": { + "evenement/evenement": "^2.0|^1.0", + "php": ">=5.3.8" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "react/event-loop": "^0.4|^0.3", + "react/promise": "^2.0|^1.0" + }, + "suggest": { + "react/event-loop": "^0.4", + "react/promise": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Basic readable and writable stream interfaces that support piping.", + "keywords": [ + "pipe", + "stream" + ], + "time": "2017-01-25T14:44:14+00:00" + }, + { + "name": "robloach/component-installer", + "version": "0.2.3", + "source": { + "type": "git", + "url": "https://github.com/RobLoach/component-installer.git", + "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/RobLoach/component-installer/zipball/908a859aa7c4949ba9ad67091e67bac10b66d3d7", + "reference": "908a859aa7c4949ba9ad67091e67bac10b66d3d7", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "kriswallsmith/assetic": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "composer/composer": "1.*@alpha", + "phpunit/phpunit": "4.*" + }, + "type": "composer-plugin", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + }, + "class": "ComponentInstaller\\ComponentInstallerPlugin" + }, + "autoload": { + "psr-0": { + "ComponentInstaller": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Loach", + "homepage": "http://robloach.net" + } + ], + "description": "Allows installation of Components via Composer.", + "time": "2015-08-10T12:35:38+00:00" + }, + { + "name": "seld/cli-prompt", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], + "time": "2017-03-18T11:32:45+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2018-01-24T12:46:19+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2015-10-13T18:44:15+00:00" + }, + { + "name": "sensio/distribution-bundle", + "version": "v5.0.24", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", + "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/59eac70f15f97ee945924948a6f5e2f6f86b7a4b", + "reference": "59eac70f15f97ee945924948a6f5e2f6f86b7a4b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "sensiolabs/security-checker": "~5.0", + "symfony/class-loader": "~2.3|~3.0", + "symfony/config": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/filesystem": "~2.3|~3.0", + "symfony/http-kernel": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\DistributionBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Base bundle for Symfony Distributions", + "keywords": [ + "configuration", + "distribution" + ], + "time": "2018-12-14T17:36:15+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v3.0.12", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357", + "reference": "3e8936fe13aa4086644977d334d8fcd275f50357", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/expression-language": "~2.4|~3.0", + "symfony/security-bundle": "~2.4|~3.0" + }, + "suggest": { + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "time": "2015-12-18T17:39:27+00:00" + }, + { + "name": "sensiolabs/security-checker", + "version": "v5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/security-checker.git", + "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/46be3f58adac13084497961e10eed9a7fb4d44d1", + "reference": "46be3f58adac13084497961e10eed9a7fb4d44d1", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "php": ">=5.5.9", + "symfony/console": "~2.7|~3.0|~4.0" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "SensioLabs\\Security\\": "SensioLabs/Security" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "A security checker for your composer.lock", + "time": "2018-12-19T17:14:59+00:00" + }, + { + "name": "snc/redis-bundle", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/snc/SncRedisBundle.git", + "reference": "73c87c435f87e08c2d564c3d9ad35f38cd8d3a0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/snc/SncRedisBundle/zipball/73c87c435f87e08c2d564c3d9ad35f38cd8d3a0e", + "reference": "73c87c435f87e08c2d564c3d9ad35f38cd8d3a0e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/framework-bundle": "^2.7 || ^3.0 || ^4.0", + "symfony/yaml": "^2.7 || ^3.0 || ^4.0" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^4.8 || ^5.4", + "predis/predis": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/phpunit-bridge": "^2.7 || ^3.0 || ^4.0" + }, + "suggest": { + "monolog/monolog": "If you want to use the monolog redis handler.", + "predis/predis": "If you want to use predis.", + "symfony/console": "If you want to use commands to interact with the redis database" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Snc\\RedisBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Henrik Westphal", + "email": "henrik.westphal@gmail.com" + }, + { + "name": "Community contributors", + "homepage": "https://github.com/snc/SncRedisBundle/contributors" + } + ], + "description": "A Redis bundle for Symfony", + "homepage": "https://github.com/snc/SncRedisBundle", + "keywords": [ + "nosql", + "redis", + "symfony" + ], + "time": "2017-12-01T10:40:06+00:00" + }, + { + "name": "stof/doctrine-extensions-bundle", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", + "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/46db71ec7ffee9122eca3cdddd4ef8d84bae269c", + "reference": "46db71ec7ffee9122eca3cdddd4ef8d84bae269c", + "shasum": "" + }, + "require": { + "gedmo/doctrine-extensions": "^2.3.4", + "php": ">=5.3.2", + "symfony/framework-bundle": "~2.7|~3.2|~4.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.0", + "symfony/security-bundle": "^2.7 || ^3.2 || ^4.0" + }, + "suggest": { + "doctrine/doctrine-bundle": "to use the ORM extensions", + "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Stof\\DoctrineExtensionsBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Integration of the gedmo/doctrine-extensions with Symfony2", + "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", + "keywords": [ + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree" + ], + "time": "2017-12-24T16:06:50+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.12", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2018-07-31T09:26:32+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/572e143afc03419a75ab002c80a2fd99299195ff", + "reference": "572e143afc03419a75ab002c80a2fd99299195ff", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.22", + "php": ">=5.6", + "symfony/config": "~2.7|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.4.10|^4.0.10", + "symfony/http-kernel": "~2.7|~3.3|~4.0", + "symfony/monolog-bridge": "~2.7|~3.3|~4.0" + }, + "require-dev": { + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony MonologBundle", + "homepage": "http://symfony.com", + "keywords": [ + "log", + "logging" + ], + "time": "2018-11-04T09:58:13+00:00" + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "a502face1da6a53289480166f24de2c3c68e5c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a502face1da6a53289480166f24de2c3c68e5c3c", + "reference": "a502face1da6a53289480166f24de2c3c68e5c3c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Apcu\\": "" + }, + "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 apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "backendtea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/999878a3a09d73cae157b0cf89bb6fb2cc073057", + "reference": "999878a3a09d73cae157b0cf89bb6fb2cc073057", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0|~4.0" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "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 intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2019-01-07T19:39:47+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "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": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", + "reference": "f4dddbc5c3471e1b700a147a20ae17cdb72dbe42", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "bc4858fb611bda58719124ca079baff854149c89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", + "reference": "bc4858fb611bda58719124ca079baff854149c89", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0|~9.99", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-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": "2019-02-06T07:57:58+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "b46c6cae28a3106735323f00a0c38eccf2328897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/b46c6cae28a3106735323f00a0c38eccf2328897", + "reference": "b46c6cae28a3106735323f00a0c38eccf2328897", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2019-02-08T14:16:39+00:00" + }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", + "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", + "shasum": "" + }, + "require": { + "php": "^7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^3.4 || ^4.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "symfony/phpunit-bridge": "^3.4.20 || ^4.0", + "zendframework/zend-diactoros": "^1.4.1 || ^2.0" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "time": "2019-03-11T18:22:33+00:00" + }, + { + "name": "symfony/security-acl", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-acl.git", + "reference": "ab4dfe2d95e038cd367dd04604487b0a3359bcff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/ab4dfe2d95e038cd367dd04604487b0a3359bcff", + "reference": "ab4dfe2d95e038cd367dd04604487b0a3359bcff", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/security-core": "~2.8|~3.0|~4.0" + }, + "require-dev": { + "doctrine/common": "~2.2", + "doctrine/dbal": "~2.2", + "psr/log": "~1.0", + "symfony/phpunit-bridge": "~2.8|~3.0|~4.0" + }, + "suggest": { + "doctrine/dbal": "For using the built-in ACL implementation", + "symfony/class-loader": "For using the ACL generateSql script", + "symfony/finder": "For using the ACL generateSql script" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Acl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - ACL (Access Control List)", + "homepage": "https://symfony.com", + "time": "2017-07-21T06:01:18+00:00" + }, + { + "name": "symfony/swiftmailer-bundle", + "version": "v2.6.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "c4808f5169efc05567be983909d00f00521c53ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec", + "reference": "c4808f5169efc05567be983909d00f00521c53ec", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "swiftmailer/swiftmailer": "~4.2|~5.0", + "symfony/config": "~2.7|~3.0", + "symfony/dependency-injection": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0" + }, + "require-dev": { + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/phpunit-bridge": "~3.3@dev", + "symfony/yaml": "~2.7|~3.0" + }, + "suggest": { + "psr/log": "Allows logging" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony SwiftmailerBundle", + "homepage": "http://symfony.com", + "time": "2017-10-19T01:06:41+00:00" + }, + { + "name": "symfony/symfony", + "version": "v3.4.20", + "source": { + "type": "git", + "url": "https://github.com/symfony/symfony.git", + "reference": "f6b8ddc362b1cf3fb06548693c3adbb736092412" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/symfony/zipball/f6b8ddc362b1cf3fb06548693c3adbb736092412", + "reference": "f6b8ddc362b1cf3fb06548693c3adbb736092412", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "ext-xml": "*", + "fig/link-util": "^1.0", + "php": "^5.5.9|>=7.0.8", + "psr/cache": "~1.0", + "psr/container": "^1.0", + "psr/link": "^1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-apcu": "~1.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.6", + "twig/twig": "^1.35|^2.4.4" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", + "phpdocumentor/type-resolver": "<0.3.0", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/container-implementation": "1.0", + "psr/log-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "symfony/asset": "self.version", + "symfony/browser-kit": "self.version", + "symfony/cache": "self.version", + "symfony/class-loader": "self.version", + "symfony/config": "self.version", + "symfony/console": "self.version", + "symfony/css-selector": "self.version", + "symfony/debug": "self.version", + "symfony/debug-bundle": "self.version", + "symfony/dependency-injection": "self.version", + "symfony/doctrine-bridge": "self.version", + "symfony/dom-crawler": "self.version", + "symfony/dotenv": "self.version", + "symfony/event-dispatcher": "self.version", + "symfony/expression-language": "self.version", + "symfony/filesystem": "self.version", + "symfony/finder": "self.version", + "symfony/form": "self.version", + "symfony/framework-bundle": "self.version", + "symfony/http-foundation": "self.version", + "symfony/http-kernel": "self.version", + "symfony/inflector": "self.version", + "symfony/intl": "self.version", + "symfony/ldap": "self.version", + "symfony/lock": "self.version", + "symfony/monolog-bridge": "self.version", + "symfony/options-resolver": "self.version", + "symfony/process": "self.version", + "symfony/property-access": "self.version", + "symfony/property-info": "self.version", + "symfony/proxy-manager-bridge": "self.version", + "symfony/routing": "self.version", + "symfony/security": "self.version", + "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version", + "symfony/serializer": "self.version", + "symfony/stopwatch": "self.version", + "symfony/templating": "self.version", + "symfony/translation": "self.version", + "symfony/twig-bridge": "self.version", + "symfony/twig-bundle": "self.version", + "symfony/validator": "self.version", + "symfony/var-dumper": "self.version", + "symfony/web-link": "self.version", + "symfony/web-profiler-bundle": "self.version", + "symfony/web-server-bundle": "self.version", + "symfony/workflow": "self.version", + "symfony/yaml": "self.version" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.6", + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/doctrine-bundle": "~1.4", + "doctrine/orm": "~2.4,>=2.4.5", + "egulias/email-validator": "~1.2,>=1.2.8|~2.0", + "monolog/monolog": "~1.11", + "ocramius/proxy-manager": "~0.4|~1.0|~2.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "predis/predis": "~1.0", + "symfony/phpunit-bridge": "~3.4|~4.0", + "symfony/security-acl": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", + "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", + "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", + "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", + "Symfony\\Bundle\\": "src/Symfony/Bundle/", + "Symfony\\Component\\": "src/Symfony/Component/" + }, + "classmap": [ + "src/Symfony/Component/Intl/Resources/stubs" + ], + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "The Symfony PHP framework", + "homepage": "https://symfony.com", + "keywords": [ + "framework" + ], + "time": "2018-12-06T15:24:36+00:00" + }, + { + "name": "tinymce/tinymce", + "version": "4.6.7", + "source": { + "type": "git", + "url": "https://github.com/tinymce/tinymce-dist.git", + "reference": "9f9cf10d009892009a296dff48970b079ec78c7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tinymce/tinymce-dist/zipball/9f9cf10d009892009a296dff48970b079ec78c7a", + "reference": "9f9cf10d009892009a296dff48970b079ec78c7a", + "shasum": "" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "tinymce.js", + "plugins/*/plugin.js", + "themes/*/theme.js" + ], + "files": [ + "tinymce.min.js", + "plugins/*/plugin.min.js", + "themes/*/theme.min.js", + "skins/**" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "description": "Web based JavaScript HTML WYSIWYG editor control.", + "homepage": "http://www.tinymce.com", + "keywords": [ + "editor", + "html", + "javascript", + "richtext", + "tinymce", + "wysiwyg" + ], + "time": "2017-09-18T11:31:55+00:00" + }, + { + "name": "true/punycode", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/true/php-punycode.git", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.7", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TrueBV\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Renan Gonçalves", + "email": "renan.saddam@gmail.com" + } + ], + "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", + "homepage": "https://github.com/true/php-punycode", + "keywords": [ + "idna", + "punycode" + ], + "time": "2016-11-16T10:37:54+00:00" + }, + { + "name": "twig/extensions", + "version": "v1.5.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/57873c8b0c1be51caa47df2cdb824490beb16202", + "reference": "57873c8b0c1be51caa47df2cdb824490beb16202", + "shasum": "" + }, + "require": { + "twig/twig": "^1.27|^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.4", + "symfony/translation": "^2.7|^3.4" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_Extensions_": "lib/" + }, + "psr-4": { + "Twig\\Extensions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Common additional features for Twig that do not directly belong in core", + "keywords": [ + "i18n", + "text" + ], + "time": "2018-12-05T18:34:18+00:00" + }, + { + "name": "twig/twig", + "version": "v1.38.4", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7732e9e7017d751313811bd118de61302e9c8b35", + "reference": "7732e9e7017d751313811bd118de61302e9c8b35", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "^2.7", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.38-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "https://twig.symfony.com/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2019-03-23T14:27:19+00:00" + }, + { + "name": "ua-parser/uap-php", + "version": "v3.8.8", + "source": { + "type": "git", + "url": "https://github.com/ua-parser/uap-php.git", + "reference": "3004c494d204c3b6d5e1e80a4ff78e4025e24e2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ua-parser/uap-php/zipball/3004c494d204c3b6d5e1e80a4ff78e4025e24e2f", + "reference": "3004c494d204c3b6d5e1e80a4ff78e4025e24e2f", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.1", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "<8", + "symfony/console": "^2.0 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.0 || ^3.0 || ^4.0", + "symfony/finder": "^2.0 || ^3.0 || ^4.0", + "symfony/yaml": "^2.0 || ^3.0 || ^4.0" + }, + "suggest": { + "symfony/console": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0", + "symfony/filesystem": "Required for CLI usage - 2.0 || ^3.0 || ^4.0", + "symfony/finder": "Required for CLI usage - ^2.0 || ^3.0 || ^4.0", + "symfony/yaml": "Required for CLI usage - ^4.0 || ^5.0" + }, + "bin": [ + "bin/uaparser" + ], + "type": "library", + "autoload": { + "psr-4": { + "UAParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Strojny", + "email": "lars@strojny.net" + }, + { + "name": "Dave Olsen", + "email": "dmolsen@gmail.com" + } + ], + "description": "A multi-language port of Browserscope's user agent parser.", + "time": "2019-03-19T09:54:19+00:00" + }, + { + "name": "vakata/jstree", + "version": "3.3.7", + "source": { + "type": "git", + "url": "https://github.com/vakata/jstree.git", + "reference": "bc5187e5826244dee5ebdc0e9db2e2652fefe928" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vakata/jstree/zipball/bc5187e5826244dee5ebdc0e9db2e2652fefe928", + "reference": "bc5187e5826244dee5ebdc0e9db2e2652fefe928", + "shasum": "" + }, + "require": { + "components/jquery": ">=1.9.1" + }, + "suggest": { + "robloach/component-installer": "Allows installation of Components via Composer" + }, + "type": "component", + "extra": { + "component": { + "scripts": [ + "dist/jstree.js" + ], + "styles": [ + "dist/themes/default/style.css" + ], + "images": [ + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ], + "files": [ + "dist/jstree.min.js", + "dist/themes/default/style.min.css", + "dist/themes/default/32px.png", + "dist/themes/default/40px.png", + "dist/themes/default/throbber.gif" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Bozhanov", + "email": "jstree@jstree.com" + } + ], + "description": "jsTree is jquery plugin, that provides interactive trees.", + "homepage": "http://jstree.com", + "time": "2018-11-06T21:15:47+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "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": "2018-12-25T11:19:39+00:00" + }, + { + "name": "willdurand/jsonp-callback-validator", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/JsonpCallbackValidator.git", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/JsonpCallbackValidator/zipball/1a7d388bb521959e612ef50c5c7b1691b097e909", + "reference": "1a7d388bb521959e612ef50c5c7b1691b097e909", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonpCallbackValidator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com", + "homepage": "http://www.willdurand.fr" + } + ], + "description": "JSONP callback validator.", + "time": "2014-01-20T22:35:06+00:00" + }, + { + "name": "willdurand/negotiation", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/2a59f2376557303e3fa91465ab691abb82945edf", + "reference": "2a59f2376557303e3fa91465ab691abb82945edf", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "william.durand1@gmail.com" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "time": "2015-10-01T07:42:40+00:00" + }, + { + "name": "zendframework/zend-code", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-code.git", + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c21db169075c6ec4b342149f446e7b7b724f95eb", + "reference": "c21db169075c6ec4b342149f446e7b7b724f95eb", + "shasum": "" + }, + "require": { + "php": "^7.1", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "zendframework/zend-coding-standard": "^1.0.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev", + "dev-develop": "3.4.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides facilities to generate arbitrary code using an object oriented interface", + "homepage": "https://github.com/zendframework/zend-code", + "keywords": [ + "code", + "zf2" + ], + "time": "2018-08-13T20:36:59+00:00" + }, + { + "name": "zendframework/zend-diactoros", + "version": "1.8.6", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev", + "dev-develop": "1.9.x-dev", + "dev-release-2.0": "2.0.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], + "psr-4": { + "Zend\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://github.com/zendframework/zend-diactoros", + "keywords": [ + "http", + "psr", + "psr-7" + ], + "time": "2018-09-05T19:29:37+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "time": "2018-04-25T15:33:34+00:00" + }, + { + "name": "zendframework/zend-loader", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-loader.git", + "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/78f11749ea340f6ca316bca5958eef80b38f9b6c", + "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Loader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Autoloading and plugin loading strategies", + "keywords": [ + "ZendFramework", + "loader", + "zf" + ], + "time": "2018-04-30T15:20:54+00:00" + }, + { + "name": "zendframework/zend-mail", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mail.git", + "reference": "d7beb63d5f7144a21ac100072c453e63860cdab8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mail/zipball/d7beb63d5f7144a21ac100072c453e63860cdab8", + "reference": "d7beb63d5f7144a21ac100072c453e63860cdab8", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": "^5.6 || ^7.0", + "true/punycode": "^2.1", + "zendframework/zend-loader": "^2.5", + "zendframework/zend-mime": "^2.5", + "zendframework/zend-stdlib": "^2.7 || ^3.0", + "zendframework/zend-validator": "^2.10.2" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.25 || ^6.4.4 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-crypt": "^2.6 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1" + }, + "suggest": { + "zendframework/zend-crypt": "Crammd5 support in SMTP Auth", + "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\Mail", + "config-provider": "Zend\\Mail\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Provides generalized functionality to compose and send both text and MIME-compliant multipart e-mail messages", + "keywords": [ + "ZendFramework", + "mail", + "zf" + ], + "time": "2018-06-07T13:37:07+00:00" + }, + { + "name": "zendframework/zend-mime", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mime.git", + "reference": "52ae5fa9f12845cae749271034a2d594f0e4c6f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mime/zipball/52ae5fa9f12845cae749271034a2d594f0e4c6f2", + "reference": "52ae5fa9f12845cae749271034a2d594f0e4c6f2", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.21 || ^6.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-mail": "^2.6" + }, + "suggest": { + "zendframework/zend-mail": "Zend\\Mail component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Create and parse MIME messages and parts", + "homepage": "https://github.com/zendframework/zend-mime", + "keywords": [ + "ZendFramework", + "mime", + "zf" + ], + "time": "2018-05-14T19:02:50+00:00" + }, + { + "name": "zendframework/zend-stdlib", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "66536006722aff9e62d1b331025089b7ec71c065" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "keywords": [ + "ZendFramework", + "stdlib", + "zf" + ], + "time": "2018-08-28T21:34:05+00:00" + }, + { + "name": "zendframework/zend-validator", + "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-validator.git", + "reference": "64c33668e5fa2d39c6289a878f927ea2b0850c30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/64c33668e5fa2d39c6289a878f927ea2b0850c30", + "reference": "64c33668e5fa2d39c6289a878f927ea2b0850c30", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^3.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "psr/http-message": "^1.0", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6", + "zendframework/zend-db": "^2.7", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-http": "^2.5.4", + "zendframework/zend-i18n": "^2.6", + "zendframework/zend-math": "^2.6", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-session": "^2.8", + "zendframework/zend-uri": "^2.5" + }, + "suggest": { + "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators", + "zendframework/zend-db": "Zend\\Db component, required by the (No)RecordExists validator", + "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", + "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages", + "zendframework/zend-i18n-resources": "Translations of validator messages", + "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", + "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", + "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.12.x-dev", + "dev-develop": "2.13.x-dev" + }, + "zf": { + "component": "Zend\\Validator", + "config-provider": "Zend\\Validator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Validator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed validators", + "homepage": "https://github.com/zendframework/zend-validator", + "keywords": [ + "validator", + "zf2" + ], + "time": "2019-01-30T14:26:10+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/behat", + "version": "v3.4.3", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/d60b161bff1b95ec4bb80bb8cb210ccf890314c2", + "reference": "d60b161bff1b95ec4bb80bb8cb210ccf890314c2", + "shasum": "" + }, + "require": { + "behat/gherkin": "^4.5.1", + "behat/transliterator": "^1.2", + "container-interop/container-interop": "^1.2", + "ext-mbstring": "*", + "php": ">=5.3.3", + "psr/container": "^1.0", + "symfony/class-loader": "~2.1||~3.0||~4.0", + "symfony/config": "~2.3||~3.0||~4.0", + "symfony/console": "~2.5||~3.0||~4.0", + "symfony/dependency-injection": "~2.1||~3.0||~4.0", + "symfony/event-dispatcher": "~2.1||~3.0||~4.0", + "symfony/translation": "~2.3||~3.0||~4.0", + "symfony/yaml": "~2.1||~3.0||~4.0" + }, + "require-dev": { + "herrera-io/box": "~1.6.1", + "phpunit/phpunit": "^4.8.36|^6.3", + "symfony/process": "~2.5|~3.0|~4.0" + }, + "suggest": { + "behat/mink-extension": "for integration with Mink testing framework", + "behat/symfony2-extension": "for integration with Symfony2 web framework", + "behat/yii-extension": "for integration with Yii web framework" + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Behat": "src/", + "Behat\\Testwork": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "Agile", + "BDD", + "ScenarioBDD", + "Scrum", + "StoryBDD", + "User story", + "business", + "development", + "documentation", + "examples", + "symfony", + "testing" + ], + "time": "2017-11-27T10:37:56+00:00" + }, + { + "name": "behat/gherkin", + "version": "v4.6.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", + "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.5|~5", + "symfony/phpunit-bridge": "~2.7|~3|~4", + "symfony/yaml": "~2.3|~3|~4" + }, + "suggest": { + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Cucumber", + "DSL", + "gherkin", + "parser" + ], + "time": "2019-01-16T14:22:17+00:00" + }, + { + "name": "behat/mink", + "version": "v1.7.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/Mink.git", + "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/Mink/zipball/e6930b9c74693dff7f4e58577e1b1743399f3ff9", + "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/css-selector": "~2.1|~3.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7|~3.0" + }, + "suggest": { + "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", + "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", + "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", + "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Browser controller/emulator abstraction for PHP", + "homepage": "http://mink.behat.org/", + "keywords": [ + "browser", + "testing", + "web" + ], + "time": "2016-03-05T08:26:18+00:00" + }, + { + "name": "behat/mink-extension", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/Behat/MinkExtension.git", + "reference": "80f7849ba53867181b7e412df9210e12fba50177" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", + "reference": "80f7849ba53867181b7e412df9210e12fba50177", + "shasum": "" + }, + "require": { + "behat/behat": "^3.0.5", + "behat/mink": "^1.5", + "php": ">=5.3.2", + "symfony/config": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "behat/mink-goutte-driver": "^1.1", + "phpspec/phpspec": "^2.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\MinkExtension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Mink extension for Behat", + "homepage": "http://extensions.behat.org/mink", + "keywords": [ + "browser", + "gui", + "test", + "web" + ], + "time": "2018-02-06T15:36:30+00:00" + }, + { + "name": "behat/mink-selenium2-driver", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/minkphp/MinkSelenium2Driver.git", + "reference": "473a9f3ebe0c134ee1e623ce8a9c852832020288" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/minkphp/MinkSelenium2Driver/zipball/473a9f3ebe0c134ee1e623ce8a9c852832020288", + "reference": "473a9f3ebe0c134ee1e623ce8a9c852832020288", + "shasum": "" + }, + "require": { + "behat/mink": "~1.7@dev", + "instaclick/php-webdriver": "~1.1", + "php": ">=5.3.1" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "mink-driver", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Behat\\Mink\\Driver\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Pete Otaqui", + "email": "pete@otaqui.com", + "homepage": "https://github.com/pete-otaqui" + } + ], + "description": "Selenium2 (WebDriver) driver for Mink framework", + "homepage": "http://mink.behat.org/", + "keywords": [ + "ajax", + "browser", + "javascript", + "selenium", + "testing", + "webdriver" + ], + "time": "2016-03-05T09:10:18+00:00" + }, + { + "name": "behat/symfony2-extension", + "version": "2.1.5", + "source": { + "type": "git", + "url": "https://github.com/Behat/Symfony2Extension.git", + "reference": "d7c834487426a784665f9c1e61132274dbf2ea26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Symfony2Extension/zipball/d7c834487426a784665f9c1e61132274dbf2ea26", + "reference": "d7c834487426a784665f9c1e61132274dbf2ea26", + "shasum": "" + }, + "require": { + "behat/behat": "^3.4.3", + "php": ">=5.3.3", + "symfony/framework-bundle": "~2.0|~3.0|~4.0" + }, + "require-dev": { + "behat/mink": "~1.7@dev", + "behat/mink-browserkit-driver": "~1.3@dev", + "behat/mink-extension": "~2.0", + "phpspec/phpspec": "~2.0|~3.0|~4.0", + "phpunit/phpunit": "~4.0|~5.0", + "symfony/symfony": "~2.1|~3.0|~4.0" + }, + "type": "behat-extension", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Symfony2Extension": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + }, + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com" + } + ], + "description": "Symfony2 framework extension for Behat", + "homepage": "http://behat.org", + "keywords": [ + "BDD", + "framework", + "symfony" + ], + "time": "2018-04-20T15:48:23+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "d17708133b6c276d6e42ef887a877866b909d892" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", + "reference": "d17708133b6c276d6e42ef887a877866b909d892", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2019-01-28T20:25:53+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v2.12.6", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", + "reference": "f3241a98b563ffc38f2570d216a90c4fc88fea21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/f3241a98b563ffc38f2570d216a90c4fc88fea21", + "reference": "f3241a98b563ffc38f2570d216a90c4fc88fea21", + "shasum": "" + }, + "require": { + "composer/semver": "^1.4", + "composer/xdebug-handler": "^1.2", + "doctrine/annotations": "^1.2", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^5.6 || >=7.0 <7.3", + "php-cs-fixer/diff": "^1.3", + "symfony/console": "^3.4.17 || ^4.1.6", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", + "symfony/polyfill-php70": "^1.0", + "symfony/polyfill-php72": "^1.4", + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" + }, + "conflict": { + "hhvm": "*" + }, + "require-dev": { + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", + "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.2", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.1", + "php-cs-fixer/accessible-object": "^1.0", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", + "phpunitgoodpractices/traits": "^1.5.1", + "symfony/phpunit-bridge": "^4.0" + }, + "suggest": { + "ext-mbstring": "For handling non-UTF8 characters in cache signature.", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", + "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + }, + "classmap": [ + "tests/Test/AbstractFixerTestCase.php", + "tests/Test/AbstractIntegrationCaseFactory.php", + "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", + "tests/Test/IntegrationCase.php", + "tests/Test/IntegrationCaseFactory.php", + "tests/Test/IntegrationCaseFactoryInterface.php", + "tests/Test/InternalIntegrationCaseFactory.php", + "tests/TestCase.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "time": "2019-01-04T18:19:54+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2018-07-12T10:23:15+00:00" + }, + { + "name": "instaclick/php-webdriver", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/instaclick/php-webdriver.git", + "reference": "6fa959452e774dcaed543faad3a9d1a37d803327" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/instaclick/php-webdriver/zipball/6fa959452e774dcaed543faad3a9d1a37d803327", + "reference": "6fa959452e774dcaed543faad3a9d1a37d803327", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "satooshi/php-coveralls": "^1.0||^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "WebDriver": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Justin Bishop", + "email": "jubishop@gmail.com", + "role": "Developer" + }, + { + "name": "Anthon Pang", + "email": "apang@softwaredevelopment.ca", + "role": "Fork Maintainer" + } + ], + "description": "PHP WebDriver for Selenium 2", + "homepage": "http://instaclick.com/", + "keywords": [ + "browser", + "selenium", + "webdriver", + "webtest" + ], + "time": "2017-06-30T04:02:48+00:00" + }, + { + "name": "johnkary/phpunit-speedtrap", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/johnkary/phpunit-speedtrap.git", + "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/johnkary/phpunit-speedtrap/zipball/a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", + "reference": "a1e39e0e3d07e0faee4ef3f342229d68fab07b5f", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "JohnKary\\PHPUnit\\Listener\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Kary", + "email": "john@johnkary.net" + } + ], + "description": "Find slow tests in your PHPUnit test suite", + "homepage": "https://github.com/johnkary/phpunit-speedtrap", + "keywords": [ + "phpunit", + "profile", + "slow" + ], + "time": "2017-12-06T15:14:00+00:00" + }, + { + "name": "mybuilder/phpunit-accelerator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/mybuilder/phpunit-accelerator.git", + "reference": "b1fef62c66b7eade5a02b5d12322373e7a86fbb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mybuilder/phpunit-accelerator/zipball/b1fef62c66b7eade5a02b5d12322373e7a86fbb2", + "reference": "b1fef62c66b7eade5a02b5d12322373e7a86fbb2", + "shasum": "" + }, + "require": { + "php": ">=5.6", + "phpunit/phpunit": ">=5.7 <7" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyBuilder\\PhpunitAccelerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Keyvan Akbary", + "email": "keyvan@mybuilder.com" + } + ], + "description": "PHPUnit accelerator", + "keywords": [ + "accelerator", + "fast", + "free", + "memory", + "phpunit", + "property" + ], + "time": "2017-06-21T07:43:12+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "nelmio/alice", + "version": "v2.3.5", + "source": { + "type": "git", + "url": "https://github.com/nelmio/alice.git", + "reference": "d780fdff10854d93010b4a027fab92b747b42586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nelmio/alice/zipball/d780fdff10854d93010b4a027fab92b747b42586", + "reference": "d780fdff10854d93010b4a027fab92b747b42586", + "shasum": "" + }, + "require": { + "fzaninotto/faker": "^1.5", + "php": "^5.6||^7.0", + "symfony/yaml": "^2.0||^3.0" + }, + "require-dev": { + "doctrine/common": "^2.3", + "phpspec/prophecy": "^1.5.0", + "phpunit/phpunit": "^5.6||^6.0", + "symfony/phpunit-bridge": "^3.0", + "symfony/property-access": "^2.2||^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Nelmio\\Alice\\": "src/Nelmio/Alice" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + }, + { + "name": "Tim Shelburne", + "email": "shelburt02@gmail.com" + }, + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Expressive fixtures generator", + "keywords": [ + "Fixture", + "data", + "orm", + "test" + ], + "time": "2018-04-07T09:33:52+00:00" + }, + { + "name": "oro/twig-inspector", + "version": "dev-master", + "dist": { + "type": "path", + "url": "../../package/twig-inspector", + "reference": "64de52d5b5b41db3c80e942828ed95a12f4e8e96" + }, + "require": { + "symfony/config": "^3.4", + "symfony/dependency-injection": "^3.4", + "symfony/http-foundation": "^3.4", + "symfony/http-kernel": "^3.4", + "symfony/routing": "^3.4", + "twig/twig": "~1.34|~2.4" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Oro\\TwigInspector\\": "" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oro, Inc", + "homepage": "http://www.orocrm.com" + } + ], + "description": "Oro Twig Inspector adds the possibility to find twig templates and blocks used for rendering HTML pages faster during development", + "homepage": "https://github.com/oroinc/twig-inspector", + "keywords": [ + "ORO", + "debug", + "inspect", + "symfony", + "template", + "toolbar-extension", + "twig" + ] + }, + { + "name": "pdepend/pdepend", + "version": "2.5.2", + "source": { + "type": "git", + "url": "https://github.com/pdepend/pdepend.git", + "reference": "9daf26d0368d4a12bed1cacae1a9f3a6f0adf239" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/9daf26d0368d4a12bed1cacae1a9f3a6f0adf239", + "reference": "9daf26d0368d4a12bed1cacae1a9f3a6f0adf239", + "shasum": "" + }, + "require": { + "php": ">=5.3.7", + "symfony/config": "^2.3.0|^3|^4", + "symfony/dependency-injection": "^2.3.0|^3|^4", + "symfony/filesystem": "^2.3.0|^3|^4" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7", + "squizlabs/php_codesniffer": "^2.0.0" + }, + "bin": [ + "src/bin/pdepend" + ], + "type": "library", + "autoload": { + "psr-4": { + "PDepend\\": "src/main/php/PDepend" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Official version of pdepend to be handled with Composer", + "time": "2017-12-13T13:21:38+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", + "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^1.0.1", + "php": "^5.6 || ^7.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": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2017-03-05T18:14:27+00:00" + }, + { + "name": "phar-io/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", + "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2017-03-05T17:38:23+00:00" + }, + { + "name": "php-cs-fixer/diff", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/diff.git", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", + "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "symfony/process": "^3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "SpacePossum" + } + ], + "description": "sebastian/diff v2 backport support for PHP5.6", + "homepage": "https://github.com/PHP-CS-Fixer", + "keywords": [ + "diff" + ], + "time": "2018-02-15T16:58:55+00:00" + }, + { + "name": "phpmd/phpmd", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/phpmd/phpmd.git", + "reference": "4e9924b2c157a3eb64395460fcf56b31badc8374" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/4e9924b2c157a3eb64395460fcf56b31badc8374", + "reference": "4e9924b2c157a3eb64395460fcf56b31badc8374", + "shasum": "" + }, + "require": { + "ext-xml": "*", + "pdepend/pdepend": "^2.5", + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.0" + }, + "bin": [ + "src/bin/phpmd" + ], + "type": "project", + "autoload": { + "psr-0": { + "PHPMD\\": "src/main/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Manuel Pichler", + "email": "github@manuel-pichler.de", + "homepage": "https://github.com/manuelpichler", + "role": "Project Founder" + }, + { + "name": "Other contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", + "role": "Contributors" + }, + { + "name": "Marc Würth", + "email": "ravage@bluewin.ch", + "homepage": "https://github.com/ravage84", + "role": "Project Maintainer" + } + ], + "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", + "homepage": "http://phpmd.org/", + "keywords": [ + "mess detection", + "mess detector", + "pdepend", + "phpmd", + "pmd" + ], + "time": "2017-01-20T14:41:10+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "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": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "5.3.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-xdebug": "^2.5.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-04-06T15:36:58+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2017-11-27T13:52:08+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "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": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2017-02-26T11:10:40+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "791198a2c6254db10131eecfe8c06670700904db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "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-11-27T05:48:46+00:00" + }, + { + "name": "phpunit/phpcov", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpcov.git", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpcov/zipball/19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", + "reference": "19b5781ddfb0be9d6fec6ac515f3f2da27dcfbb5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpunit/php-code-coverage": "^5.2.1 || ^6.0", + "phpunit/phpunit": "^6.0 || ^7.0", + "sebastian/diff": "^1.1 || ^2.0", + "sebastian/finder-facade": "^1.1", + "sebastian/version": "^2.0", + "symfony/console": "^3.0 || ^4.0" + }, + "bin": [ + "phpcov" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "CLI frontend for php-code-coverage", + "homepage": "https://github.com/sebastianbergmann/phpcov", + "time": "2018-02-02T10:07:44+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "6.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.6.1", + "phar-io/manifest": "^1.0.1", + "phar-io/version": "^1.0", + "php": "^7.0", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^1.0.9", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", + "sebastian/diff": "^2.0", + "sebastian/environment": "^3.1", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^1.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "3.0.2", + "phpunit/dbunit": "<3.0" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-xdebug": "*", + "phpunit/php-invoker": "^1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-02-01T05:22:47+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "5.0.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.5", + "php": "^7.0", + "phpunit/php-text-template": "^1.2.1", + "sebastian/exporter": "^3.1" + }, + "conflict": { + "phpunit/phpunit": "<6.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.11" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true, + "time": "2018-08-09T05:50:03+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^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": "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": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-02-01T13:46:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2017-08-03T08:09:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.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 functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2017-07-01T08:51:00+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "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", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/finder-facade", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/finder-facade.git", + "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/finder-facade/zipball/4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f", + "reference": "4a3174709c2dc565fe5fb26fcf827f6a1fc7b09f", + "shasum": "" + }, + "require": { + "symfony/finder": "~2.3|~3.0|~4.0", + "theseer/fdomdocument": "~1.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FinderFacade is a convenience wrapper for Symfony's Finder component.", + "homepage": "https://github.com/sebastianbergmann/finder-facade", + "time": "2017-11-18T17:31:49+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/phpcpd", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpcpd.git", + "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpcpd/zipball/dfed51c1288790fc957c9433e2f49ab152e8a564", + "reference": "dfed51c1288790fc957c9433e2f49ab152e8a564", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0", + "phpunit/php-timer": "^1.0.6", + "sebastian/finder-facade": "^1.1", + "sebastian/version": "^1.0|^2.0", + "symfony/console": "^2.7|^3.0|^4.0" + }, + "bin": [ + "phpcpd" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Copy/Paste Detector (CPD) for PHP code.", + "homepage": "https://github.com/sebastianbergmann/phpcpd", + "time": "2017-11-16T08:49:28+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.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": "2017-03-03T06:23:57+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/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "sensio/generator-bundle", + "version": "v3.1.7", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/28cbaa244bd0816fd8908b93f90380bcd7b67a65", + "reference": "28cbaa244bd0816fd8908b93f90380bcd7b67a65", + "shasum": "" + }, + "require": { + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/process": "~2.7|~3.0", + "symfony/yaml": "~2.7|~3.0", + "twig/twig": "^1.28.2|^2.0" + }, + "require-dev": { + "doctrine/orm": "~2.4", + "symfony/doctrine-bridge": "~2.7|~3.0", + "symfony/filesystem": "~2.7|~3.0", + "symfony/phpunit-bridge": "^3.3" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\GeneratorBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle generates code for you", + "time": "2017-12-07T15:36:41+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes 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": "2018-09-23T23:08:17+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v3.4.24", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "bf7ca5d4d7eb1758a1f7bed11111f630ac2d4f57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bf7ca5d4d7eb1758a1f7bed11111f630ac2d4f57", + "reference": "bf7ca5d4d7eb1758a1f7bed11111f630ac2d4f57", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "suggest": { + "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + }, + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony PHPUnit Bridge", + "homepage": "https://symfony.com", + "time": "2019-03-22T08:11:54+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-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": "2019-02-06T07:57:58+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": { + "ext-dom": "*", + "lib-libxml": "*", + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "lead" + } + ], + "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": "2017-06-30T11:53:12+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-04-04T09:56:43+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..76745ac9b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,729 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + } + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "grunt": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", + "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", + "requires": { + "coffeescript": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.13.0", + "minimatch": "~3.0.2", + "mkdirp": "~0.5.1", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.6.2" + }, + "dependencies": { + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "requires": { + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==" + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "requires": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "requires": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "resolve": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", + "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/patches/update_enum_entity_translations.patch b/patches/update_enum_entity_translations.patch new file mode 100644 index 000000000..607b8b9b8 --- /dev/null +++ b/patches/update_enum_entity_translations.patch @@ -0,0 +1,48 @@ +Index: src/Oro/Bundle/EntityExtendBundle/Migrations/Data/ORM/UpdateEnumEntityTranslations.php +IDEA additional info: +Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP +<+>UTF-8 +=================================================================== +diff --git a/src/Oro/Bundle/EntityExtendBundle/Migrations/Data/ORM/UpdateEnumEntityTranslations.php b/src/Oro/Bundle/EntityExtendBundle/Migrations/Data/ORM/UpdateEnumEntityTranslations.php +--- a/src/Oro/Bundle/EntityExtendBundle/Migrations/Data/ORM/UpdateEnumEntityTranslations.php (revision b5efc3ea6ac3e2169b38503d58f0773f171e6f80) ++++ b/src/Oro/Bundle/EntityExtendBundle/Migrations/Data/ORM/UpdateEnumEntityTranslations.php (date 1613205951057) +@@ -3,6 +3,7 @@ + namespace Oro\Bundle\EntityExtendBundle\Migrations\Date\ORM; + + use Doctrine\Common\DataFixtures\AbstractFixture; ++use Doctrine\Common\DataFixtures\DependentFixtureInterface; + use Doctrine\Common\Persistence\ObjectManager; + use Oro\Bundle\EntityConfigBundle\Config\ConfigManager; + use Oro\Bundle\EntityConfigBundle\Config\Id\FieldConfigId; +@@ -13,6 +14,7 @@ + use Oro\Bundle\MigrationBundle\Fixture\VersionedFixtureInterface; + use Oro\Bundle\TranslationBundle\Entity\Translation; + use Oro\Bundle\TranslationBundle\Manager\TranslationManager; ++use Oro\Bundle\TranslationBundle\Migrations\Data\ORM\LoadLanguageData; + use Oro\Bundle\TranslationBundle\Translation\Translator; + use Symfony\Component\DependencyInjection\ContainerAwareInterface; + use Symfony\Component\DependencyInjection\ContainerAwareTrait; +@@ -20,7 +22,7 @@ + /** + * Adds translations to enum entity in case of their absence + */ +-class UpdateEnumEntityTranslations extends AbstractFixture implements VersionedFixtureInterface, ContainerAwareInterface ++class UpdateEnumEntityTranslations extends AbstractFixture implements VersionedFixtureInterface, ContainerAwareInterface, DependentFixtureInterface + { + use ContainerAwareTrait; + +@@ -123,4 +125,14 @@ + + return $translationKey->getId() ?: false; + } ++ ++ /** ++ * @inhericDoc ++ */ ++ public function getDependencies() ++ { ++ return [ ++ LoadLanguageData::class ++ ]; ++ } + } diff --git a/pdepend.xml.dist b/pdepend.xml.dist new file mode 100644 index 000000000..98099fd06 --- /dev/null +++ b/pdepend.xml.dist @@ -0,0 +1,11 @@ + + + + + memory + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 000000000..ca4bd336e --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,40 @@ + + RewriteEngine On + + # Maintenance mode rewrites # + RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f + RewriteCond %{DOCUMENT_ROOT}/../app/cache/maintenance_lock -f + RewriteCond %{SCRIPT_FILENAME} !maintenance.html + RewriteRule ^.*$ /maintenance.html [R=503,L] + ErrorDocument 503 /maintenance.html + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php [QSA,L] + + RewriteCond %{HTTP:Authorization} ^(.*) + RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] + + + + AddOutputFilterByType DEFLATE text/html text/plain + AddOutputFilterByType DEFLATE text/css + AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript + AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml + AddOutputFilterByType DEFLATE image/x-icon + AddOutputFilterByType DEFLATE image/svg+xml + AddOutputFilterByType DEFLATE application/rss+xml + AddOutputFilterByType DEFLATE application/x-font application/x-font-truetype application/x-font-ttf application/x-font-otf application/x-font-opentype application/vnd.ms-fontobject font/ttf font/otf font/opentype + BrowserMatch \bMSIE !no-gzip !gzip-only-text/html + + + + # One week for css and js + + Header set Cache-Control "max-age=604800, public" + + + # Three weeks for images, fonts, icons, video, audio etc. + + Header set Cache-Control "max-age=1814400, public" + + diff --git a/web/apple-touch-icon-precomposed.png b/public/apple-touch-icon-precomposed.png similarity index 100% rename from web/apple-touch-icon-precomposed.png rename to public/apple-touch-icon-precomposed.png diff --git a/web/apple-touch-icon.png b/public/apple-touch-icon.png similarity index 100% rename from web/apple-touch-icon.png rename to public/apple-touch-icon.png diff --git a/web/browserconfig.xml b/public/browserconfig.xml similarity index 100% rename from web/browserconfig.xml rename to public/browserconfig.xml diff --git a/web/favicon.ico b/public/favicon.ico similarity index 100% rename from web/favicon.ico rename to public/favicon.ico diff --git a/web/app.php b/public/index.php similarity index 68% rename from web/app.php rename to public/index.php index 2b4d5e794..e48722722 100644 --- a/web/app.php +++ b/public/index.php @@ -1,9 +1,9 @@ register(true); */ -require_once __DIR__.'/../app/AppKernel.php'; -//require_once __DIR__.'/../app/AppCache.php'; +//require_once __DIR__.'/../src/AppCache.php'; $kernel = new AppKernel('prod', false); -$kernel->loadClassCache(); + //$kernel = new AppCache($kernel); $request = Request::createFromGlobals(); $response = $kernel->handle($request); diff --git a/web/app_dev.php b/public/index_dev.php similarity index 83% rename from web/app_dev.php rename to public/index_dev.php index d0bd9d5a4..a12a8e524 100644 --- a/web/app_dev.php +++ b/public/index_dev.php @@ -5,6 +5,7 @@ ini_set('display_errors', 'On'); use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\Debug\Debug; // If you don't want to setup permissions the proper way, just uncomment the following PHP line // read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information @@ -12,20 +13,21 @@ // This check prevents access to debug front controllers that are deployed by accident to production servers. // Feel free to remove this, extend it, or make something more sophisticated. -/*if (isset($_SERVER['HTTP_CLIENT_IP']) +if (isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) ) { header('HTTP/1.0 403 Forbidden'); exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); } -*/ -$loader = require_once __DIR__.'/../app/bootstrap.php.cache'; -require_once __DIR__.'/../app/AppKernel.php'; +/** @var \Composer\Autoload\ClassLoader $loader */ +$loader = require __DIR__.'/../vendor/autoload.php'; + +Debug::enable(); $kernel = new AppKernel('dev', true); -$kernel->loadClassCache(); + $request = Request::createFromGlobals(); $response = $kernel->handle($request); $response->send(); diff --git a/public/maintenance.html b/public/maintenance.html new file mode 100644 index 000000000..5751dbb99 --- /dev/null +++ b/public/maintenance.html @@ -0,0 +1,16 @@ + + + + Down For Maintenance + + + + +

    Down For Maintenance

    +

    Sorry for the inconvenience, but we’re performing a maintenance at the moment.

    +

    We’ll be back online shortly!

    + + diff --git a/app/attachments/.gitkeep b/public/media/.gitkeep old mode 100755 new mode 100644 similarity index 100% rename from app/attachments/.gitkeep rename to public/media/.gitkeep diff --git a/public/notinstalled.html b/public/notinstalled.html new file mode 100644 index 000000000..49099ea50 --- /dev/null +++ b/public/notinstalled.html @@ -0,0 +1,15 @@ + + + + The application is not installed + + + + +

    The application is not installed.

    +

    Please, follow the installation guidance provided here: https://docs.diamantedesk.com/en/latest/installation-guide

    + + diff --git a/web/robots.txt b/public/robots.txt similarity index 100% rename from web/robots.txt rename to public/robots.txt diff --git a/app/cache/.gitkeep b/public/uploads/.gitkeep similarity index 100% rename from app/cache/.gitkeep rename to public/uploads/.gitkeep diff --git a/src/.htaccess b/src/.htaccess new file mode 100644 index 000000000..3418e55a6 --- /dev/null +++ b/src/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/app/AppCache.php b/src/AppCache.php similarity index 78% rename from app/AppCache.php rename to src/AppCache.php index ddb51db05..b60ea8b59 100644 --- a/app/AppCache.php +++ b/src/AppCache.php @@ -1,5 +1,9 @@ getEnvironment()) { + $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); + $bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle(); + $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); + $bundles[] = new Oro\TwigInspector\Bundle\OroTwigInspectorBundle(); + if (class_exists('Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle')) { + $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); + } + } + + if ('test' === $this->getEnvironment()) { + $bundles[] = new Oro\Bundle\TestFrameworkBundle\OroTestFrameworkBundle(); + } + + return array_merge(parent::registerBundles(), $bundles); + } + + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load(function (ContainerBuilder $container) { + $container->setParameter('container.autowiring.strict_mode', true); + $container->setParameter('container.dumper.inline_class_loader', true); + $container->addObjectResource($this); + }); + + $loader->load(__DIR__.'/../config/config_'.$this->getEnvironment().'.yml'); + } + + /** + * {@inheritdoc} + */ + public function getRootDir() + { + return __DIR__; + } + + /** + * {@inheritdoc} + */ + public function getCacheDir() + { + return dirname(__DIR__).'/var/cache/'.$this->environment; + } + + /** + * {@inheritdoc} + */ + public function getLogDir() + { + return dirname(__DIR__).'/var/logs'; + } +} diff --git a/src/Diamante/ApiBundle/DependencyInjection/Security/Factory/Factory.php b/src/Diamante/ApiBundle/DependencyInjection/Security/Factory/Factory.php index ee6f03d5b..31cc9c384 100644 --- a/src/Diamante/ApiBundle/DependencyInjection/Security/Factory/Factory.php +++ b/src/Diamante/ApiBundle/DependencyInjection/Security/Factory/Factory.php @@ -16,7 +16,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\DefinitionDecorator; +use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\Config\Definition\Builder\NodeDefinition; use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface; @@ -26,11 +26,11 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider, { $providerId = 'security.authentication.provider.wsse.' . $id; $container - ->setDefinition($providerId, new DefinitionDecorator('wsse.security.authentication.provider')) + ->setDefinition($providerId, new ChildDefinition('wsse.security.authentication.provider')) ->replaceArgument(0, new Reference($userProvider)); $listenerId = 'security.authentication.listener.wsse.' . $id; - $container->setDefinition($listenerId, new DefinitionDecorator('wsse.security.authentication.listener')); + $container->setDefinition($listenerId, new ChildDefinition('wsse.security.authentication.listener')); return array($providerId, $listenerId, $defaultEntryPoint); } diff --git a/src/Diamante/ApiBundle/Resources/config/services.xml b/src/Diamante/ApiBundle/Resources/config/services.xml index cf2a6f271..7397220fb 100644 --- a/src/Diamante/ApiBundle/Resources/config/services.xml +++ b/src/Diamante/ApiBundle/Resources/config/services.xml @@ -56,7 +56,7 @@ - + @@ -84,13 +84,13 @@ - + - + diff --git a/src/Diamante/ApiBundle/Routine/Tests/EventListener/DataAuditListener.php b/src/Diamante/ApiBundle/Routine/Tests/EventListener/DataAuditListener.php index 740df4659..4f47fd0a5 100644 --- a/src/Diamante/ApiBundle/Routine/Tests/EventListener/DataAuditListener.php +++ b/src/Diamante/ApiBundle/Routine/Tests/EventListener/DataAuditListener.php @@ -15,11 +15,11 @@ namespace Diamante\ApiBundle\Routine\Tests\EventListener; +use Diamante\UserBundle\Entity\ApiUser; +use Oro\Bundle\DataAuditBundle\EventListener\EntityListener; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; -use Oro\Bundle\SecurityBundle\SecurityFacade; -use \Oro\Bundle\DataAuditBundle\EventListener\EntityListener; -use Diamante\UserBundle\Entity\ApiUser; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class DataAuditListener { @@ -29,18 +29,18 @@ class DataAuditListener private $container; /** - * @var SecurityFacade + * @var TokenStorageInterface */ - private $securityFacade; + private $tokenStorage; /** * @param ContainerInterface $container - * @param SecurityFacade $securityFacade + * @param TokenStorageInterface $tokenStorage */ - public function __construct(ContainerInterface $container, SecurityFacade $securityFacade) + public function __construct(ContainerInterface $container, TokenStorageInterface $tokenStorage) { - $this->container = $container; - $this->securityFacade = $securityFacade; + $this->container = $container; + $this->tokenStorage = $tokenStorage; } /** @@ -48,11 +48,17 @@ public function __construct(ContainerInterface $container, SecurityFacade $secur */ public function onKernelController(FilterControllerEvent $event) { - $env = $this->container->getParameter("kernel.environment"); - $user = $this->securityFacade->getLoggedUser(); + $env = $this->container->getParameter("kernel.environment"); + $token = $this->tokenStorage->getToken(); + + if (!$token) { + return; + } + + $user = $token->getUser(); if ('test' == $env && $user instanceof ApiUser) { - $em = $this->container->get('doctrine.orm.entity_manager'); + $em = $this->container->get('doctrine.orm.entity_manager'); $eventManager = $em->getEventManager(); foreach ($eventManager->getListeners()['onFlush'] as $hash => $listener) { if ($listener instanceof EntityListener) { diff --git a/src/Diamante/ApiBundle/Security/Firewall/WsseListener.php b/src/Diamante/ApiBundle/Security/Firewall/WsseListener.php index a9d925e98..fc263d0b7 100644 --- a/src/Diamante/ApiBundle/Security/Firewall/WsseListener.php +++ b/src/Diamante/ApiBundle/Security/Firewall/WsseListener.php @@ -21,7 +21,7 @@ use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\Security\Http\Firewall\ListenerInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use JMS\Serializer\Serializer; @@ -30,21 +30,21 @@ class WsseListener implements ListenerInterface { protected $serializer; - protected $securityContext; + protected $tokenStorage; protected $authenticationManager; protected $logger; public function __construct( Serializer $serializer, - SecurityContextInterface $securityContext, + TokenStorageInterface $tokenStorage, AuthenticationManagerInterface $authenticationManager, Logger $logger ) { - $this->serializer = $serializer; - $this->securityContext = $securityContext; + $this->serializer = $serializer; + $this->tokenStorage = $tokenStorage; $this->authenticationManager = $authenticationManager; - $this->logger = $logger; + $this->logger = $logger; } public function handle(GetResponseEvent $event) @@ -79,7 +79,7 @@ public function handle(GetResponseEvent $event) "If you didn't receive your verification email, please click here."); } - return $this->securityContext->setToken($returnValue); + return $this->tokenStorage->setToken($returnValue); } else if ($returnValue instanceof Response) { $event->setResponse($returnValue); diff --git a/src/Diamante/AutomationBundle/Command/CronCommand.php b/src/Diamante/AutomationBundle/Command/CronCommand.php index f17f6390c..8b1aee8da 100644 --- a/src/Diamante/AutomationBundle/Command/CronCommand.php +++ b/src/Diamante/AutomationBundle/Command/CronCommand.php @@ -54,23 +54,8 @@ protected function execute(InputInterface $input, OutputInterface $output) } $em = $this->getContainer()->get('doctrine.orm.entity_manager'); - $daemon = $this->getContainer()->get('oro_cron.job_daemon'); $schedules = $em->getRepository('DiamanteAutomationBundle:Schedule')->findAll(); - // check if daemon is running - if (!$daemon->getPid()) { - $output->writeln(''); - $output->write('Daemon process not found, running.. '); - - if ($pid = $daemon->run()) { - $output->writeln(sprintf('OK (pid: %u)', $pid)); - } else { - $output->writeln('failed. Cron jobs can\'t be launched.'); - - return 255; - } - } - foreach ($schedules as $schedule) { $command = $schedule->getCommand(); $parameters = $schedule->getParameters(); diff --git a/src/Diamante/AutomationBundle/Configuration/FrontendOptionsResolver.php b/src/Diamante/AutomationBundle/Configuration/FrontendOptionsResolver.php index 382ac31a1..b3bdf0abe 100644 --- a/src/Diamante/AutomationBundle/Configuration/FrontendOptionsResolver.php +++ b/src/Diamante/AutomationBundle/Configuration/FrontendOptionsResolver.php @@ -78,8 +78,8 @@ public function resolve(array $configuration) protected function resolveFromClass($config) { $config = trim($config, self::RESOLVE_MARKER_CLASS); - - list($class, $method) = explode('::', $config); + [$class, $method] = explode('::', $config); + $class = str_replace('\\\\', '\\', $class); if (!class_exists($class)) { throw new \RuntimeException("Invalid configuration"); diff --git a/src/Diamante/AutomationBundle/Controller/AutomationTrait.php b/src/Diamante/AutomationBundle/Controller/AutomationTrait.php index 18e8ab2cb..5605351ce 100644 --- a/src/Diamante/AutomationBundle/Controller/AutomationTrait.php +++ b/src/Diamante/AutomationBundle/Controller/AutomationTrait.php @@ -16,9 +16,12 @@ namespace Diamante\AutomationBundle\Controller; use Diamante\AutomationBundle\Api\Command\UpdateRuleCommand; +use Diamante\AutomationBundle\Form\Type\UpdateRuleType; use Diamante\DeskBundle\Controller\Shared; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; trait AutomationTrait @@ -65,16 +68,17 @@ protected function view($type, $id) * * @return array */ - protected function create($type) + protected function create(Request $request, $type) { $command = new UpdateRuleCommand(); - $form = $this->createForm('diamante_automation_update_rule_form', $command); + /** @var FormInterface $form */ + $form = $this->createForm(UpdateRuleType::class, $command); $formView = $form->createView(); $configProvider = $this->container->get('diamante_automation.config.provider'); $config = $configProvider->prepareConfigDump($this->container->get('translator.default')); try { - $this->handle($form); + $this->handle($request, $form); $rule = $this->get('diamante.rule.service')->createRule($command->rule); $this->addSuccessMessage('diamante.automation.rule.messages.create.success'); @@ -98,10 +102,11 @@ protected function create($type) * * @return array */ - protected function update($type, $id) + protected function update(Request $request, $type, $id) { $command = new UpdateRuleCommand(); - $form = $this->createForm('diamante_automation_update_rule_form', $command); + /** @var FormInterface $form */ + $form = $this->createForm(UpdateRuleType::class, $command); $formView = $form->createView(); $rule = $this->get('diamante.rule.service')->viewRule($type, $id); @@ -109,7 +114,7 @@ protected function update($type, $id) $configProvider = $this->container->get('diamante_automation.config.provider'); $config = $configProvider->prepareConfigDump($this->container->get('translator.default')); try { - $this->handle($form); + $this->handle($request, $form); $rule = $this->get('diamante.rule.service')->updateRule($command->rule, $id); diff --git a/src/Diamante/AutomationBundle/Controller/EventTriggeredController.php b/src/Diamante/AutomationBundle/Controller/EventTriggeredController.php index 014a4dc9b..e22a80b3f 100644 --- a/src/Diamante/AutomationBundle/Controller/EventTriggeredController.php +++ b/src/Diamante/AutomationBundle/Controller/EventTriggeredController.php @@ -19,6 +19,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** @@ -34,6 +35,7 @@ class EventTriggeredController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; use AutomationTrait; /** @@ -83,13 +85,14 @@ public function viewAction($type, $id) * ) * @Template("DiamanteAutomationBundle:Automation:create.html.twig") * + * @param Request $request * @param string $type * * @return array */ - public function createAction($type) + public function createAction(Request $request, $type) { - return $this->create($type); + return $this->create($request, $type); } /** @@ -103,14 +106,15 @@ public function createAction($type) * ) * @Template("DiamanteAutomationBundle:Automation:update.html.twig") * + * @param Request $request * @param string $type - * @param int $id + * @param int $id * * @return array */ - public function updateAction($type, $id) + public function updateAction(Request $request, $type, $id) { - return $this->update($type, $id); + return $this->update($request, $type, $id); } /** diff --git a/src/Diamante/AutomationBundle/Controller/TimeTriggeredController.php b/src/Diamante/AutomationBundle/Controller/TimeTriggeredController.php index 022e9fa39..6ddfdb697 100644 --- a/src/Diamante/AutomationBundle/Controller/TimeTriggeredController.php +++ b/src/Diamante/AutomationBundle/Controller/TimeTriggeredController.php @@ -19,6 +19,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** @@ -34,6 +35,7 @@ class TimeTriggeredController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; use AutomationTrait; /** @@ -83,13 +85,14 @@ public function viewAction($type, $id) * ) * @Template("DiamanteAutomationBundle:Automation:create.html.twig") * + * @param Request $request * @param string $type * * @return array */ - public function createAction($type) + public function createAction(Request $request, $type) { - return $this->create($type); + return $this->create($request, $type); } /** @@ -103,14 +106,15 @@ public function createAction($type) * ) * @Template("DiamanteAutomationBundle:Automation:update.html.twig") * + * @param Request $request * @param string $type - * @param int $id + * @param int $id * * @return array */ - public function updateAction($type, $id) + public function updateAction(Request $request, $type, $id) { - return $this->update($type, $id); + return $this->update($request, $type, $id); } /** diff --git a/src/Diamante/AutomationBundle/DependencyInjection/DiamanteAutomationExtension.php b/src/Diamante/AutomationBundle/DependencyInjection/DiamanteAutomationExtension.php index d76dca2c7..2bf247fe3 100644 --- a/src/Diamante/AutomationBundle/DependencyInjection/DiamanteAutomationExtension.php +++ b/src/Diamante/AutomationBundle/DependencyInjection/DiamanteAutomationExtension.php @@ -70,7 +70,7 @@ protected function getConfig(ContainerBuilder $container) $cache->write(ConfigCacheDumper::dump($config)); } - $config = require $cache; + $config = require $cache->getPath(); return $config; } diff --git a/src/Diamante/AutomationBundle/EventListener/DiamanteUserListener.php b/src/Diamante/AutomationBundle/EventListener/DiamanteUserListener.php index 97bf43a7e..adcb42262 100644 --- a/src/Diamante/AutomationBundle/EventListener/DiamanteUserListener.php +++ b/src/Diamante/AutomationBundle/EventListener/DiamanteUserListener.php @@ -55,7 +55,12 @@ public function preUpdate(LifecycleEventArgs $eventArgs) } $isDeleted = $eventArgs->hasChangedField('isDeleted'); - $isDeletedValue = $eventArgs->getNewValue('isDeleted'); + + try{ + $isDeletedValue = $eventArgs->getNewValue('isDeleted'); + }catch (\InvalidArgumentException $exception) { + $isDeletedValue = false; + } if (!$isDeleted || !$isDeletedValue) { return; diff --git a/src/Diamante/AutomationBundle/EventListener/EventTriggeredListener.php b/src/Diamante/AutomationBundle/EventListener/EventTriggeredListener.php index 13f44556c..dc4ee1933 100644 --- a/src/Diamante/AutomationBundle/EventListener/EventTriggeredListener.php +++ b/src/Diamante/AutomationBundle/EventListener/EventTriggeredListener.php @@ -25,6 +25,7 @@ use Diamante\UserBundle\Model\User; use Doctrine\ORM\Event\LifecycleEventArgs; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class EventTriggeredListener { @@ -130,7 +131,7 @@ protected function handle(LifecycleEventArgs $args, $action, $getChangeset) $getChangeset($entity) ); - $loggedUser = $this->container->get('oro_security.security_facade')->getLoggedUser(); + $loggedUser = $this->getLoggedUser(); $disableListeners = true; // don't disable listeners if you edit both comment and ticket status on create action @@ -171,7 +172,7 @@ protected function handle(LifecycleEventArgs $args, $action, $getChangeset) */ private function getEditor($entity, $type) { - $loggedUser = $this->container->get('oro_security.security_facade')->getLoggedUser(); + $loggedUser = $this->getLoggedUser(); if (is_null($loggedUser)) { if (static::TICKET_TARGET == $type) { @@ -187,4 +188,28 @@ private function getEditor($entity, $type) return $editor; } + + /** + * Get logged user or null + * + * @return object|null + */ + private function getLoggedUser() + { + /** @var TokenStorageInterface $tokenStorage */ + $tokenStorage = $this->container->get('security.token_storage'); + $token = $tokenStorage->getToken(); + + if (!$token) { + return null; + } + + $user = $token->getUser(); + + if (!is_object($user)) { + return null; + } + + return $user; + } } diff --git a/src/Diamante/AutomationBundle/Form/Type/UpdateRuleType.php b/src/Diamante/AutomationBundle/Form/Type/UpdateRuleType.php index dcb98eb60..cbe694753 100644 --- a/src/Diamante/AutomationBundle/Form/Type/UpdateRuleType.php +++ b/src/Diamante/AutomationBundle/Form/Type/UpdateRuleType.php @@ -17,8 +17,10 @@ use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\AutomationBundle\Api\Command\UpdateRuleCommand; class UpdateRuleType extends AbstractType { @@ -26,6 +28,11 @@ class UpdateRuleType extends AbstractType * @return mixed */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_automation_update_rule_form'; } @@ -38,21 +45,21 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'rule', - 'hidden', + HiddenType::class, [ - "required" => true + 'required' => true ] ); } /** - * @param OptionsResolverInterface $resolver + * @param OptionsResolver $resolver */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( [ - 'data_class' => 'Diamante\AutomationBundle\Api\Command\UpdateRuleCommand', + 'data_class' => UpdateRuleCommand::class, 'intention' => 'rule' ] ); diff --git a/src/Diamante/AutomationBundle/MassAction/Handlers/RuleStateMassActionHandler.php b/src/Diamante/AutomationBundle/MassAction/Handlers/RuleStateMassActionHandler.php index 829bb85c0..17d30882f 100644 --- a/src/Diamante/AutomationBundle/MassAction/Handlers/RuleStateMassActionHandler.php +++ b/src/Diamante/AutomationBundle/MassAction/Handlers/RuleStateMassActionHandler.php @@ -16,16 +16,14 @@ namespace Diamante\AutomationBundle\MassAction\Handlers; use Doctrine\ORM\EntityManager; - -use Symfony\Component\Translation\TranslatorInterface; - -use Oro\Bundle\DataGridBundle\Exception\LogicException; -use Oro\Bundle\DataGridBundle\Datasource\ResultRecordInterface; use Oro\Bundle\DataGridBundle\Datasource\Orm\DeletionIterableResult; -use Oro\Bundle\SecurityBundle\SecurityFacade; -use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionHandlerInterface; +use Oro\Bundle\DataGridBundle\Datasource\ResultRecordInterface; +use Oro\Bundle\DataGridBundle\Exception\LogicException; use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionHandlerArgs; +use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionHandlerInterface; use Oro\Bundle\DataGridBundle\Extension\MassAction\MassActionResponse; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; +use Symfony\Component\Translation\TranslatorInterface; abstract class RuleStateMassActionHandler implements MassActionHandlerInterface { @@ -41,22 +39,22 @@ abstract class RuleStateMassActionHandler implements MassActionHandlerInterface */ protected $translator; - /** @var SecurityFacade */ - protected $securityFacade; + /** @var AuthorizationCheckerInterface */ + protected $authorizationChecker; /** * @param EntityManager $entityManager * @param TranslatorInterface $translator - * @param SecurityFacade $securityFacade + * @param AuthorizationCheckerInterface $authorizationChecker */ public function __construct( EntityManager $entityManager, TranslatorInterface $translator, - SecurityFacade $securityFacade + AuthorizationCheckerInterface $authorizationChecker ) { - $this->entityManager = $entityManager; - $this->translator = $translator; - $this->securityFacade = $securityFacade; + $this->entityManager = $entityManager; + $this->translator = $translator; + $this->authorizationChecker = $authorizationChecker; } /** @@ -92,7 +90,7 @@ public function handleState(MassActionHandlerArgs $args, $callback) } if ($entity) { - if ($this->securityFacade->isGranted('EDIT', $entity)) { + if ($this->authorizationChecker->isGranted('EDIT', $entity)) { $callback($entity); $this->entityManager->persist($entity); $iteration++; diff --git a/src/Diamante/AutomationBundle/Resources/config/automation.yml b/src/Diamante/AutomationBundle/Resources/config/automation.yml index e67531b84..c4a5b2add 100644 --- a/src/Diamante/AutomationBundle/Resources/config/automation.yml +++ b/src/Diamante/AutomationBundle/Resources/config/automation.yml @@ -71,14 +71,14 @@ diamante_automation: actions: update_property: - id: @diamante_automation.action.update_property + id: '@diamante_automation.action.update_property' frontend_label: diamante.automation.action.update_property frontend_options: source: "@diamante.autocomplete.user.service->getAssigners" data_types: ['*', '!user', '!users'] notify_by_email: - id: @diamante_automation.action.notify_by_email + id: '@diamante_automation.action.notify_by_email' frontend_label: diamante.automation.action.notify_by_email frontend_options: source: "@diamante.autocomplete.user.service->getNotifyActionList" - data_types: ['*'] \ No newline at end of file + data_types: ['*'] diff --git a/src/Diamante/AutomationBundle/Resources/config/conditions.xml b/src/Diamante/AutomationBundle/Resources/config/conditions.xml index aa8fe6f2b..731004ef3 100644 --- a/src/Diamante/AutomationBundle/Resources/config/conditions.xml +++ b/src/Diamante/AutomationBundle/Resources/config/conditions.xml @@ -32,58 +32,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/Diamante/AutomationBundle/Resources/config/forms.xml b/src/Diamante/AutomationBundle/Resources/config/forms.xml index 2482966e1..9198ce382 100644 --- a/src/Diamante/AutomationBundle/Resources/config/forms.xml +++ b/src/Diamante/AutomationBundle/Resources/config/forms.xml @@ -9,7 +9,7 @@ - + \ No newline at end of file diff --git a/src/Diamante/AutomationBundle/Resources/config/oro/assets.yml b/src/Diamante/AutomationBundle/Resources/config/oro/assets.yml index eb8ddaa6a..29ae93dd1 100644 --- a/src/Diamante/AutomationBundle/Resources/config/oro/assets.yml +++ b/src/Diamante/AutomationBundle/Resources/config/oro/assets.yml @@ -1,4 +1,3 @@ -assets: - css: - 'diamanteautomation': - - 'bundles/diamanteautomation/css/less/main.less' +css: + inputs: + - 'bundles/diamanteautomation/css/main.css' diff --git a/src/Diamante/AutomationBundle/Resources/config/oro/datagrids.yml b/src/Diamante/AutomationBundle/Resources/config/oro/datagrids.yml index fc9bf65f8..50317b5e5 100644 --- a/src/Diamante/AutomationBundle/Resources/config/oro/datagrids.yml +++ b/src/Diamante/AutomationBundle/Resources/config/oro/datagrids.yml @@ -149,7 +149,7 @@ datagrids: time: label: diamante.automation.rule.time_triggered.repetition_time frontend_type: select - choices: @diamante_automation.datagrid.helper->getTimeIntervalChoices + choices: '@diamante_automation.datagrid.helper->getTimeIntervalChoices' status: label: diamante.automation.attributes.status @@ -201,4 +201,4 @@ datagrids: acl_resource: EDIT;Entity:DiamanteAutomationBundle:TimeTriggeredRule entity_name: DiamanteAutomationBundle:TimeTriggeredRule data_identifier: b.id - icon: check \ No newline at end of file + icon: check diff --git a/src/Diamante/AutomationBundle/Resources/config/services.xml b/src/Diamante/AutomationBundle/Resources/config/services.xml index 5c3eb61f7..4b14520e0 100644 --- a/src/Diamante/AutomationBundle/Resources/config/services.xml +++ b/src/Diamante/AutomationBundle/Resources/config/services.xml @@ -58,24 +58,18 @@ - + + %diamante_automation.schedule.entity.class% - + + %diamante_automation.event_triggered_rule.entity.class% - + + %diamante_automation.time_triggered_rule.entity.class% @@ -123,7 +117,7 @@ - + @@ -188,24 +182,24 @@ - + - + - + - + diff --git a/src/Diamante/AutomationBundle/Resources/public/css/main.css b/src/Diamante/AutomationBundle/Resources/public/css/main.css new file mode 100644 index 000000000..edbde34e4 --- /dev/null +++ b/src/Diamante/AutomationBundle/Resources/public/css/main.css @@ -0,0 +1,151 @@ +.diam-automation .control-group:before, +.diam-automation .control-group:after { + display: table; + content: ""; + line-height: 0; +} +.diam-automation .control-group:after { + clear: both; +} +.diam-automation .control-group .selector, +.diam-automation .control-group .select2-container { + display: inline-block; + vertical-align: middle; +} +.diam-automation .control-group input { + margin-bottom: 0; +} +.diam-automation .control-group .value { + display: inline-block; + line-height: 28px; + height: 30px; + vertical-align: middle; + padding: 0 5px; + border: 1px solid #ddd; + border-radius: 3px; + margin: 0; + font-weight: bold; +} +.diam-automation .control-group label.value { + text-transform: uppercase !important; +} +.diam-automation .control-group .controls { + margin-bottom: 10px; +} +.actions-list > div:before, +.conditions-list > div:before, +.actions-list > div:after, +.conditions-list > div:after { + display: table; + content: ""; + line-height: 0; +} +.actions-list > div:after, +.conditions-list > div:after { + clear: both; +} +.actions-list .control-item, +.conditions-list .control-item { + display: inline-block; + width: 15%; + vertical-align: top; +} +.actions-list input, +.conditions-list input { + width: 100%; + height: 30px; + box-sizing: border-box; +} +.actions-list .select2-container, +.conditions-list .select2-container { + width: 15%; +} +.actions-list .selector, +.conditions-list .selector { + width: 15% !important; +} +.actions-list .selector span, +.conditions-list .selector span { + width: 100% !important; +} +.actions-list .label, +.conditions-list .label { + vertical-align: middle; +} +.grouping-list { + margin-top: 10px; +} +.grouping-children-list > .control-group { + padding: 10px 10px 10px 20px; + margin: 0 0 10px; + border: 3px solid #eee; +} +.diam-modal-as-dialog { + width: 300px; + margin-left: -150px; + top: 50%; + margin-top: -76px; + border: 1px solid #bbb; + background-color: #fafafa; + border-radius: 6px; + -webkit-box-shadow: 0 1px 22px rgba(0, 0, 0, 0.4) !important; + -moz-box-shadow: 0 1px 22px rgba(0, 0, 0, 0.4) !important; + box-shadow: 0 1px 22px rgba(0, 0, 0, 0.4) !important; +} +.diam-modal-as-dialog .modal-header { + margin: -1px -1px 0 -1px; + border-radius: 4px 4px 0 0; + border-bottom: 1px solid #000; + background-color: #404952; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#47505a), to(#363e47)); + background-image: -webkit-linear-gradient(top, #47505a, #363e47); + background-image: -moz-linear-gradient(top, #47505a, #363e47); + background-image: linear-gradient(to bottom, #47505a, #363e47); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff47505a', endColorstr='#ff363e47', GradientType=0); + padding: 6px 15px; +} +.diam-modal-as-dialog .modal-header h3 { + color: #fff; + line-height: 20px; + font-size: 13px; + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.diam-modal-as-dialog .modal-header .close { + opacity: 1; + display: inline-block; + border: 1px solid #272e36; + width: 24px; + height: 22px; + color: #fff; + font-size: 14px; + text-align: center; + line-height: 19px; + text-shadow: 0 1px 0 #45505c; + margin: 0 !important; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #6b7580; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#838d98), to(#46515d)); + background-image: -webkit-linear-gradient(top, #838d98, #46515d); + background-image: -moz-linear-gradient(top, #838d98, #46515d); + background-image: linear-gradient(to bottom, #838d98, #46515d); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff838d98', endColorstr='#ff46515d', GradientType=0); +} +.diam-modal-as-dialog .modal-header .close:hover { + background-color: #5e6874; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#75808c), to(#3b444e)); + background-image: -webkit-linear-gradient(top, #75808c, #3b444e); + background-image: -moz-linear-gradient(top, #75808c, #3b444e); + background-image: linear-gradient(to bottom, #75808c, #3b444e); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff75808c', endColorstr='#ff3b444e', GradientType=0); +} +.diam-modal-as-dialog .modal-body { + padding: 10px; +} diff --git a/src/Diamante/DeskBundle/Api/BranchService.php b/src/Diamante/DeskBundle/Api/BranchService.php index 347ef31e3..e0ddb3dba 100644 --- a/src/Diamante/DeskBundle/Api/BranchService.php +++ b/src/Diamante/DeskBundle/Api/BranchService.php @@ -15,7 +15,7 @@ namespace Diamante\DeskBundle\Api; use Diamante\DeskBundle\Model\Branch\Branch; -use Diamante\DeskBundle\Model\Branch\DuplicateBranchKeyException; +use Diamante\DeskBundle\Model\Branch\Exception\DuplicateBranchKeyException; /** * Interface BranchService diff --git a/src/Diamante/DeskBundle/Api/Command/AddWatcherCommand.php b/src/Diamante/DeskBundle/Api/Command/AddWatcherCommand.php index fd7ac12a6..e08b01064 100644 --- a/src/Diamante/DeskBundle/Api/Command/AddWatcherCommand.php +++ b/src/Diamante/DeskBundle/Api/Command/AddWatcherCommand.php @@ -26,7 +26,7 @@ class AddWatcherCommand implements Shared\Command public $id; /** - * @Any({@Assert\Email(), @Assert\Type(type="object"), @Assert\Null()}) + * @Any({@Assert\Email(), @Assert\Type(type="object"), @Assert\IsNull()}) */ public $watcher; } diff --git a/src/Diamante/DeskBundle/Api/Command/BranchCommand.php b/src/Diamante/DeskBundle/Api/Command/BranchCommand.php index cc23f8c2c..9318220cb 100644 --- a/src/Diamante/DeskBundle/Api/Command/BranchCommand.php +++ b/src/Diamante/DeskBundle/Api/Command/BranchCommand.php @@ -21,7 +21,7 @@ class BranchCommand implements Shared\Command { - const PERSISTENT_ENTITY = 'Diamante\DeskBundle\Entity\Branch'; + const PERSISTENT_ENTITY = \Diamante\DeskBundle\Entity\Branch::class; /** * @Assert\Type(type="integer") diff --git a/src/Diamante/DeskBundle/Api/CommentService.php b/src/Diamante/DeskBundle/Api/CommentService.php index 6e2a0cbf2..55cfde910 100644 --- a/src/Diamante/DeskBundle/Api/CommentService.php +++ b/src/Diamante/DeskBundle/Api/CommentService.php @@ -82,8 +82,9 @@ public function deleteTicketComment($commentId); /** * Remove Attachment from Comment * @param RemoveCommentAttachmentCommand $command + * @param boolean $flush * @return void * @throws \RuntimeException if Comment does not exists or Comment has no particular attachment */ - public function removeAttachmentFromComment(RemoveCommentAttachmentCommand $command); + public function removeAttachmentFromComment(RemoveCommentAttachmentCommand $command, $flush = false); } diff --git a/src/Diamante/DeskBundle/Api/Internal/BranchApiServiceImpl.php b/src/Diamante/DeskBundle/Api/Internal/BranchApiServiceImpl.php index 1396200f9..a43f4d055 100644 --- a/src/Diamante/DeskBundle/Api/Internal/BranchApiServiceImpl.php +++ b/src/Diamante/DeskBundle/Api/Internal/BranchApiServiceImpl.php @@ -18,7 +18,7 @@ use Diamante\ApiBundle\Routing\RestServiceInterface; use Diamante\DeskBundle\Api\ApiPagingService; use Diamante\DeskBundle\Api\Command; -use Diamante\DeskBundle\Model\Branch\DuplicateBranchKeyException; +use Diamante\DeskBundle\Model\Branch\Exception\DuplicateBranchKeyException; use Diamante\DeskBundle\Model\Branch\Filter\BranchFilterCriteriaProcessor; use Diamante\DeskBundle\Model\Branch\Exception\BranchHasTicketsException; diff --git a/src/Diamante/DeskBundle/Api/Internal/BranchServiceImpl.php b/src/Diamante/DeskBundle/Api/Internal/BranchServiceImpl.php index b1d767b3f..43bbe5dea 100644 --- a/src/Diamante/DeskBundle/Api/Internal/BranchServiceImpl.php +++ b/src/Diamante/DeskBundle/Api/Internal/BranchServiceImpl.php @@ -20,10 +20,7 @@ use Diamante\DeskBundle\Infrastructure\Branch\BranchLogoHandler; use Diamante\DeskBundle\Model\Branch\Exception\BranchNotFoundException; use Diamante\DeskBundle\Model\Branch\Logo; -use Diamante\DeskBundle\Model\Shared\FilterableRepository; use Diamante\DeskBundle\Model\Shared\Repository; -use Diamante\UserBundle\Api\UserService; -use Diamante\UserBundle\Model\User; use Doctrine\Bundle\DoctrineBundle\Registry; use Diamante\DeskBundle\Model\Shared\Authorization\AuthorizationService; use Oro\Bundle\SecurityBundle\Exception\ForbiddenException; @@ -43,7 +40,7 @@ class BranchServiceImpl implements BranchService private $branchFactory; /** - * @var \Diamante\DeskBundle\Infrastructure\Branch\BranchLogoHandler + * @var BranchLogoHandler */ private $branchLogoHandler; @@ -79,8 +76,9 @@ public function __construct( public function getAllBranches() { $this->isGranted('VIEW', 'Entity:DiamanteDeskBundle:Branch'); - - return $this->branchRepository->getAll(); + /** @var Branch[] $branches */ + $branches = $this->branchRepository->getAll(); + return $branches; } /** @@ -91,9 +89,10 @@ public function getAllBranches() public function getBranch($id) { $this->isGranted('VIEW', 'Entity:DiamanteDeskBundle:Branch'); + /** @var Branch $branch */ $branch = $this->branchRepository->get($id); - if (is_null($branch)) { + if ($branch === null) { throw new BranchNotFoundException(); } @@ -143,12 +142,14 @@ public function updateBranch(Command\BranchCommand $branchCommand) $branch = $this->branchRepository->get($branchCommand->id); $assignee = $this->extractDefaultBranchAssignee($branchCommand); - if ($branchCommand->isRemoveLogo() || $branchCommand->logoFile) { + $file = $this->uploadBranchLogoIfExists($branchCommand); + if ($branchCommand->isRemoveLogo()) { $this->removeBranchLogo($branch); + if (!$branchCommand->logoFile) { + $file = new Logo(); + } } - - $file = $this->uploadBranchLogoIfExists($branchCommand); - + $branch->update($branchCommand->name, $branchCommand->description, $assignee, $file); $this->registry->getManager()->persist($branch); diff --git a/src/Diamante/DeskBundle/Api/Internal/CommentApiServiceImpl.php b/src/Diamante/DeskBundle/Api/Internal/CommentApiServiceImpl.php index eea9504a9..3b2e6a081 100644 --- a/src/Diamante/DeskBundle/Api/Internal/CommentApiServiceImpl.php +++ b/src/Diamante/DeskBundle/Api/Internal/CommentApiServiceImpl.php @@ -25,6 +25,7 @@ use Diamante\DeskBundle\Model\Ticket\Filter\CommentFilterCriteriaProcessor; use Diamante\UserBundle\Api\UserService; use Diamante\UserBundle\Model\User; +use Diamante\DeskBundle\Api\Dto\AttachmentInput; class CommentApiServiceImpl extends CommentServiceImpl implements RestServiceInterface { @@ -94,7 +95,7 @@ public function postNewCommentForTicket(Command\CommentCommand $command) $this->isGranted('CREATE', 'Entity:DiamanteDeskBundle:Comment'); \Assert\that($command->attachmentsInput)->nullOr()->all() - ->isInstanceOf('Diamante\DeskBundle\Api\Dto\AttachmentInput'); + ->isInstanceOf(AttachmentInput::class); /** * @var $ticket \Diamante\DeskBundle\Model\Ticket\Ticket @@ -306,10 +307,11 @@ public function deleteTicketComment($id) * ) * * @param RemoveCommentAttachmentCommand $command + * @param boolean $flush * @return void * @throws \RuntimeException if Comment does not exists or Comment has no particular attachment */ - public function removeAttachmentFromComment(RemoveCommentAttachmentCommand $command) + public function removeAttachmentFromComment(RemoveCommentAttachmentCommand $command, $flush = false) { parent::removeAttachmentFromComment($command, true); } diff --git a/src/Diamante/DeskBundle/Api/Internal/TicketApiServiceImpl.php b/src/Diamante/DeskBundle/Api/Internal/TicketApiServiceImpl.php index cb2aa66b9..702299e0b 100644 --- a/src/Diamante/DeskBundle/Api/Internal/TicketApiServiceImpl.php +++ b/src/Diamante/DeskBundle/Api/Internal/TicketApiServiceImpl.php @@ -254,6 +254,8 @@ public function createTicket(CreateTicketCommand $command) * * @param AddTicketAttachmentCommand $command * @return array + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException */ public function addAttachmentsForTicket(AddTicketAttachmentCommand $command) { @@ -455,7 +457,7 @@ public function listAllTickets(Command\Filter\FilterTicketsCommand $ticketFilter { $criteriaProcessor = new TicketFilterCriteriaProcessor(); $repository = $this->getTicketRepository(); - $user = $this->getAuthorizationService()->getLoggedUser()->getDiamanteUser(); + $user = $this->getAuthorizationService()->getLoggedUser(); $userType = $this->userService->resolveCurrentUserType(); $strategyProvider = new StrategyProvider(new User($user->getId(), $userType)); diff --git a/src/Diamante/DeskBundle/Api/Internal/TicketServiceImpl.php b/src/Diamante/DeskBundle/Api/Internal/TicketServiceImpl.php index 5c0cf64d2..bf9a56d78 100755 --- a/src/Diamante/DeskBundle/Api/Internal/TicketServiceImpl.php +++ b/src/Diamante/DeskBundle/Api/Internal/TicketServiceImpl.php @@ -12,6 +12,7 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\Api\Internal; use Diamante\DeskBundle\Api\Command; @@ -36,9 +37,10 @@ use Doctrine\DBAL\LockMode; use Doctrine\ORM\EntityRepository; use Oro\Bundle\SecurityBundle\Exception\ForbiddenException; -use Oro\Bundle\SecurityBundle\SecurityFacade; use Oro\Bundle\UserBundle\Entity\User as OroUser; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Diamante\DeskBundle\Api\Dto\AttachmentInput; class TicketServiceImpl implements TicketService { @@ -100,7 +102,7 @@ class TicketServiceImpl implements TicketService * @param AttachmentManager $attachmentManager * @param AuthorizationService $authorizationService * @param EventDispatcherInterface $dispatcher - * @param SecurityFacade $securityFacade + * @param TokenStorageInterface $tokenStorage */ public function __construct( Registry $doctrineRegistry, @@ -108,19 +110,17 @@ public function __construct( AttachmentManager $attachmentManager, AuthorizationService $authorizationService, EventDispatcherInterface $dispatcher, - SecurityFacade $securityFacade + TokenStorageInterface $tokenStorage ) { - $this->doctrineRegistry = $doctrineRegistry; - $this->ticketBuilder = $ticketBuilder; - $this->attachmentManager = $attachmentManager; - $this->authorizationService = $authorizationService; - $this->dispatcher = $dispatcher; - - $this->ticketRepository = $this->doctrineRegistry->getRepository('DiamanteDeskBundle:Ticket'); - $this->branchRepository = $this->doctrineRegistry->getRepository('DiamanteDeskBundle:Branch'); + $this->doctrineRegistry = $doctrineRegistry; + $this->ticketBuilder = $ticketBuilder; + $this->attachmentManager = $attachmentManager; + $this->authorizationService = $authorizationService; + $this->dispatcher = $dispatcher; + $this->ticketRepository = $this->doctrineRegistry->getRepository('DiamanteDeskBundle:Ticket'); + $this->branchRepository = $this->doctrineRegistry->getRepository('DiamanteDeskBundle:Branch'); $this->ticketHistoryRepository = $this->doctrineRegistry->getRepository('DiamanteDeskBundle:TicketHistory'); - $this->oroUserRepository = $this->doctrineRegistry->getRepository('OroUserBundle:User'); - $this->loggedUser = $securityFacade->getLoggedUser(); + $this->loggedUser = $tokenStorage->getToken() ? $tokenStorage->getToken()->getUser() : null; } /** @@ -156,12 +156,12 @@ public function loadTicketByKey($key) { $ticketHistory = $this->ticketHistoryRepository->findOneByTicketKey($key); if ($ticketHistory) { - $ticket = $this->ticketRepository->get($ticketHistory->getTicket()->getId()); + $ticket = $this->ticketRepository->get($ticketHistory->getTicket()->getId()); $currentKey = (string)$ticket->getKey(); throw new TicketMovedException($currentKey); } else { $ticketKey = TicketKey::from($key); - $ticket = $this->loadTicketByTicketKey($ticketKey); + $ticket = $this->loadTicketByTicketKey($ticketKey); } $this->isGranted('VIEW', $ticket); @@ -263,13 +263,13 @@ public function getTicketAttachment(Command\RetrieveTicketAttachmentCommand $com * * @return array * - * @throws TicketNotFoundException - * @throws ForbiddenException + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException */ public function addAttachmentsForTicket(Command\AddTicketAttachmentCommand $command) { \Assert\that($command->attachmentsInput)->nullOr()->all() - ->isInstanceOf('Diamante\DeskBundle\Api\Dto\AttachmentInput'); + ->isInstanceOf(AttachmentInput::class); $ticket = $this->loadTicketById($command->ticketId); @@ -335,15 +335,14 @@ public function createTicket(Command\CreateTicketCommand $command) $em = $this->doctrineRegistry->getManager(); $em->getConnection()->beginTransaction(); try { - $this->ticketBuilder - ->setSubject($command->subject) - ->setDescription($command->description) - ->setBranchId($command->branch) - ->setReporter($command->reporter) - ->setAssignee($command->assignee) - ->setPriority($command->priority) - ->setSource($command->source) - ->setStatus($command->status); + $this->ticketBuilder->setSubject($command->subject); + $this->ticketBuilder->setDescription($command->description); + $this->ticketBuilder->setBranchId($command->branch); + $this->ticketBuilder->setReporter($command->reporter); + $this->ticketBuilder->setAssignee($command->assignee); + $this->ticketBuilder->setPriority($command->priority); + $this->ticketBuilder->setSource($command->source); + $this->ticketBuilder->setStatus($command->status); $ticket = $this->ticketBuilder->build(); $em->lock($ticket->getBranch(), LockMode::PESSIMISTIC_READ); @@ -386,11 +385,11 @@ public function updateTicket(Command\UpdateTicketCommand $command) $assignee = null; if ($command->assignee) { - $assignee = $ticket->getAssignee(); + $assignee = $ticket->getAssignee(); $currentAssigneeId = empty($assignee) ? null : $assignee->getId(); if ($command->assignee !== $currentAssigneeId) { - $assignee = $this->oroUserRepository->find($command->assignee); + $assignee = $this->getOroUserRepository()->find($command->assignee); } } @@ -470,7 +469,7 @@ public function assignTicket(Command\AssigneeTicketCommand $command) $this->isAssigneeGranted($ticket); if ($command->assignee !== null) { - $assignee = $this->oroUserRepository->find($command->assignee); + $assignee = $this->getOroUserRepository()->find($command->assignee); if (is_null($assignee)) { throw new \RuntimeException('Assignee loading failed, assignee not found'); } @@ -516,7 +515,7 @@ public function deleteTicketByKey($key) $ticket = $this->ticketRepository->get($ticketHistory->getTicket()->getId()); } else { $ticketKey = TicketKey::from($key); - $ticket = $this->loadTicketByTicketKey($ticketKey); + $ticket = $this->loadTicketByTicketKey($ticketKey); } $this->isGranted('DELETE', $ticket); @@ -603,7 +602,7 @@ public function updateProperties(Command\UpdatePropertiesCommand $command) */ public function updatePropertiesByKey(Command\UpdatePropertiesCommand $command) { - $ticket = $this->loadTicketByKey($command->key); + $ticket = $this->loadTicketByKey($command->key); $command->id = $ticket->getId(); return $this->updateProperties($command); @@ -625,4 +624,21 @@ protected function getAuthorizationService() { return $this->authorizationService; } + + /** + * Workaround for DIAM-1920/DIAM-1921 + * This class is created during routes load (DiamanteApiBundle checks for it's annotations) + * At that time extended entity data is not yet build, so creation of any entity repository + * with extended fields will fail. + * + * @return EntityRepository + */ + protected function getOroUserRepository() + { + if (!$this->oroUserRepository) { + $this->oroUserRepository = $this->doctrineRegistry->getRepository('OroUserBundle:User'); + } + + return $this->oroUserRepository; + } } diff --git a/src/Diamante/DeskBundle/Command/FixturesPurgeCommand.php b/src/Diamante/DeskBundle/Command/FixturesPurgeCommand.php index 7fdc41e1a..660847c7b 100644 --- a/src/Diamante/DeskBundle/Command/FixturesPurgeCommand.php +++ b/src/Diamante/DeskBundle/Command/FixturesPurgeCommand.php @@ -14,6 +14,13 @@ */ namespace Diamante\DeskBundle\Command; +use Diamante\DeskBundle\Entity\Attachment; +use Diamante\DeskBundle\Entity\Branch; +use Diamante\DeskBundle\Entity\Comment; +use Diamante\DeskBundle\Entity\Ticket; +use Diamante\DeskBundle\Entity\TicketHistory; +use Diamante\UserBundle\Entity\ApiUser; +use Diamante\UserBundle\Entity\DiamanteUser; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -106,13 +113,13 @@ protected function execute(InputInterface $input, OutputInterface $output) protected function getTablesList() { $entitiesMetadata = array( - $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Branch::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Ticket::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Comment::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\Attachment::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\DeskBundle\Entity\TicketHistory::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\UserBundle\Entity\ApiUser::getClassName()), - $this->entityManager->getClassMetadata(\Diamante\UserBundle\Entity\DiamanteUser::getClassName()), + $this->entityManager->getClassMetadata(Branch::getClassName()), + $this->entityManager->getClassMetadata(Ticket::getClassName()), + $this->entityManager->getClassMetadata(Comment::getClassName()), + $this->entityManager->getClassMetadata(Attachment::getClassName()), + $this->entityManager->getClassMetadata(TicketHistory::getClassName()), + $this->entityManager->getClassMetadata(ApiUser::getClassName()), + $this->entityManager->getClassMetadata(DiamanteUser::getClassName()), $this->entityManager->getClassMetadata('\Oro\Bundle\TagBundle\Entity\Tag'), $this->entityManager->getClassMetadata('\Oro\Bundle\TagBundle\Entity\Tagging') ); diff --git a/src/Diamante/DeskBundle/Controller/BranchController.php b/src/Diamante/DeskBundle/Controller/BranchController.php index 6db697b3e..1dd354ccb 100644 --- a/src/Diamante/DeskBundle/Controller/BranchController.php +++ b/src/Diamante/DeskBundle/Controller/BranchController.php @@ -14,12 +14,15 @@ */ namespace Diamante\DeskBundle\Controller; +use Diamante\DeskBundle\Form\Type\CreateBranchType; +use Diamante\DeskBundle\Form\Type\UpdateBranchType; use Diamante\DeskBundle\Model\Branch\Exception\DuplicateBranchKeyException; use Diamante\DeskBundle\Api\Command\BranchCommand; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Form\Form; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Exception\MethodNotAllowedException; @@ -32,6 +35,7 @@ class BranchController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; /** * @Route( @@ -54,6 +58,10 @@ public function listAction() * requirements={"id"="\d+"} * ) * @Template + * + * @param string $id + * + * @return array|Response */ public function viewAction($id) { @@ -71,24 +79,32 @@ public function viewAction($id) * @Route("/create", name="diamante_branch_create") * @Template("DiamanteDeskBundle:Branch:create.html.twig") */ - public function createAction() + public function createAction(Request $request) { $command = new BranchCommand(); try { - $form = $this->createForm('diamante_branch_form', $command); + $form = $this->createForm(CreateBranchType::class, $command); - $result = $this->edit($command, $form, function($command) { - $branch = $this->get('diamante.branch.service')->createBranch($command); - return $branch->getId(); - }); + $result = $this->edit( + $request, + $command, + $form, + function ($command) { + $branch = $this->get('diamante.branch.service')->createBranch($command); + + return $branch->getId(); + } + ); } catch (\Exception $e) { $this->handleException($e); + return $this->redirect( $this->generateUrl( 'diamante_branch_create' ) ); } + return $result; } @@ -101,37 +117,42 @@ public function createAction() * @Template("DiamanteDeskBundle:Branch:update.html.twig") * * @param int $id - * @return array + * @return array|\Symfony\Component\HttpFoundation\RedirectResponse */ - public function updateAction($id) + public function updateAction(Request $request, $id) { $branch = $this->get('diamante.branch.service')->getBranch($id); $command = BranchCommand::fromBranch($branch); try { - $form = $this->createForm('diamante_update_branch_form', $command); - - $result = $this->edit($command, $form, function($command) use ($branch) { - $branchId = $this->get('diamante.branch.service')->updateBranch($command); - return $branchId; - }); + $form = $this->createForm(UpdateBranchType::class, $command); + + $result = $this->edit( + $request, + $command, + $form, + function ($command) { + return $this->get('diamante.branch.service')->updateBranch($command); + } + ); } catch (MethodNotAllowedException $e) { return $this->redirect( $this->generateUrl( 'diamante_branch_view', - array( - 'id' => $id - ) + [ + 'id' => $id, + ] ) ); } catch (\Exception $e) { $this->handleException($e); + return $this->redirect( $this->generateUrl( 'diamante_branch_view', - array( - 'id' => $id - ) + [ + 'id' => $id, + ] ) ); } @@ -145,11 +166,11 @@ public function updateAction($id) * @param Form $form * @return array */ - private function edit(BranchCommand $command, $form, $callback) + private function edit(Request $request, BranchCommand $command, $form, $callback) { $response = null; try { - $this->handle($form); + $this->handle($request, $form); if ($command->defaultAssignee) { $command->defaultAssignee = $command->defaultAssignee->getId(); } @@ -167,17 +188,18 @@ private function edit(BranchCommand $command, $form, $callback) } catch (DuplicateBranchKeyException $e) { $this->addErrorMessage($e->getMessage()); $formView = $form->createView(); - if (is_null($command->key) || empty($command->key)) { + if ($command->key === null || empty($command->key)) { $formView->children['key']->vars = array_replace( $formView->children['key']->vars, - array('value' => $this->get('diamante.branch.default_key_generator')->generate($command->name)) + ['value' => $this->get('diamante.branch.default_key_generator')->generate($command->name)] ); } - $response = array('form' => $formView); + $response = ['form' => $formView]; } catch (\Exception $e) { $this->handleException($e); - $response = array('form' => $form->createView()); + $response = ['form' => $form->createView()]; } + return $response; } @@ -191,29 +213,34 @@ private function edit(BranchCommand $command, $form, $callback) * @param int $id * @return Response */ - public function deleteAction($id) + public function deleteAction(Request $request, $id) { try { $this->get('diamante.branch.service') ->deleteBranch($id); - if (false === $this->isDeletionRequestFromGrid()) { + if (false === $this->isDeletionRequestFromGrid($request)) { $this->addSuccessMessage('diamante.desk.branch.messages.delete.success'); } - return new Response(null, 204, array( - 'Content-Type' => $this->getRequest()->getMimeType('json') - )); + + return new Response( + null, 204, [ + 'Content-Type' => $request->getMimeType('json'), + ] + ); } catch (\Exception $e) { $this->handleException($e); + return new Response($e->getMessage(), 500); } } /** + * @param Request $request * @return bool */ - private function isDeletionRequestFromGrid() + private function isDeletionRequestFromGrid(Request $request): bool { - $referer = $this->getRequest()->headers->get('referer'); + $referer = $request->headers->get('referer'); if (empty($referer)) { return false; diff --git a/src/Diamante/DeskBundle/Controller/BranchWidgetController.php b/src/Diamante/DeskBundle/Controller/BranchWidgetController.php index 3493a3a98..94a7673e1 100755 --- a/src/Diamante/DeskBundle/Controller/BranchWidgetController.php +++ b/src/Diamante/DeskBundle/Controller/BranchWidgetController.php @@ -15,8 +15,11 @@ namespace Diamante\DeskBundle\Controller; use Diamante\DeskBundle\Entity\Ticket; +use Diamante\DeskBundle\Form\Type\DeleteBranch; +use Diamante\DeskBundle\Form\Type\MassDeleteBranchType; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Diamante\DeskBundle\Model\Branch\Exception\DefaultBranchException; @@ -34,9 +37,9 @@ class BranchWidgetController extends WidgetController * @Template("DiamanteDeskBundle:Branch/widgets:deleteForm.html.twig") * */ - public function deleteBranchViewForm($id) + public function deleteBranchViewForm(Request $request, $id): array { - $response = $this->deleteBranchForm($id); + $response = $this->deleteBranchForm($request, $id); $response['delete_route'] = 'diamante_branch_view_delete_form'; return $response; @@ -51,9 +54,9 @@ public function deleteBranchViewForm($id) * @Template("DiamanteDeskBundle:Branch/widgets:deleteForm.html.twig") * */ - public function deleteBranchListForm($id) + public function deleteBranchListForm(Request $request, $id): array { - $response = $this->deleteBranchForm($id, false); + $response = $this->deleteBranchForm($request, $id, false); $response['delete_route'] = 'diamante_branch_list_delete_form'; return $response; @@ -72,23 +75,21 @@ public function deleteBranchListForm($id) * @param string $gridName * @param string $actionName * - * @return Response + * @return array|Response * @throws \LogicException */ - public function massActionAction($gridName, $actionName) + public function massActionAction(Request $request, $gridName, $actionName) { - $request = $this->getRequest(); - try { - $form = $this->createForm('diamante_mass_delete_branch_form', ['values' => $request->get('values')]); + $form = $this->createForm(MassDeleteBranchType::class, ['values' => $request->get('values')]); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { $response = ['form' => $form->createView()]; return $response; } - $this->handle($form); + $this->handle($request, $form); $data = $form->getData(); $iteration = 0; @@ -98,7 +99,7 @@ public function massActionAction($gridName, $actionName) $systemSettings = $this->get('diamante.email_processing.mail_system_settings'); foreach ($removeBranches as $branchId) { - if ($systemSettings->getDefaultBranchId() == $branchId) { + if ($systemSettings->getDefaultBranchId() === $branchId) { continue; } @@ -114,7 +115,7 @@ public function massActionAction($gridName, $actionName) $iteration++; } - if (in_array($systemSettings->getDefaultBranchId(), $removeBranches)) { + if (in_array($systemSettings->getDefaultBranchId(), $removeBranches, true)) { throw new DefaultBranchException( 'diamante.desk.branch.messages.delete.mass_error', ['%count%' => $iteration], @@ -128,7 +129,6 @@ public function massActionAction($gridName, $actionName) $iteration ); $response = $this->getWidgetResponse(); - } catch (DefaultBranchException $e) { $this->handleMassBranchException($e); $response = $this->getWidgetResponse(); @@ -146,22 +146,23 @@ public function massActionAction($gridName, $actionName) * * @return array */ - private function deleteBranchForm($id, $redirect = true) + private function deleteBranchForm(Request $request, $id, $redirect = true) { try { - $form = $this->createForm('diamante_delete_branch_form', ['id' => $id]); + $form = $this->createForm(DeleteBranch::class, ['id' => $id]); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { $response = ['form' => $form->createView()]; + return $response; } $systemSettings = $this->get('diamante.email_processing.mail_system_settings'); - if ($systemSettings->getDefaultBranchId() == $id) { + if ($systemSettings->getDefaultBranchId() === $id) { throw new DefaultBranchException('diamante.desk.branch.messages.delete.error'); } - $this->handle($form); + $this->handle($request, $form); $data = $form->getData(); $tickets = []; @@ -183,7 +184,6 @@ private function deleteBranchForm($id, $redirect = true) if ($redirect) { $response['redirect'] = $this->generateUrl('diamante_branch_list'); } - } catch (DefaultBranchException $e) { $this->handleException($e); $response = $this->getWidgetResponse(); @@ -221,7 +221,7 @@ private function moveTicket(Ticket $ticket, $newBranchId) $command->branch = $branchService->getBranch($newBranchId); - if ($command->branch->getId() != $ticket->getBranch()->getId()) { + if ($command->branch->getId() !== $ticket->getBranch()->getId()) { $this->get('diamante.ticket.service')->moveTicket($command); } @@ -239,7 +239,7 @@ protected function handleMassBranchException(DefaultBranchException $e) $this->get('monolog.logger.diamante') ->error( - sprintf("%s: %s", $message, $e->getMessage()) + sprintf('%s: %s', $message, $e->getMessage()) ); $this->addErrorMessage($message, $parameters, $number); diff --git a/src/Diamante/DeskBundle/Controller/CommentController.php b/src/Diamante/DeskBundle/Controller/CommentController.php index da2c56e78..2ddb65094 100644 --- a/src/Diamante/DeskBundle/Controller/CommentController.php +++ b/src/Diamante/DeskBundle/Controller/CommentController.php @@ -12,6 +12,7 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\Controller; use Diamante\DeskBundle\Api\CommentService; @@ -19,9 +20,12 @@ use Diamante\DeskBundle\Api\Command\RemoveCommentAttachmentCommand; use Diamante\DeskBundle\Api\Command\RetrieveCommentAttachmentCommand; use Diamante\DeskBundle\Entity\Ticket; +use Diamante\DeskBundle\Form\Type\CommentType; use Diamante\UserBundle\Model\User; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Diamante\DeskBundle\Api\Dto\AttachmentInput; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; @@ -34,6 +38,7 @@ class CommentController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; /** * @Route( @@ -47,15 +52,21 @@ class CommentController extends Controller * @param int $id * @return array */ - public function createAction($id) + public function createAction(Request $request, $id) { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); $command = $this->get('diamante.command_factory') ->createCommentCommandForCreate($ticket, new User($this->getUser()->getId(), User::TYPE_ORO)); - return $this->edit($command, function($command) { - $this->get('diamante.comment.service') - ->postNewCommentForTicket($command); - }, $ticket); + + return $this->edit( + $request, + $command, + function ($command) { + $this->get('diamante.comment.service') + ->postNewCommentForTicket($command); + }, + $ticket + ); } /** @@ -70,14 +81,20 @@ public function createAction($id) * @param int $id * @return array */ - public function updateAction($id) + public function updateAction(Request $request, $id) { $comment = $this->get('diamante.comment.service')->loadComment($id); $command = $this->get('diamante.command_factory') ->createCommentCommandForUpdate($comment); - return $this->edit($command, function($command) use ($comment) { - $this->get('diamante.comment.service')->updateTicketComment($command); - }, $comment->getTicket()); + + return $this->edit( + $request, + $command, + function ($command) use ($comment) { + $this->get('diamante.comment.service')->updateTicketComment($command); + }, + $comment->getTicket() + ); } /** @@ -90,9 +107,10 @@ public function updateAction($id) public function attachmentList($id) { $comment = $this->get('diamante.comment.service')->loadComment($id); + return [ 'comment_id' => $comment->getId(), - 'attachments' => $comment->getAttachments() + 'attachments' => $comment->getAttachments(), ]; } @@ -102,17 +120,21 @@ public function attachmentList($id) * @param Ticket $ticket * @return array */ - private function edit(CommentCommand $command, $callback, Ticket $ticket) + private function edit(Request $request, CommentCommand $command, $callback, Ticket $ticket) { $response = null; - $form = $this->createForm('diamante_comment_form', $command); + $form = $this->createForm(CommentType::class, $command); $formView = $form->createView(); $formView->children['attachmentsInput']->vars = array_replace( $formView->children['attachmentsInput']->vars, - array('full_name' => 'diamante_comment_form[attachmentsInput][]') + ['full_name' => 'diamante_comment_form[attachmentsInput][]'] ); try { - $this->handle($form); + $this->handle($request, $form); + if ($uploaded = $request->files->get('diamante_comment_form')) { + $attachmentDto = AttachmentInput::createFromUploadedFile($uploaded['attachmentsInput'][0]); + $command->attachmentsInput[] = $attachmentDto; + } $callback($command); if ($command->id) { @@ -120,11 +142,17 @@ private function edit(CommentCommand $command, $callback, Ticket $ticket) } else { $this->addSuccessMessage('diamante.desk.comment.messages.create.success'); } - $response = $this->getSuccessSaveResponse('diamante_comment_update', 'diamante_ticket_view', ['key' => (string)$ticket->getKey()]); + $response = + $this->getSuccessSaveResponse( + 'diamante_comment_update', + 'diamante_ticket_view', + ['key' => (string)$ticket->getKey()] + ); } catch (\Exception $e) { $this->handleException($e); - $response = array('form' => $formView, 'ticket' => $ticket); + $response = ['form' => $formView, 'ticket' => $ticket]; } + return $response; } @@ -150,7 +178,7 @@ public function deleteAction($ticketKey, $commentId) } return $this->redirect( - $this->generateUrl('diamante_ticket_view', array('key' => $ticketKey)) + $this->generateUrl('diamante_ticket_view', ['key' => $ticketKey]) ); } @@ -173,8 +201,7 @@ public function downloadAttachmentAction($commentId, $attachId) $attachment = $commentService->getCommentAttachment($retrieveCommentAttachment); $filename = $attachment->getFilename(); - $filePathname = realpath($this->container->getParameter('kernel.root_dir') . '/attachments/comment') - . '/' . $attachment->getFilename(); + $filePathname = realpath($attachment->getFile()->getPathname()); if (!file_exists($filePathname)) { $this->addErrorMessage('diamante.desk.attachment.messages.get.error'); @@ -182,7 +209,7 @@ public function downloadAttachmentAction($commentId, $attachId) } $response = new \Symfony\Component\HttpFoundation\BinaryFileResponse($filePathname); - $response->trustXSendfileTypeHeader(); + $response::trustXSendfileTypeHeader(); $response->setContentDisposition( \Symfony\Component\HttpFoundation\ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename, @@ -213,16 +240,18 @@ public function removeAttachmentAction($commentId, $attachId) $removeCommentAttachmentCommand->attachmentId = $attachId; try { - $commentService->removeAttachmentFromComment($removeCommentAttachmentCommand); + $commentService->removeAttachmentFromComment($removeCommentAttachmentCommand, true); $this->addSuccessMessage('diamante.desk.attachment.messages.delete.success'); } catch (\Exception $e) { $this->handleException($e); } - $response = $this->redirect($this->generateUrl( - 'diamante_comment_update', - array('id' => $commentId) - )); + $response = $this->redirect( + $this->generateUrl( + 'diamante_comment_update', + ['id' => $commentId] + ) + ); return $response; } diff --git a/src/Diamante/DeskBundle/Controller/ReportController.php b/src/Diamante/DeskBundle/Controller/ReportController.php index 8a29116a8..75d54ec1a 100644 --- a/src/Diamante/DeskBundle/Controller/ReportController.php +++ b/src/Diamante/DeskBundle/Controller/ReportController.php @@ -115,7 +115,7 @@ public function myRecentTicketsWidgetAction($id) } catch (\Exception $e) { $this->handleException($e); throw $this->createNotFoundException($e->getMessage(), $e); - }; + } } /** diff --git a/src/Diamante/DeskBundle/Controller/Shared/ExceptionHandlerTrait.php b/src/Diamante/DeskBundle/Controller/Shared/ExceptionHandlerTrait.php index d739a9b0c..fc09ac035 100644 --- a/src/Diamante/DeskBundle/Controller/Shared/ExceptionHandlerTrait.php +++ b/src/Diamante/DeskBundle/Controller/Shared/ExceptionHandlerTrait.php @@ -17,6 +17,7 @@ use Diamante\DeskBundle\Infrastructure\Shared\Exception\Flashable; use Symfony\Bridge\Monolog\Logger; +use Symfony\Component\Routing\Exception\MethodNotAllowedException; trait ExceptionHandlerTrait { @@ -29,7 +30,7 @@ trait ExceptionHandlerTrait * array */ protected $ignoredExceptions = [ - 'Symfony\Component\Routing\Exception\MethodNotAllowedException' + MethodNotAllowedException::class ]; /** diff --git a/src/Diamante/DeskBundle/Controller/Shared/FormHandlerTrait.php b/src/Diamante/DeskBundle/Controller/Shared/FormHandlerTrait.php index eb36587b4..ceae4450c 100644 --- a/src/Diamante/DeskBundle/Controller/Shared/FormHandlerTrait.php +++ b/src/Diamante/DeskBundle/Controller/Shared/FormHandlerTrait.php @@ -4,25 +4,28 @@ use Diamante\DeskBundle\Exception\ValidatorException; +use Symfony\Component\Form\FormInterface; +use \Symfony\Component\HttpFoundation\Request; use Symfony\Component\Form\Form; use Symfony\Component\Routing\Exception\MethodNotAllowedException; trait FormHandlerTrait { /** - * @param Form $form + * @param FormInterface $form * @throws MethodNotAllowedException * @throws ValidatorException */ - protected function handle(Form $form) + protected function handle(Request $request, Form $form) { - if (false === $this->getRequest()->isMethod('POST')) { + + if (false === $request->isMethod('POST')) { throw new MethodNotAllowedException(array('POST'), 'Form can be posted only by "POST" method.'); } - $form->handleRequest($this->getRequest()); + $form->handleRequest($request); - if (false === $form->isValid()) { + if ($form->isSubmitted() && false === $form->isValid()) { throw new ValidatorException('Form object validation failed, form is invalid.'); } } @@ -30,5 +33,5 @@ protected function handle(Form $form) /** * @return \Symfony\Component\HttpFoundation\Request */ - abstract public function getRequest(); + abstract public function getRequest() ; } \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Controller/Shared/RequestGetterTrait.php b/src/Diamante/DeskBundle/Controller/Shared/RequestGetterTrait.php new file mode 100644 index 000000000..3e3f25092 --- /dev/null +++ b/src/Diamante/DeskBundle/Controller/Shared/RequestGetterTrait.php @@ -0,0 +1,19 @@ +container->get('request_stack'); + + return $requestStack->getCurrentRequest(); + } +} diff --git a/src/Diamante/DeskBundle/Controller/TicketController.php b/src/Diamante/DeskBundle/Controller/TicketController.php index 7a7ab37b5..3c5ed8dd4 100644 --- a/src/Diamante/DeskBundle/Controller/TicketController.php +++ b/src/Diamante/DeskBundle/Controller/TicketController.php @@ -17,9 +17,16 @@ use Diamante\DeskBundle\Api\Command\RemoveTicketAttachmentCommand; use Diamante\DeskBundle\Api\Command\RetrieveTicketAttachmentCommand; use Diamante\DeskBundle\Api\Dto\AttachmentDto; +use Diamante\DeskBundle\Api\Dto\AttachmentInput; use Diamante\DeskBundle\Api\TicketService; use Diamante\DeskBundle\Entity\Attachment; use Diamante\DeskBundle\Form\CommandFactory; +use Diamante\DeskBundle\Form\Type\AttachmentType; +use Diamante\DeskBundle\Form\Type\CreateTicketType; +use Diamante\DeskBundle\Form\Type\MassAddWatcherTicketType; +use Diamante\DeskBundle\Form\Type\MassAssigneeTicketType; +use Diamante\DeskBundle\Form\Type\MassChangeTicketStatusType; +use Diamante\DeskBundle\Form\Type\UpdateTicketType; use Diamante\DeskBundle\Model\Ticket\Exception\TicketMovedException; use Diamante\DeskBundle\Model\Ticket\Exception\TicketNotFoundException; use Diamante\UserBundle\Model\User; @@ -27,8 +34,10 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\BinaryFileResponse; +use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; /** @@ -40,6 +49,7 @@ class TicketController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; /** * @Route( @@ -144,43 +154,37 @@ public function deleteWatcherAction($ticketId, $user) * * @return array */ - public function createAction($id = null) + public function createAction(Request $request, $id = null) { $branch = null; - if (!is_null($id)) { + if ($id !== null) { $branch = $this->get('diamante.branch.service')->getBranch($id); } $command = $this->get('diamante.command_factory') ->createCreateTicketCommand($branch, new User($this->getUser()->getId(), User::TYPE_ORO)); - $response = null; - $form = $this->createForm('diamante_ticket_form', $command); + + $form = $this->createForm(CreateTicketType::class, $command); $formView = $form->createView(); $formView->children['attachmentsInput']->vars = array_replace( $formView->children['attachmentsInput']->vars, ['full_name' => 'diamante_ticket_form[attachmentsInput][]'] ); try { - $this->handle($form); - + $this->handle($request, $form); if (empty($command->branch)) { $defaultBranchId = (int)$this->get('oro_config.manager')->get('diamante_desk.default_branch'); - if (is_null($defaultBranchId)) { throw new \RuntimeException("Invalid configuration. DefaultBranch must be configured"); } - $command->branch = $this->get('diamante.branch.service')->getBranch($defaultBranchId); } - if ($command->assignee) { $command->assignee = $command->assignee->getId(); } $command->branch = $command->branch->getId(); - $ticket = $this->get('diamante.ticket.service')->createTicket($command); - $this->addSuccessMessage('diamante.desk.ticket.messages.create.success'); $response = $this->getSuccessSaveResponse( 'diamante_ticket_update', @@ -191,7 +195,6 @@ public function createAction($id = null) $this->handleException($e); $response = ['form' => $formView]; } - return $response; } @@ -208,7 +211,7 @@ public function createAction($id = null) * * @return array */ - public function updateAction($key) + public function updateAction(Request $request, $key) { try { $ticket = $this->get('diamante.ticket.service')->loadTicketByKey($key); @@ -216,14 +219,14 @@ public function updateAction($key) $command = $this->get('diamante.command_factory') ->createUpdateTicketCommand($ticket); $response = null; - $form = $this->createForm('diamante_ticket_update_form', $command); + $form = $this->createForm(UpdateTicketType::class, $command); $formView = $form->createView(); $formView->children['attachmentsInput']->vars = array_replace( $formView->children['attachmentsInput']->vars, - ['full_name' => 'diamante_ticket_form[attachmentsInput][]'] + ['full_name' => 'diamante_ticket_update_form[attachmentsInput][]'] ); - $this->handle($form); + $this->handle($request, $form); $command->assignee = $command->assignee ? $command->assignee->getId() : null; @@ -299,7 +302,7 @@ public function attachAction($id) $ticket = $this->get('diamante.ticket.service')->loadTicket($id); $commandFactory = new CommandFactory(); $form = $this->createForm( - 'diamante_attachment_form', + AttachmentType::class, $commandFactory->createAddTicketAttachmentCommand($ticket) ); $formView = $form->createView(); @@ -322,14 +325,14 @@ public function attachAction($id) * * @return Response */ - public function attachPostAction($id) + public function attachPostAction(Request $request, $id) { $ticketService = $this->get('diamante.ticket.service'); $ticket = $ticketService->loadTicket($id); $response = null; $commandFactory = new CommandFactory(); $form = $this->createForm( - 'diamante_attachment_form', + AttachmentType::class, $commandFactory->createAddTicketAttachmentCommand($ticket) ); $formView = $form->createView(); @@ -339,12 +342,12 @@ public function attachPostAction($id) ); try { - $this->handle($form); + $this->handle($request, $form); $command = $form->getData(); $uploadedAttachments = $ticketService->addAttachmentsForTicket($command); $this->addSuccessMessage('diamante.desk.attachment.messages.create.success'); - if ($this->container->get('request')->request->get('diam-dropzone')) { + if ($request->get('diam-dropzone')) { $response = $this->prepareDropzoneAttachmentsResponse($id, $uploadedAttachments); } else { $response = $this->get('oro_ui.router')->redirectAfterSave( @@ -353,6 +356,7 @@ public function attachPostAction($id) ); } } catch (\Exception $e) { + $this->logger->critical($e); $this->handleException($e); $response = new Response( $this->get('translator')->trans('Error occurred while adding attachment to the ticket.'), 500 @@ -550,10 +554,11 @@ private function prepareDropzoneAttachmentsResponse($ticketId, $attachments) ); if (in_array($attachment->getFile()->getExtension(), ['jpg', 'png', 'gif', 'bmp', 'jpeg'])) { - $previewLink = $this->get('router')->generate( - '_imagine_attach_preview_img', - ['path' => $attachment->getFile()->getPathname()] - ); + $previewLink = $this->get('liip_imagine.cache.manager') + ->getBrowserPath( + 'ticket/' . $attachment->getFile()->getFilename(), + 'attach_preview_img' + ); } else { $previewLink = ''; } @@ -578,11 +583,12 @@ private function prepareDropzoneAttachmentsResponse($ticketId, $attachments) } /** + * @param Request $request * @return bool */ - private function widgetRedirectRequested() + private function widgetRedirectRequested(Request $request) { - return !(bool)$this->container->get('request')->get('no_redirect'); + return !(bool)$request->get('no_redirect'); } /** @@ -594,22 +600,25 @@ private function widgetRedirectRequested() * * @Template("DiamanteDeskBundle:Ticket:widget/massAssignee.html.twig") * + * @param Request $request * @return array */ - public function assignMassAction() + public function assignMassAction(Request $request) { try { + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') - ->createMassAssigneeTicketCommand($this->getRequest()->get('values')); + ->createMassAssigneeTicketCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_mass_assignee', $command); + $form = $this->createForm(MassAssigneeTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestAssign = $this->getRequest()->get('assignee'); + $form->handleRequest($request); + $requestAssign = $request->get('assignee'); if (!isset($requestAssign)) { $assignee = $command->assignee; @@ -617,7 +626,7 @@ public function assignMassAction() $assignee = $requestAssign; } - $ids = explode(",", $this->getRequest()->get('ids')); + $ids = explode(',', $request->get('ids')); foreach ($ids as $id) { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); @@ -652,20 +661,22 @@ public function assignMassAction() * * @return array */ - public function changeStatusMassAction() + public function changeStatusMassAction(Request $request) { try { + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') - ->createChangeStatusMassCommand($this->getRequest()->get('values')); + ->createChangeStatusMassCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_status_mass_change', $command); + $form = $this->createForm(MassChangeTicketStatusType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestStatus = $this->getRequest()->get('status'); + $form->handleRequest($request); + $requestStatus = $request->get('status'); if (!isset($requestStatus)) { $status = $command->status; @@ -673,7 +684,7 @@ public function changeStatusMassAction() $status = $requestStatus; } - $ids = explode(",", $this->getRequest()->get('ids')); + $ids = explode(',', $request->get('ids')); foreach ($ids as $id) { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); @@ -706,22 +717,25 @@ public function changeStatusMassAction() * ) * @Template("DiamanteDeskBundle:Ticket:widget/massAddWatcher.html.twig") * + * @param Request $request * @return array */ - public function addWatcherMassAction() + public function addWatcherMassAction(Request $request) { try { + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') - ->createMassAddWatcherCommand($this->getRequest()->get('values')); + ->createMassAddWatcherCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_mass_add_watcher', $command); + $form = $this->createForm(MassAddWatcherTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestWatcher = $this->getRequest()->get('branch'); + $form->handleRequest($request); + $requestWatcher = $request->get('branch'); if (!isset($requestWatcher)) { $watcher = $command->watcher; @@ -729,7 +743,7 @@ public function addWatcherMassAction() $watcher = $requestWatcher; } - $ids = explode(",", $this->getRequest()->get('ids')); + $ids = explode(',',$request->get('ids')); foreach ($ids as $id) { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); diff --git a/src/Diamante/DeskBundle/Controller/TicketWidgetController.php b/src/Diamante/DeskBundle/Controller/TicketWidgetController.php index 57a3ffdcf..8c2ea8e55 100644 --- a/src/Diamante/DeskBundle/Controller/TicketWidgetController.php +++ b/src/Diamante/DeskBundle/Controller/TicketWidgetController.php @@ -14,6 +14,14 @@ */ namespace Diamante\DeskBundle\Controller; +use Diamante\DeskBundle\Form\Type\AddWatcherType; +use Diamante\DeskBundle\Form\Type\AssigneeTicketType; +use Diamante\DeskBundle\Form\Type\MassAddWatcherTicketType; +use Diamante\DeskBundle\Form\Type\MassAssigneeTicketType; +use Diamante\DeskBundle\Form\Type\MassChangeTicketStatusType; +use Diamante\DeskBundle\Form\Type\MassMoveTicketType; +use Diamante\DeskBundle\Form\Type\MoveTicketType; +use Diamante\DeskBundle\Form\Type\UpdateTicketStatusType; use Diamante\DeskBundle\Model\Branch\Exception\BranchNotFoundException; use Diamante\DeskBundle\Model\Ticket\Exception\TicketNotFoundException; use Diamante\DeskBundle\Model\Ticket\Ticket; @@ -22,6 +30,7 @@ use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Request; /** * @Route("tickets") @@ -40,21 +49,21 @@ class TicketWidgetController extends WidgetController * * @return array */ - public function changeStatusWidgetAction($id) + public function changeStatusWidgetAction(Request $request, $id) { try { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); $command = $this->get('diamante.command_factory') ->createUpdateStatusCommandForView($ticket); - $form = $this->createForm('diamante_ticket_status_form', $command); + $form = $this->createForm(UpdateTicketStatusType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { $response = ['form' => $form->createView()]; return $response; } - $this->handle($form); + $this->handle($request, $form); $this->get('diamante.ticket.service')->updateStatus($command); $this->addSuccessMessage('diamante.desk.ticket.messages.change_status.success'); $response = ['saved' => true]; @@ -79,20 +88,20 @@ public function changeStatusWidgetAction($id) * * @return array */ - public function moveWidgetAction($id) + public function moveWidgetAction(Request $request, $id) { try { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); $command = $this->get('diamante.command_factory') ->createMoveTicketCommand($ticket); - $form = $this->createForm('diamante_ticket_form_move', $command); + $form = $this->createForm(MoveTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { $response = ['form' => $form->createView()]; return $response; } - $this->handle($form); + $this->handle($request, $form); if ($command->branch->getId() !== $ticket->getBranch()->getId()) { $this->get('diamante.ticket.service')->moveTicket($command); $this->addSuccessMessage('diamante.desk.ticket.messages.move.success'); @@ -123,19 +132,19 @@ public function moveWidgetAction($id) * * @return array */ - public function addWatcherWidgetAction($ticketId) + public function addWatcherWidgetAction(Request $request, $ticketId) { try { $ticket = $this->get('diamante.ticket.service')->loadTicket($ticketId); $command = $this->get('diamante.command_factory') ->addWatcherCommand($ticket); - $form = $this->createForm('diamante_add_watcher_form', $command); + $form = $this->createForm(AddWatcherType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $this->handle($form); + $this->handle($request, $form); if (is_string($command->watcher)) { $user = new DiamanteUser($command->watcher); @@ -169,27 +178,28 @@ public function addWatcherWidgetAction($ticketId) * * @Template("DiamanteDeskBundle:Ticket:widget/assignee.html.twig") * + * @param Request $request * @param int $id * * @return array */ - public function assignWidgetAction($id) + public function assignWidgetAction(Request $request, $id) { $ticket = $this->get('diamante.ticket.service')->loadTicket($id); $command = $this->get('diamante.command_factory') ->createAssigneeTicketCommand($ticket); - $form = $this->createForm('diamante_ticket_form_assignee', $command); + $form = $this->createForm(AssigneeTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { $response = ['form' => $form->createView()]; return $response; } try { - $this->handle($form); + $this->handle($request, $form); $command->assignee = $command->assignee ? $command->assignee->getId() : null; $this->get('diamante.ticket.service')->assignTicket($command); @@ -242,23 +252,23 @@ public function watchersAction($ticket) * * @return array */ - public function assignMassAction() + public function assignMassAction(Request $request) { try { - $values = $this->getRequest()->get('values'); - $inset = $this->getRequest()->get('inset'); + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') ->createMassAssigneeTicketCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_mass_assignee', $command); + $form = $this->createForm(MassAssigneeTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestAssign = $this->getRequest()->get('assignee'); - $ids = $this->getRequest()->get('ids'); + $form->handleRequest($request); + $requestAssign = $request->get('assignee'); + $ids = $request->get('ids'); if (!isset($requestAssign)) { $assignee = $command->assignee; @@ -266,7 +276,7 @@ public function assignMassAction() $assignee = $requestAssign; } - $ids = explode(",", $ids); + $ids = explode(',', $ids); if ($this->isAllSelected($inset)) { $tickets = $this->get('diamante.ticket.repository')->getAll(); @@ -327,23 +337,23 @@ protected function changeSelectedTicketsAssignee($ids, $assignee) * * @return array */ - public function changeStatusMassAction() + public function changeStatusMassAction(Request $request) { try { - $values = $this->getRequest()->get('values'); - $inset = $this->getRequest()->get('inset'); + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') ->createChangeStatusMassCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_status_mass_change', $command); + $form = $this->createForm(MassChangeTicketStatusType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestStatus = $this->getRequest()->get('status'); - $ids = $this->getRequest()->get('ids'); + $form->handleRequest($request); + $requestStatus = $request->get('status'); + $ids = $request->get('ids'); if (!isset($requestStatus)) { $status = $command->status; @@ -351,7 +361,7 @@ public function changeStatusMassAction() $status = $requestStatus; } - $ids = explode(",", $ids); + $ids = explode(',', $ids); if ($this->isAllSelected($inset)) { $tickets = $this->get('diamante.ticket.repository')->getAll(); @@ -421,23 +431,23 @@ protected function changeSelectedTicketsStatus(array $ids, $status) * * @return array */ - public function moveMassAction() + public function moveMassAction(Request $request) { try { - $values = $this->getRequest()->get('values'); - $inset = $this->getRequest()->get('inset'); + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') ->createMassMoveTicketCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_mass_move', $command); + $form = $this->createForm(MassMoveTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestBranch = $this->getRequest()->get('branch'); - $ids = $this->getRequest()->get('ids'); + $form->handleRequest($request); + $requestBranch = $request->get('branch'); + $ids = $request->get('ids'); if (!isset($requestBranch)) { $branch = $command->branch; @@ -523,23 +533,23 @@ protected function moveSelectedTickets(array $ids, $branch) * * @return array */ - public function addWatcherMassAction() + public function addWatcherMassAction(Request $request) { try { - $values = $this->getRequest()->get('values'); - $inset = $this->getRequest()->get('inset'); + $values = $request->get('values'); + $inset = $request->get('inset'); $command = $this->get('diamante.command_factory') ->createMassAddWatcherCommand($values, $inset); - $form = $this->createForm('diamante_ticket_form_mass_add_watcher', $command); + $form = $this->createForm(MassAddWatcherTicketType::class, $command); - if (true === $this->widgetRedirectRequested()) { + if (true === $this->widgetRedirectRequested($request)) { return ['form' => $form->createView()]; } - $form->handleRequest($this->getRequest()); - $requestWatcher = $this->getRequest()->get('branch'); - $ids = $this->getRequest()->get('ids'); + $form->handleRequest($request); + $requestWatcher = $request->get('branch'); + $ids = $request->get('ids'); if (!isset($requestWatcher)) { $watcher = $command->watcher; diff --git a/src/Diamante/DeskBundle/Controller/WidgetController.php b/src/Diamante/DeskBundle/Controller/WidgetController.php index 481a50be5..0094a94b5 100755 --- a/src/Diamante/DeskBundle/Controller/WidgetController.php +++ b/src/Diamante/DeskBundle/Controller/WidgetController.php @@ -15,12 +15,14 @@ namespace Diamante\DeskBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Component\HttpFoundation\Request; abstract class WidgetController extends Controller { use Shared\SessionFlashMessengerTrait; use Shared\ExceptionHandlerTrait; use Shared\FormHandlerTrait; + use Shared\RequestGetterTrait; /** * @param string|null $redirectUrl @@ -40,10 +42,11 @@ protected function getWidgetResponse($redirectUrl = null, $redirectParams = [], } /** + * @param Request $request * @return bool */ - protected function widgetRedirectRequested() + protected function widgetRedirectRequested(Request $request) { - return !(bool)$this->container->get('request')->get('no_redirect'); + return !$request->get('no_redirect'); } } diff --git a/src/Diamante/DeskBundle/Datagrid/AbstractDatasource.php b/src/Diamante/DeskBundle/Datagrid/AbstractDatasource.php index b441bd651..2d927d2ff 100644 --- a/src/Diamante/DeskBundle/Datagrid/AbstractDatasource.php +++ b/src/Diamante/DeskBundle/Datagrid/AbstractDatasource.php @@ -15,10 +15,8 @@ namespace Diamante\DeskBundle\Datagrid; use Doctrine\Bundle\DoctrineBundle\Registry; -use Doctrine\ORM\Query; use Oro\Bundle\DataGridBundle\Datagrid\DatagridInterface; use Oro\Bundle\DataGridBundle\Datasource\DatasourceInterface; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; abstract class AbstractDatasource implements DatasourceInterface { @@ -48,7 +46,7 @@ abstract class AbstractDatasource implements DatasourceInterface /** * @var array */ - protected $sorters; + protected $sorters = []; /** * @param DatagridInterface $grid diff --git a/src/Diamante/DeskBundle/Datagrid/BranchHelper.php b/src/Diamante/DeskBundle/Datagrid/BranchHelper.php new file mode 100644 index 000000000..917bef667 --- /dev/null +++ b/src/Diamante/DeskBundle/Datagrid/BranchHelper.php @@ -0,0 +1,22 @@ +createQueryBuilder('c') + ->orderBy('c.name', 'ASC'); + }; + } +} \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Datagrid/CombinedAuditDatasource.php b/src/Diamante/DeskBundle/Datagrid/CombinedAuditDatasource.php index fb9cf89bc..bf1046b45 100644 --- a/src/Diamante/DeskBundle/Datagrid/CombinedAuditDatasource.php +++ b/src/Diamante/DeskBundle/Datagrid/CombinedAuditDatasource.php @@ -15,7 +15,6 @@ namespace Diamante\DeskBundle\Datagrid; use Doctrine\Bundle\DoctrineBundle\Registry; -use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; use Oro\Bundle\DataGridBundle\Datagrid\DatagridInterface; use Oro\Bundle\DataGridBundle\Datasource\ResultRecord; @@ -23,6 +22,7 @@ use Oro\Bundle\DataGridBundle\Event\OrmResultAfter; use Oro\Bundle\DataGridBundle\Event\OrmResultBefore; use Oro\Component\DoctrineUtils\ORM\QueryHintResolver; +use Symfony\Bridge\Doctrine\ManagerRegistry; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Oro\Bundle\DataGridBundle\Datasource\Orm\QueryConverter\YamlConverter; use Diamante\DeskBundle\Model\Audit\AuditRepository; @@ -71,18 +71,23 @@ class CombinedAuditDatasource extends AbstractDatasource protected $grid; /** - * @param Registry $doctrineRegistry + * @var ManagerRegistry + */ + private $managerRegistry; + + /** + * @param ManagerRegistry $managerRegistry * @param AuditRepository $auditRepository * @param EventDispatcherInterface $dispatcher * @param QueryHintResolver $queryHintResolver */ public function __construct( - Registry $doctrineRegistry, + ManagerRegistry $managerRegistry, AuditRepository $auditRepository, EventDispatcherInterface $dispatcher, QueryHintResolver $queryHintResolver ) { - $this->doctrineRegistry = $doctrineRegistry; + $this->managerRegistry = $managerRegistry; $this->auditRepository = $auditRepository; $this->qbDiamanteAudit = $auditRepository->createQueryBuilder('a'); @@ -101,7 +106,9 @@ public function process(DatagridInterface $grid, array $config) $queryConfig = array_intersect_key($this->config, array_flip(['query'])); $converter = new YamlConverter(); - $this->qbOroAudit = $converter->parse($queryConfig, $this->doctrineRegistry->getManager()->createQueryBuilder('a')); + // $manager = $this->doctrineRegistry->(); + // $qb1 = $this-> + $this->qbOroAudit = $converter->parse($queryConfig, $this->managerRegistry); if (isset($config['hints'])) { $this->queryHints = $config['hints']; @@ -124,7 +131,7 @@ public function getResults() $this->queryHintResolver->resolveHints( $query, - null !== $this->queryHints ? $this->queryHints : [] + $this->queryHints ?? [] ); $beforeEvent = new OrmResultBefore($this->grid, $query); @@ -206,4 +213,10 @@ public function getQueryBuilders() $this->getQbOroAudit() ]; } + + /** TODO: Check is its logic is right */ + public function getQueryBuilder() + { + return $this->qbOroAudit; + } } diff --git a/src/Diamante/DeskBundle/Datagrid/CombinedUsersDatasource.php b/src/Diamante/DeskBundle/Datagrid/CombinedUsersDatasource.php index 72dd6a29c..995dc1f94 100644 --- a/src/Diamante/DeskBundle/Datagrid/CombinedUsersDatasource.php +++ b/src/Diamante/DeskBundle/Datagrid/CombinedUsersDatasource.php @@ -17,6 +17,7 @@ use Diamante\UserBundle\Model\User; use Doctrine\Bundle\DoctrineBundle\Registry; use Doctrine\ORM\Query; +use Doctrine\ORM\QueryBuilder; use Oro\Bundle\DataGridBundle\Datasource\ResultRecord; use Oro\Bundle\DataGridBundle\Datasource\ResultRecordInterface; diff --git a/src/Diamante/DeskBundle/Datagrid/Filter/CombinedDatasourceFilterExtension.php b/src/Diamante/DeskBundle/Datagrid/Filter/CombinedDatasourceFilterExtension.php index 41a0e2e48..56f00fd9d 100644 --- a/src/Diamante/DeskBundle/Datagrid/Filter/CombinedDatasourceFilterExtension.php +++ b/src/Diamante/DeskBundle/Datagrid/Filter/CombinedDatasourceFilterExtension.php @@ -20,6 +20,7 @@ use Oro\Bundle\DataGridBundle\Datagrid\Builder; use Oro\Bundle\DataGridBundle\Datagrid\Common\DatagridConfiguration; use Oro\Bundle\DataGridBundle\Datasource\DatasourceInterface; +use Oro\Bundle\DataGridBundle\Datasource\Orm\OrmDatasource; use Oro\Bundle\FilterBundle\Datasource\Orm\OrmFilterDatasourceAdapter; use Oro\Bundle\FilterBundle\Grid\Extension\Configuration; use Oro\Bundle\FilterBundle\Grid\Extension\OrmFilterExtension; @@ -48,31 +49,29 @@ public function isApplicable(DatagridConfiguration $config) public function visitDatasource(DatagridConfiguration $config, DatasourceInterface $datasource) { $filters = $this->getFiltersToApply($config); - $values = $this->getValuesToApply($config); + $filtersState = $this->filtersStateProvider->getStateFromParameters($config, $this->getParameters()); $datasourceAdapters = []; + /** @var CombinedAuditDatasource $datasource */ foreach ($datasource->getQueryBuilders() as $qb) { $datasourceAdapters[] = new OrmFilterDatasourceAdapter($qb); } foreach ($filters as $filter) { - $value = isset($values[$filter->getName()]) ? $values[$filter->getName()] : false; + $value = $filtersState[$filter->getName()] ?? null; - if ($value === false) { + if ($value === null) { continue; } - $form = $filter->getForm(); - if (!$form->isSubmitted()) { - $form->submit($value); - } - - if (!$form->isValid()) { + $filterForm = $this->submitFilter($filter, $value); + if (!$filterForm->isValid()) { continue; } + $data = $filterForm->getData(); foreach ($datasourceAdapters as $datasourceAdapter) { - $filter->apply($datasourceAdapter, $form->getData()); + $filter->apply($datasourceAdapter,$data); } } } diff --git a/src/Diamante/DeskBundle/Datagrid/Sorter/CombinedDatasourceSorterExtension.php b/src/Diamante/DeskBundle/Datagrid/Sorter/CombinedDatasourceSorterExtension.php index fbf3fd017..eb428cd7d 100644 --- a/src/Diamante/DeskBundle/Datagrid/Sorter/CombinedDatasourceSorterExtension.php +++ b/src/Diamante/DeskBundle/Datagrid/Sorter/CombinedDatasourceSorterExtension.php @@ -21,9 +21,19 @@ use Oro\Bundle\DataGridBundle\Extension\Sorter\Configuration; use Diamante\DeskBundle\Datagrid\CombinedAuditDatasource; use Oro\Bundle\DataGridBundle\Extension\Sorter\OrmSorterExtension; +use Oro\Bundle\DataGridBundle\Provider\State\DatagridStateProviderInterface; +use Oro\Bundle\DataGridBundle\Provider\SystemAwareResolver; class CombinedDatasourceSorterExtension extends OrmSorterExtension { + public function __construct( + DatagridStateProviderInterface $sortersStateProvider, + SystemAwareResolver $resolver + ){ + parent::__construct($sortersStateProvider); + $this->resolver = $resolver; + } + /** * @param DatagridConfiguration $config * @@ -38,14 +48,4 @@ public function isApplicable(DatagridConfiguration $config) return $isApplicable; } - - /** - * @param DatagridConfiguration $config - * @param DatasourceInterface $datasource - * @return void - */ - public function visitDatasource(DatagridConfiguration $config, DatasourceInterface $datasource) - { - $datasource->setSorters($this->getSortersToApply($config)); - } } diff --git a/src/Diamante/DeskBundle/DependencyInjection/Compiler/SendChangedEntitiesToMessageQueueCompilerPass.php b/src/Diamante/DeskBundle/DependencyInjection/Compiler/SendChangedEntitiesToMessageQueueCompilerPass.php index eb68821c1..4c1efc5d5 100644 --- a/src/Diamante/DeskBundle/DependencyInjection/Compiler/SendChangedEntitiesToMessageQueueCompilerPass.php +++ b/src/Diamante/DeskBundle/DependencyInjection/Compiler/SendChangedEntitiesToMessageQueueCompilerPass.php @@ -28,9 +28,9 @@ class SendChangedEntitiesToMessageQueueCompilerPass implements CompilerPassInter */ public function process(ContainerBuilder $container) { - if ($container->has(self::SERVICE_ID)) { - $definition = $container->getDefinition(self::SERVICE_ID); - $definition->setClass(SendChangedEntitiesToMessageQueueListener::class); - } +// if ($container->has(self::SERVICE_ID)) { +// $definition = $container->getDefinition(self::SERVICE_ID); +// $definition->setClass(SendChangedEntitiesToMessageQueueListener::class); +// } } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Entity/Branch.php b/src/Diamante/DeskBundle/Entity/Branch.php index 05fc70f6c..e7070c7f0 100644 --- a/src/Diamante/DeskBundle/Entity/Branch.php +++ b/src/Diamante/DeskBundle/Entity/Branch.php @@ -15,7 +15,6 @@ namespace Diamante\DeskBundle\Entity; use Doctrine\ORM\Mapping as ORM; -use Doctrine\Common\Collections\ArrayCollection; use Oro\Bundle\EntityConfigBundle\Metadata\Annotation\Config; use Oro\Bundle\EntityConfigBundle\Metadata\Annotation\ConfigField; diff --git a/src/Diamante/DeskBundle/EventListener/DataGridPreBuildListener.php b/src/Diamante/DeskBundle/EventListener/DataGridPreBuildListener.php index b5d4d82a7..225835d74 100644 --- a/src/Diamante/DeskBundle/EventListener/DataGridPreBuildListener.php +++ b/src/Diamante/DeskBundle/EventListener/DataGridPreBuildListener.php @@ -17,6 +17,7 @@ use Oro\Bundle\DataGridBundle\Event\PreBuild; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class DataGridPreBuildListener { @@ -40,11 +41,35 @@ public function onPreBuild(PreBuild $event) $config = $event->getConfig(); if ($config->getName() === 'diamante-my-recent-tickets-widget-grid') { $parameters = $event->getParameters(); - $currentUserId = $this->container->get('oro_security.security_facade')->getLoggedUser()->getId(); + $currentUserId = $this->getLoggedUser()->getId(); $parameters->add( array('userId' => $currentUserId, 'reporterId' => sprintf("oro_%s", $currentUserId)) ); } return; } + + /** + * Get logged user or null + * + * @return object|null + */ + private function getLoggedUser() + { + /** @var TokenStorageInterface $tokenStorage */ + $tokenStorage = $this->container->get('security.token_storage'); + $token = $tokenStorage->getToken(); + + if (!$token) { + return null; + } + + $user = $token->getUser(); + + if (!is_object($user)) { + return null; + } + + return $user; + } } diff --git a/src/Diamante/DeskBundle/EventListener/EntityListener.php b/src/Diamante/DeskBundle/EventListener/EntityListener.php index 8704df8c7..4f5a11089 100644 --- a/src/Diamante/DeskBundle/EventListener/EntityListener.php +++ b/src/Diamante/DeskBundle/EventListener/EntityListener.php @@ -22,6 +22,7 @@ use Oro\Bundle\PlatformBundle\EventListener\OptionalListenerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Doctrine\ORM\Event\LifecycleEventArgs; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class EntityListener implements OptionalListenerInterface { @@ -67,7 +68,7 @@ public function onFlush(OnFlushEventArgs $event) return; } - $loggedUser = $this->container->get('oro_security.security_facade')->getLoggedUser(); + $loggedUser = $this->getLoggedUser(); if ($loggedUser instanceof ApiUser) { $this->loggableManager->handleLoggable($event->getEntityManager()); } @@ -82,7 +83,7 @@ public function postPersist(LifecycleEventArgs $event) return; } - $loggedUser = $this->container->get('oro_security.security_facade')->getLoggedUser(); + $loggedUser = $this->getLoggedUser(); if ($loggedUser instanceof ApiUser) { $this->loggableManager->handlePostPersist($event->getEntity(), $event->getEntityManager()); } @@ -90,6 +91,8 @@ public function postPersist(LifecycleEventArgs $event) /** * @param LifecycleEventArgs $eventArgs + * + * @throws \Doctrine\ORM\ORMException */ public function postRemove(LifecycleEventArgs $eventArgs) { @@ -110,4 +113,28 @@ public function postRemove(LifecycleEventArgs $eventArgs) } } } + + /** + * Get logged user or null + * + * @return object|null + */ + private function getLoggedUser() + { + /** @var TokenStorageInterface $tokenStorage */ + $tokenStorage = $this->container->get('security.token_storage'); + $token = $tokenStorage->getToken(); + + if (!$token) { + return null; + } + + $user = $token->getUser(); + + if (!is_object($user)) { + return null; + } + + return $user; + } } diff --git a/src/Diamante/DeskBundle/EventListener/GridViewsLoadListener.php b/src/Diamante/DeskBundle/EventListener/GridViewsLoadListener.php index 6c24676d4..5ecaca44b 100644 --- a/src/Diamante/DeskBundle/EventListener/GridViewsLoadListener.php +++ b/src/Diamante/DeskBundle/EventListener/GridViewsLoadListener.php @@ -12,15 +12,16 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\EventListener; -use Doctrine\Common\EventSubscriber; -use Oro\Bundle\DataGridBundle\Event\GridViewsLoadEvent; use Doctrine\Bundle\DoctrineBundle\Registry; +use Doctrine\Common\EventSubscriber; use Oro\Bundle\DataGridBundle\Entity\Repository\GridViewRepository; +use Oro\Bundle\DataGridBundle\Event\GridViewsLoadEvent; use Oro\Bundle\SecurityBundle\ORM\Walker\AclHelper; use Oro\Bundle\UserBundle\Entity\User; -use Oro\Bundle\SecurityBundle\SecurityFacade; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class GridViewsLoadListener implements EventSubscriber { @@ -32,24 +33,24 @@ class GridViewsLoadListener implements EventSubscriber protected $registry; /** @var SecurityFacade */ - protected $securityFacade; + protected $tokenStorage; /** @var AclHelper */ protected $aclHelper; /** - * @param Registry $registry - * @param SecurityFacade $securityFacade - * @param AclHelper $aclHelper + * @param Registry $registry + * @param TokenStorageInterface $tokenStorage + * @param AclHelper $aclHelper */ public function __construct( Registry $registry, - SecurityFacade $securityFacade, + TokenStorageInterface $tokenStorage, AclHelper $aclHelper ) { - $this->registry = $registry; - $this->securityFacade = $securityFacade; - $this->aclHelper = $aclHelper; + $this->registry = $registry; + $this->tokenStorage = $tokenStorage; + $this->aclHelper = $aclHelper; } public function getSubscribedEvents() @@ -100,7 +101,13 @@ public function onViewsLoad(GridViewsLoadEvent $event) */ protected function getCurrentUser() { - $user = $this->securityFacade->getLoggedUser(); + $token = $this->tokenStorage->getToken(); + + if (!$token) { + return null; + } + + $user = $token->getUser(); if ($user instanceof User) { return $user; } @@ -116,4 +123,4 @@ protected function getGridViewRepository() return $this->registry->getRepository('OroDataGridBundle:GridView'); } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Form/DataTransformer/AttachmentTransformer.php b/src/Diamante/DeskBundle/Form/DataTransformer/AttachmentTransformer.php index 3f02bd4cb..997cbddd5 100644 --- a/src/Diamante/DeskBundle/Form/DataTransformer/AttachmentTransformer.php +++ b/src/Diamante/DeskBundle/Form/DataTransformer/AttachmentTransformer.php @@ -29,7 +29,7 @@ class AttachmentTransformer implements DataTransformerInterface */ public function transform($value) { - return ""; + return ''; } /** @@ -53,7 +53,7 @@ public function reverseTransform($value) if ($each) { if (false === ($each instanceof UploadedFile)) { throw new TransformationFailedException( - "Every item in input files array should be an instance of the UploadedFile." + 'Every item in input files array should be an instance of the UploadedFile.' ); } $attachment = AttachmentInput::createFromUploadedFile($each); diff --git a/src/Diamante/DeskBundle/Form/DataTransformer/PriorityTransformer.php b/src/Diamante/DeskBundle/Form/DataTransformer/PriorityTransformer.php index ea4554c90..74848dae1 100644 --- a/src/Diamante/DeskBundle/Form/DataTransformer/PriorityTransformer.php +++ b/src/Diamante/DeskBundle/Form/DataTransformer/PriorityTransformer.php @@ -61,9 +61,9 @@ public function getOptions() if (empty($this->priorityOptions)) { $this->priorityOptions = array( - Priority::PRIORITY_LOW => Priority::PRIORITY_LOW_LABEL, - Priority::PRIORITY_MEDIUM => Priority::PRIORITY_MEDIUM_LABEL, - Priority::PRIORITY_HIGH => Priority::PRIORITY_HIGH_LABEL + Priority::PRIORITY_LOW_LABEL => Priority::PRIORITY_LOW, + Priority::PRIORITY_MEDIUM_LABEL => Priority::PRIORITY_MEDIUM, + Priority::PRIORITY_HIGH_LABEL => Priority::PRIORITY_HIGH ); } return $this->priorityOptions; diff --git a/src/Diamante/DeskBundle/Form/DataTransformer/SourceTransformer.php b/src/Diamante/DeskBundle/Form/DataTransformer/SourceTransformer.php index 28b1d9377..eaa567761 100644 --- a/src/Diamante/DeskBundle/Form/DataTransformer/SourceTransformer.php +++ b/src/Diamante/DeskBundle/Form/DataTransformer/SourceTransformer.php @@ -61,9 +61,9 @@ public function getOptions() if (empty($this->sourceOptions)) { $this->sourceOptions = array( - Source::PHONE => Source::LABEL_PHONE, - Source::EMAIL => Source::LABEL_EMAIL, - Source::WEB => Source::LABEL_WEB + Source::LABEL_PHONE => Source::PHONE, + Source::LABEL_EMAIL => Source::EMAIL, + Source::LABEL_WEB => Source::WEB ); } return $this->sourceOptions; diff --git a/src/Diamante/DeskBundle/Form/DataTransformer/StatusTransformer.php b/src/Diamante/DeskBundle/Form/DataTransformer/StatusTransformer.php index 19afbcef3..c9c35caef 100644 --- a/src/Diamante/DeskBundle/Form/DataTransformer/StatusTransformer.php +++ b/src/Diamante/DeskBundle/Form/DataTransformer/StatusTransformer.php @@ -20,7 +20,7 @@ class StatusTransformer implements DataTransformerInterface { - private $statusOptions = array(); + private $statusOptions; public function __construct() { @@ -35,7 +35,9 @@ public function transform($status) { if ($status instanceof Status) { return $status->getValue(); - } elseif (array_key_exists($status, $this->statusOptions)) { + } + + if (array_key_exists($status, $this->statusOptions)) { return $status; } @@ -62,15 +64,16 @@ public function getOptions() { if (empty($this->statusOptions)) { $this->statusOptions = - array( - Status::NEW_ONE => Status::LABEL_NEW_ONE, - Status::OPEN => Status::LABEL_OPEN, - Status::PENDING => Status::LABEL_PENDING, - Status::IN_PROGRESS => Status::LABEL_IN_PROGRESS, - Status::CLOSED => Status::LABEL_CLOSED, - Status::ON_HOLD => Status::LABEL_ON_HOLD - ); + [ + Status::LABEL_NEW_ONE => Status::NEW_ONE, + Status::LABEL_OPEN => Status::OPEN, + Status::LABEL_PENDING => Status::PENDING, + Status::LABEL_IN_PROGRESS => Status::IN_PROGRESS, + Status::LABEL_CLOSED => Status::CLOSED, + Status::LABEL_ON_HOLD => Status::ON_HOLD, + ]; } + return $this->statusOptions; } } diff --git a/src/Diamante/DeskBundle/Form/EventListener/AddMassBranchSubscriber.php b/src/Diamante/DeskBundle/Form/EventListener/AddMassBranchSubscriber.php index 3886a357d..3eaa87df9 100644 --- a/src/Diamante/DeskBundle/Form/EventListener/AddMassBranchSubscriber.php +++ b/src/Diamante/DeskBundle/Form/EventListener/AddMassBranchSubscriber.php @@ -17,6 +17,8 @@ */ use Diamante\DeskBundle\Api\BranchService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; @@ -71,20 +73,20 @@ public function preSetData(FormEvent $event) $form->add( 'newBranch', - 'choice', + ChoiceType::class, [ 'label' => 'diamante.desk.branch.messages.delete.select', 'required' => true, - 'attr' => ['style' => "width:110px"], - 'choices' => $choices + 'attr' => ['style' => 'width:110px'], + 'choices' => array_flip($choices) ] )->add( 'removeBranches', - 'hidden', + HiddenType::class, [ 'required' => false, 'data' => $removeBranchList ] ); } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Form/Extension/CountryChoiceTypeExtension.php b/src/Diamante/DeskBundle/Form/Extension/CountryChoiceTypeExtension.php new file mode 100644 index 000000000..71392795b --- /dev/null +++ b/src/Diamante/DeskBundle/Form/Extension/CountryChoiceTypeExtension.php @@ -0,0 +1,39 @@ +vars['id'] ?? null; + $choices = &$view->vars['choices'] ?? null; + if ($viewId == self::VIEW_ID && is_array($choices)) { + foreach ($choices as $key => $value) { + $currencyCode = $value->value; + if ($currencyCode && in_array($currencyCode, self::EXCLUDED_CURRENCY_CODES)) { + unset($choices[$key]); + } + } + } + } +} \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Form/Type/AddWatcherType.php b/src/Diamante/DeskBundle/Form/Type/AddWatcherType.php index 64eec8a3f..6d4553d5b 100644 --- a/src/Diamante/DeskBundle/Form/Type/AddWatcherType.php +++ b/src/Diamante/DeskBundle/Form/Type/AddWatcherType.php @@ -16,7 +16,9 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\AddWatcherCommand; +use Symfony\Component\Validator\Constraints\Valid; class AddWatcherType extends AbstractType { @@ -28,7 +30,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'watcher', - 'diamante_watcher_select', + WatcherSelectType::class, array( 'label' => 'diamante.desk.attributes.watcher', 'required' => true @@ -39,13 +41,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\AddWatcherCommand', + 'data_class' => AddWatcherCommand::class, 'intention' => 'watcher', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -56,6 +58,14 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + /** + * @inheritDoc + */ + public function getBlockPrefix() { return 'diamante_add_watcher_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/AssigneeSelectType.php b/src/Diamante/DeskBundle/Form/Type/AssigneeSelectType.php index 683c83aa8..4d3576db6 100644 --- a/src/Diamante/DeskBundle/Form/Type/AssigneeSelectType.php +++ b/src/Diamante/DeskBundle/Form/Type/AssigneeSelectType.php @@ -15,12 +15,12 @@ namespace Diamante\DeskBundle\Form\Type; use Oro\Bundle\UserBundle\Form\Type\UserSelectType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Model\Ticket\Ticket; class AssigneeSelectType extends UserSelectType { - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( @@ -35,6 +35,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) } public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_assignee_select'; } diff --git a/src/Diamante/DeskBundle/Form/Type/AssigneeTicketType.php b/src/Diamante/DeskBundle/Form/Type/AssigneeTicketType.php index 5c295ec10..72e0a7a59 100644 --- a/src/Diamante/DeskBundle/Form/Type/AssigneeTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/AssigneeTicketType.php @@ -14,9 +14,12 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Diamante\DeskBundle\Form\Type\AssigneeSelectType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\AssigneeTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class AssigneeTicketType extends AbstractType { @@ -24,7 +27,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'assignee', - 'diamante_assignee_select', + AssigneeSelectType::class, array( 'label' => 'diamante.desk.attributes.assignee', 'required' => false @@ -35,13 +38,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\AssigneeTicketCommand', + 'data_class' => AssigneeTicketCommand::class, 'intention' => 'ticket', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -52,6 +55,14 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + /** + * {@inheritDoc} + */ + public function getBlockPrefix() { return 'diamante_ticket_form_assignee'; } diff --git a/src/Diamante/DeskBundle/Form/Type/AttachmentType.php b/src/Diamante/DeskBundle/Form/Type/AttachmentType.php index 4da94c7b3..7f31b2c0f 100644 --- a/src/Diamante/DeskBundle/Form/Type/AttachmentType.php +++ b/src/Diamante/DeskBundle/Form/Type/AttachmentType.php @@ -15,9 +15,17 @@ namespace Diamante\DeskBundle\Form\Type; use Diamante\DeskBundle\Form\DataTransformer\AttachmentTransformer; +use Diamante\DeskBundle\Model\Attachment\File; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\Form\FormTypeInterface; +use Symfony\Component\Form\FormView; +use Symfony\Component\HttpFoundation\File\UploadedFile; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\AddTicketAttachmentCommand; +use Symfony\Component\Validator\Constraints\Valid; class AttachmentType extends AbstractType { @@ -26,28 +34,30 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'attachmentsInput', - 'file', + FileType::class, array( 'label' => 'diamante.desk.attachment.file', 'required' => true, + 'multiple' => true, 'attr' => array( - 'multiple' => 'multiple' + 'multiple' => true ) ) - )->addModelTransformer(new AttachmentTransformer()) + ) + ->addModelTransformer(new AttachmentTransformer()) ); } /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\AddTicketAttachmentCommand', + 'data_class' => AddTicketAttachmentCommand::class, 'intention' => 'attachment', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -58,6 +68,14 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + /** + * @inheritDoc + */ + public function getBlockPrefix() { return 'diamante_attachment_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/CommentType.php b/src/Diamante/DeskBundle/Form/Type/CommentType.php index 6d65bb8e5..e20afbece 100644 --- a/src/Diamante/DeskBundle/Form/Type/CommentType.php +++ b/src/Diamante/DeskBundle/Form/Type/CommentType.php @@ -12,13 +12,20 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\Form\Type; use Diamante\DeskBundle\Form\DataTransformer\AttachmentTransformer; +use Oro\Bundle\FormBundle\Form\Type\OroRichTextType; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\FileType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\StatusTransformer; +use Diamante\DeskBundle\Api\Command\CommentCommand; +use Symfony\Component\Validator\Constraints\Valid; class CommentType extends AbstractType { @@ -28,59 +35,60 @@ public function buildForm(FormBuilderInterface $builder, array $options) $statusOptions = $statusTransformer->getOptions(); $builder->add( - $builder->create('ticketStatus', 'choice', - array( + $builder->create( + 'ticketStatus', + ChoiceType::class, + [ 'label' => 'diamante.desk.comment.ticket_status', 'required' => true, - 'choices' => $statusOptions - )) + 'choices' => $statusOptions, + ] + ) ->addModelTransformer($statusTransformer) ); $builder->add( 'content', - 'oro_rich_text', - array( + OroRichTextType::class, + [ 'label' => 'diamante.desk.comment.content', 'required' => true, - ) + ] ); $builder->add( $builder->create( 'attachmentsInput', - 'file', - array( - 'label' => 'diamante.desk.attachment.entity_plural_label', + FileType::class, + [ + 'label' => 'diamante.desk.attachment.entity_plural_label', 'required' => false, - 'attr' => array( - 'multiple' => 'multiple' - ) - ) + 'multiple' => false + ] )->addModelTransformer(new AttachmentTransformer()) ); $builder->add( 'private', - 'checkbox', - array( + CheckboxType::class, + [ 'label' => 'diamante.desk.comment.private', - 'required' => false - ) + 'required' => false, + ] ); } /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( - array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\CommentCommand', + [ + 'data_class' => CommentCommand::class, 'intention' => 'comment', - 'cascade_validation' => true - ) + 'constraints' => new Valid(), + ] ); } @@ -90,6 +98,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_comment_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/CreateBranchType.php b/src/Diamante/DeskBundle/Form/Type/CreateBranchType.php index d270fc6cd..c7c1ae143 100644 --- a/src/Diamante/DeskBundle/Form/Type/CreateBranchType.php +++ b/src/Diamante/DeskBundle/Form/Type/CreateBranchType.php @@ -14,9 +14,15 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Oro\Bundle\FormBundle\Form\Type\OroRichTextType; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\FileType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\BranchCommand; +use Symfony\Component\Validator\Constraints\Valid; class CreateBranchType extends AbstractType { @@ -28,7 +34,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'name', - 'text', + TextType::class, array( 'label' => 'diamante.desk.attributes.name', 'required' => true, @@ -37,7 +43,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'key', - 'text', + TextType::class, array( 'label' => 'diamante.desk.attributes.key', 'required' => false, @@ -47,7 +53,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'description', - 'oro_rich_text', + OroRichTextType::class, array( 'label' => 'diamante.desk.common.description', 'required' => false, @@ -56,7 +62,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'logoFile', - 'file', + FileType::class, array( 'label' => 'diamante.desk.attachment.image', 'required' => false, @@ -66,12 +72,12 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'removeLogo', - 'hidden' + HiddenType::class ); $builder->add( 'defaultAssignee', - 'diamante_assignee_select', + AssigneeSelectType::class, array( 'label' => 'diamante.desk.attributes.default_assignee', 'required' => false @@ -82,13 +88,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\BranchCommand', + 'data_class' => BranchCommand::class, 'intention' => 'branch', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -99,6 +105,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_branch_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/CreateTicketType.php b/src/Diamante/DeskBundle/Form/Type/CreateTicketType.php index 2602018c5..891b4dfb7 100644 --- a/src/Diamante/DeskBundle/Form/Type/CreateTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/CreateTicketType.php @@ -17,10 +17,17 @@ use Diamante\DeskBundle\Form\DataTransformer\AttachmentTransformer; use Diamante\DeskBundle\Form\DataTransformer\PriorityTransformer; use Diamante\DeskBundle\Form\DataTransformer\SourceTransformer; +use Oro\Bundle\FormBundle\Form\Type\OroRichTextType; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\FileType; +use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\StatusTransformer; +use Diamante\DeskBundle\Api\Command\CreateTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class CreateTicketType extends AbstractType { @@ -28,60 +35,61 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'branch', - 'entity', + EntityType::class, array( 'label' => 'diamante.desk.attributes.branch', 'class' => 'DiamanteDeskBundle:Branch', - 'property' => 'name', - 'empty_value' => 'Choose branch...', + 'choice_label' => 'name', + 'placeholder' => 'Choose branch...', 'required' => false ) ); $builder->add( 'subject', - 'text', - array( + TextType::class, + [ 'label' => 'diamante.desk.attributes.subject', 'required' => true, - ) + ] ); $builder->add( 'description', - 'oro_rich_text', - array( + OroRichTextType::class, + [ 'label' => 'diamante.desk.common.description', 'required' => true, - 'attr' => array( - 'class' => 'diam-ticket-description' - ), - ) + 'attr' => [ + 'class' => 'diam-ticket-description', + ], + ] ); $statusTransformer = new StatusTransformer(); $statusOptions = $statusTransformer->getOptions(); $builder->add( - $builder->create('status', 'choice', - array( + $builder->create( + 'status', + ChoiceType::class, + [ 'label' => 'diamante.desk.attributes.status', 'required' => true, - 'choices' => $statusOptions - )) + 'choices' => $statusOptions, + ] + ) ->addModelTransformer($statusTransformer) ); $builder->add( $builder->create( 'attachmentsInput', - 'file', + FileType::class, array( 'label' => 'diamante.desk.attachment.file', 'required' => false, - 'attr' => array( - 'multiple' => 'multiple' - ) + 'multiple' => true ) )->addModelTransformer(new AttachmentTransformer()) ); @@ -92,7 +100,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'priority', - 'choice', + ChoiceType::class, array( 'label' => 'diamante.desk.attributes.priority', 'required' => true, @@ -108,7 +116,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'source', - 'choice', + ChoiceType::class, array( 'label' => 'diamante.desk.attributes.source', 'required' => true, @@ -121,7 +129,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'reporter', - 'diamante_reporter_select', + ReporterSelectType::class, array( 'label' => 'diamante.desk.attributes.reporter', 'required' => true @@ -130,7 +138,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'assignee', - 'diamante_assignee_select', + AssigneeSelectType::class, array( 'label' => 'diamante.desk.attributes.assignee', 'required' => false @@ -141,14 +149,14 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( - array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\CreateTicketCommand', - 'intention' => 'ticket', - 'cascade_validation' => true, - ) + [ + 'data_class' => CreateTicketCommand::class, + 'intention' => 'ticket', + 'constraints' => new Valid(), + ] ); } @@ -157,8 +165,17 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * * @return string The name of this type */ - public function getName() + public function getBlockPrefix() { return 'diamante_ticket_form'; } + + /** + * {@inheritDoc} + */ + public function getName() + { + return $this->getBlockPrefix(); + } + } diff --git a/src/Diamante/DeskBundle/Form/Type/DefaultBranchType.php b/src/Diamante/DeskBundle/Form/Type/DefaultBranchType.php index 1acb88d46..6b80b6df4 100644 --- a/src/Diamante/DeskBundle/Form/Type/DefaultBranchType.php +++ b/src/Diamante/DeskBundle/Form/Type/DefaultBranchType.php @@ -16,7 +16,9 @@ use Diamante\DeskBundle\Api\BranchService; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class DefaultBranchType extends AbstractType { @@ -30,11 +32,11 @@ public function __construct(BranchService $branchService) $this->branchService = $branchService; } - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $choices = array(); foreach ($this->branchService->getAllbranches() as $branch) { - $choices[$branch->getId()] = $branch->getName(); + $choices[$branch->getName()] = $branch->getId(); } $resolver->setDefaults(array( 'choices' => $choices @@ -43,7 +45,7 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) public function getParent() { - return 'choice'; + return ChoiceType::class; } /** @@ -52,7 +54,17 @@ public function getParent() * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_desk_default_branch'; } + + public function buildForm(FormBuilderInterface $builder, array $options) + { + parent::buildForm($builder, $options); // TODO: Change the autogenerated stub + } } diff --git a/src/Diamante/DeskBundle/Form/Type/DeleteBranch.php b/src/Diamante/DeskBundle/Form/Type/DeleteBranch.php index 85f7a0409..71c5d0c24 100644 --- a/src/Diamante/DeskBundle/Form/Type/DeleteBranch.php +++ b/src/Diamante/DeskBundle/Form/Type/DeleteBranch.php @@ -15,9 +15,9 @@ namespace Diamante\DeskBundle\Form\Type; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolver; -use Diamante\DeskBundle\Form\DataTransformer\StatusTransformer; use Diamante\DeskBundle\Api\BranchService; class DeleteBranch extends AbstractType @@ -47,18 +47,18 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'newBranch', - 'choice', + ChoiceType::class, array( 'label' => 'diamante.desk.branch.messages.delete.select', 'required' => true, - 'attr' => array('style' => "width:110px"), - 'choices' => $choices + 'attr' => array('style' => 'width:110px'), + 'choices' => array_flip($choices) ) ) )->add( $builder->create( 'moveTickets', - 'checkbox', + CheckboxType::class, array( 'label' => 'diamante.desk.branch.messages.delete.move', 'required' => false, @@ -73,6 +73,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_delete_branch_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/DiamanteUserSelectType.php b/src/Diamante/DeskBundle/Form/Type/DiamanteUserSelectType.php index 4ef4b4f96..024c03633 100755 --- a/src/Diamante/DeskBundle/Form/Type/DiamanteUserSelectType.php +++ b/src/Diamante/DeskBundle/Form/Type/DiamanteUserSelectType.php @@ -15,19 +15,21 @@ namespace Diamante\DeskBundle\Form\Type; +use Oro\Bundle\FormBundle\Form\Type\OroEntitySelectOrCreateInlineType; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class DiamanteUserSelectType extends AbstractType { - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( 'configs' => array( 'placeholder' => 'oro.user.form.choose_user', 'result_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/result.html.twig', - 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig' + 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig', + 'route_name' => '', ), 'autocomplete_alias' => 'diamante_user' ) @@ -36,14 +38,6 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) public function getParent() { - return 'oro_entity_create_or_select_inline'; + return OroEntitySelectOrCreateInlineType::class; } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'diamante_user_select'; - } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Form/Type/MassAddWatcherTicketType.php b/src/Diamante/DeskBundle/Form/Type/MassAddWatcherTicketType.php index 6c720eebd..793468ce2 100644 --- a/src/Diamante/DeskBundle/Form/Type/MassAddWatcherTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/MassAddWatcherTicketType.php @@ -14,9 +14,12 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Diamante\DeskBundle\Form\Type\WatcherSelectType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\MassActionCommands\MassAddWatcherCommand; +use Symfony\Component\Validator\Constraints\Valid; class MassAddWatcherTicketType extends AbstractType { @@ -28,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'watcher', - 'diamante_watcher_select', + WatcherSelectType::class, array( 'label' => 'diamante.desk.attributes.watcher', 'required' => true, @@ -40,13 +43,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\MassActionCommands\MassAddWatcherCommand', + 'data_class' => MassAddWatcherCommand::class, 'intention' => 'watcher', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -57,6 +60,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_ticket_form_mass_add_watcher'; } diff --git a/src/Diamante/DeskBundle/Form/Type/MassAssigneeTicketType.php b/src/Diamante/DeskBundle/Form/Type/MassAssigneeTicketType.php index ae82cca6e..d82bcba64 100644 --- a/src/Diamante/DeskBundle/Form/Type/MassAssigneeTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/MassAssigneeTicketType.php @@ -14,9 +14,12 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Diamante\DeskBundle\Form\Type\AssigneeSelectType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\MassActionCommands\MassAssigneeTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class MassAssigneeTicketType extends AbstractType { @@ -28,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'assignee', - 'diamante_assignee_select', + AssigneeSelectType::class, array( 'label' => 'diamante.desk.attributes.assignee', 'required' => false, @@ -40,13 +43,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\MassActionCommands\MassAssigneeTicketCommand', + 'data_class' => MassAssigneeTicketCommand::class, 'intention' => 'ticket', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -57,6 +60,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_ticket_form_mass_assignee'; } diff --git a/src/Diamante/DeskBundle/Form/Type/MassChangeTicketStatusType.php b/src/Diamante/DeskBundle/Form/Type/MassChangeTicketStatusType.php index a8d8d15d6..38d1b405c 100644 --- a/src/Diamante/DeskBundle/Form/Type/MassChangeTicketStatusType.php +++ b/src/Diamante/DeskBundle/Form/Type/MassChangeTicketStatusType.php @@ -15,9 +15,12 @@ namespace Diamante\DeskBundle\Form\Type; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\StatusTransformer; +use Diamante\DeskBundle\Api\Command\MassActionCommands\MassChangeStatusCommand; +use Symfony\Component\Validator\Constraints\Valid; class MassChangeTicketStatusType extends AbstractType { @@ -31,11 +34,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) $statusOptions = $statusTransformer->getOptions(); $builder->add( - $builder->create('status', 'choice', + $builder->create( + 'status', + ChoiceType::class, array( 'label' => 'diamante.desk.attributes.status', 'required' => true, - 'attr' => array('style' => "width:140px"), + 'attr' => array('style' => 'width:140px'), 'choices' => $statusOptions )) ->addModelTransformer($statusTransformer) @@ -45,13 +50,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\MassActionCommands\MassChangeStatusCommand', + 'data_class' => MassChangeStatusCommand::class, 'intention' => 'ticket_status', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -62,6 +67,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_ticket_form_status_mass_change'; } diff --git a/src/Diamante/DeskBundle/Form/Type/MassDeleteBranchType.php b/src/Diamante/DeskBundle/Form/Type/MassDeleteBranchType.php index d4bed38b1..a8eed9bbe 100644 --- a/src/Diamante/DeskBundle/Form/Type/MassDeleteBranchType.php +++ b/src/Diamante/DeskBundle/Form/Type/MassDeleteBranchType.php @@ -14,8 +14,8 @@ */ namespace Diamante\DeskBundle\Form\Type; -use Diamante\DeskBundle\Api\BranchService; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\FormBuilderInterface; use Diamante\DeskBundle\Form\EventListener\AddMassBranchSubscriber; @@ -45,7 +45,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'moveMassTickets', - 'checkbox', + CheckboxType::class, [ 'label' => 'diamante.desk.branch.messages.delete.move', 'required' => false, @@ -60,6 +60,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_mass_delete_branch_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/MassMoveTicketType.php b/src/Diamante/DeskBundle/Form/Type/MassMoveTicketType.php index dbe682935..7dca86c40 100644 --- a/src/Diamante/DeskBundle/Form/Type/MassMoveTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/MassMoveTicketType.php @@ -14,9 +14,12 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\MassActionCommands\MassMoveTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class MassMoveTicketType extends AbstractType { @@ -28,11 +31,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'branch', - 'entity', + EntityType::class, array( 'label' => 'diamante.desk.attributes.branch', 'class' => 'DiamanteDeskBundle:Branch', - 'property' => 'name', + 'choice_label' => 'name', 'attr' => array('style' => "width:140px"), 'required' => true ) @@ -42,13 +45,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\MassActionCommands\MassMoveTicketCommand', + 'data_class' => MassMoveTicketCommand::class, 'intention' => 'ticket', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -59,6 +62,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_ticket_form_mass_move'; } diff --git a/src/Diamante/DeskBundle/Form/Type/MoveTicketType.php b/src/Diamante/DeskBundle/Form/Type/MoveTicketType.php index e09779067..456605c58 100644 --- a/src/Diamante/DeskBundle/Form/Type/MoveTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/MoveTicketType.php @@ -14,9 +14,12 @@ */ namespace Diamante\DeskBundle\Form\Type; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\MoveTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class MoveTicketType extends AbstractType { @@ -24,12 +27,12 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'branch', - 'entity', + EntityType::class, array( 'label' => 'diamante.desk.attributes.branch', 'class' => 'DiamanteDeskBundle:Branch', - 'property' => 'name', - 'attr' => array('style' => "width:200px"), + 'choice_label' => 'name', + 'attr' => array('style' => 'width:200px'), 'required' => true ) ); @@ -38,13 +41,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\MoveTicketCommand', + 'data_class' => MoveTicketCommand::class, 'intention' => 'ticket', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -55,6 +58,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_ticket_form_move'; } diff --git a/src/Diamante/DeskBundle/Form/Type/ReporterSelectType.php b/src/Diamante/DeskBundle/Form/Type/ReporterSelectType.php index aa98b0e72..22ac5d101 100755 --- a/src/Diamante/DeskBundle/Form/Type/ReporterSelectType.php +++ b/src/Diamante/DeskBundle/Form/Type/ReporterSelectType.php @@ -16,19 +16,20 @@ namespace Diamante\DeskBundle\Form\Type; use Diamante\DeskBundle\Entity\Ticket; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\UserTransformer; class ReporterSelectType extends DiamanteUserSelectType { - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( 'configs' => array( 'placeholder' => Ticket::UNASSIGNED_LABEL, 'result_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/result.html.twig', - 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig' + 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig', + 'route_name' => '', ), 'transformer' => new UserTransformer(), 'grid_name' => 'diamante-reporter-select-grid', @@ -36,9 +37,4 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) ) ); } - - public function getName() - { - return 'diamante_reporter_select'; - } } \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Form/Type/UpdateBranchType.php b/src/Diamante/DeskBundle/Form/Type/UpdateBranchType.php index acd052304..f784ba92b 100644 --- a/src/Diamante/DeskBundle/Form/Type/UpdateBranchType.php +++ b/src/Diamante/DeskBundle/Form/Type/UpdateBranchType.php @@ -35,6 +35,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_update_branch_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/UpdateTicketStatusType.php b/src/Diamante/DeskBundle/Form/Type/UpdateTicketStatusType.php index 1e1428ce8..5e97e057f 100644 --- a/src/Diamante/DeskBundle/Form/Type/UpdateTicketStatusType.php +++ b/src/Diamante/DeskBundle/Form/Type/UpdateTicketStatusType.php @@ -15,9 +15,12 @@ namespace Diamante\DeskBundle\Form\Type; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\StatusTransformer; +use Diamante\DeskBundle\Api\Command\UpdateStatusCommand; +use Symfony\Component\Validator\Constraints\Valid; class UpdateTicketStatusType extends AbstractType { @@ -27,7 +30,9 @@ public function buildForm(FormBuilderInterface $builder, array $options) $statusOptions = $statusTransformer->getOptions(); $builder->add( - $builder->create('status', 'choice', + $builder->create( + 'status', + ChoiceType::class, array( 'label' => 'diamante.desk.attributes.status', 'required' => true, @@ -41,13 +46,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\UpdateStatusCommand', + 'data_class' => UpdateStatusCommand::class, 'intention' => 'ticket_status', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -58,6 +63,14 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + /** + * @inheritDoc + */ + public function getBlockPrefix() { return 'diamante_ticket_status_form'; } diff --git a/src/Diamante/DeskBundle/Form/Type/UpdateTicketType.php b/src/Diamante/DeskBundle/Form/Type/UpdateTicketType.php index 0866e9ee7..2c01f307d 100644 --- a/src/Diamante/DeskBundle/Form/Type/UpdateTicketType.php +++ b/src/Diamante/DeskBundle/Form/Type/UpdateTicketType.php @@ -15,7 +15,9 @@ namespace Diamante\DeskBundle\Form\Type; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\DeskBundle\Api\Command\UpdateTicketCommand; +use Symfony\Component\Validator\Constraints\Valid; class UpdateTicketType extends CreateTicketType { @@ -28,13 +30,13 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( - 'data_class' => 'Diamante\DeskBundle\Api\Command\UpdateTicketCommand', + 'data_class' => UpdateTicketCommand::class, 'intention' => 'ticket', - 'cascade_validation' => true + 'constraints' => new Valid(), ) ); } @@ -44,8 +46,16 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * * @return string The name of this type */ - public function getName() + public function getBlockPrefix() { return 'diamante_ticket_update_form'; } + + /** + * {@inheritDoc} + */ + public function getName() + { + return $this->getBlockPrefix(); + } } diff --git a/src/Diamante/DeskBundle/Form/Type/WatcherSelectType.php b/src/Diamante/DeskBundle/Form/Type/WatcherSelectType.php index bac20685c..6125c70d8 100644 --- a/src/Diamante/DeskBundle/Form/Type/WatcherSelectType.php +++ b/src/Diamante/DeskBundle/Form/Type/WatcherSelectType.php @@ -15,24 +15,25 @@ namespace Diamante\DeskBundle\Form\Type; -use Diamante\DeskBundle\Entity\Ticket; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Oro\Bundle\FormBundle\Form\Type\OroEntitySelectOrCreateInlineType; +use Symfony\Component\OptionsResolver\OptionsResolver; use Diamante\DeskBundle\Form\DataTransformer\UserTransformer; use Symfony\Component\Form\AbstractType; class WatcherSelectType extends AbstractType { /** - * @param OptionsResolverInterface $resolver + * @param OptionsResolver $resolver */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( array( 'configs' => array( 'placeholder' => 'diamante.desk.ui.select_watcher', 'result_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/result.html.twig', - 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig' + 'selection_template_twig' => 'DiamanteDeskBundle:Search:Autocomplete/selection.html.twig', + 'route_name' => '', ), 'transformer' => new UserTransformer(), 'grid_name' => 'diamante-watcher-select-grid', @@ -41,16 +42,8 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) ); } - /** - * @return string - */ - public function getName() - { - return 'diamante_watcher_select'; - } - public function getParent() { - return 'oro_entity_create_or_select_inline'; + return OroEntitySelectOrCreateInlineType::class; } } \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Infrastructure/Attachment/FileStorage/LocalFileStorageService.php b/src/Diamante/DeskBundle/Infrastructure/Attachment/FileStorage/LocalFileStorageService.php index c4123e3c7..614a0db38 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Attachment/FileStorage/LocalFileStorageService.php +++ b/src/Diamante/DeskBundle/Infrastructure/Attachment/FileStorage/LocalFileStorageService.php @@ -69,7 +69,7 @@ public function remove($filename) $this->fs->remove($this->uploadDir->getRealPath() . '/' . $filename); } - public static function create($attachmentUploadDirPath, $fs) + public static function create($attachmentUploadDirPath, Filesystem $fs) { return new LocalFileStorageService(new \SplFileInfo($attachmentUploadDirPath), $fs); } diff --git a/src/Diamante/DeskBundle/Infrastructure/Attachment/Imagine/Data/Loader/FileSystemAttachmentLoader.php b/src/Diamante/DeskBundle/Infrastructure/Attachment/Imagine/Data/Loader/FileSystemAttachmentLoader.php index 510942fbd..733ff5010 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Attachment/Imagine/Data/Loader/FileSystemAttachmentLoader.php +++ b/src/Diamante/DeskBundle/Infrastructure/Attachment/Imagine/Data/Loader/FileSystemAttachmentLoader.php @@ -14,12 +14,30 @@ */ namespace Diamante\DeskBundle\Infrastructure\Attachment\Imagine\Data\Loader; +use Gedmo\Uploadable\MimeType\MimeTypeGuesser; use Liip\ImagineBundle\Binary\Loader\FileSystemLoader; use Imagine\Image\ImagineInterface; +use Liip\ImagineBundle\Binary\Loader\LoaderInterface; +use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -class FileSystemAttachmentLoader extends FileSystemLoader +class FileSystemAttachmentLoader extends FileSystemLoader implements LoaderInterface { + /** + * @var ImagineInterface + */ + private $imagine; + + /** + * @var array + */ + private $formats; + + /** + * @var string + */ + private $rootPath; + /** * @param ImagineInterface $imagine */ @@ -49,9 +67,7 @@ public function getImagine() */ protected function getFileInfo($absolutePath) { - $info = new \SplFileInfo($absolutePath); - - return $info; + return new \SplFileInfo($absolutePath); } diff --git a/src/Diamante/DeskBundle/Infrastructure/Branch/BranchLogoHandler.php b/src/Diamante/DeskBundle/Infrastructure/Branch/BranchLogoHandler.php index 28704c230..a27581610 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Branch/BranchLogoHandler.php +++ b/src/Diamante/DeskBundle/Infrastructure/Branch/BranchLogoHandler.php @@ -83,9 +83,9 @@ public function remove(Logo $logo) ); } - public static function create($kernelRootDir, Filesystem $filesystem) + public static function create($kernelProjectDir, Filesystem $filesystem) { - $branchLogoDir = realpath($kernelRootDir . '/../web') . Logo::PATH_TO_LOGO_DIR; + $branchLogoDir = realpath($kernelProjectDir . '/public') . Logo::PATH_TO_LOGO_DIR; if (!$filesystem->exists($branchLogoDir)) { $filesystem->mkdir($branchLogoDir); } diff --git a/src/Diamante/DeskBundle/Infrastructure/Persistence/DoctrineGenericRepository.php b/src/Diamante/DeskBundle/Infrastructure/Persistence/DoctrineGenericRepository.php index 65db3fec3..6e49b8571 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Persistence/DoctrineGenericRepository.php +++ b/src/Diamante/DeskBundle/Infrastructure/Persistence/DoctrineGenericRepository.php @@ -14,19 +14,25 @@ */ namespace Diamante\DeskBundle\Infrastructure\Persistence; +use Diamante\DeskBundle\Entity\Ticket; use Diamante\DeskBundle\Model\Shared\Filter\PagingProperties; use Diamante\DeskBundle\Model\Shared\FilterableRepository; +use Diamante\DeskBundle\Model\Ticket\TicketKey; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\EntityRepository; use Diamante\DeskBundle\Model\Shared\Entity; use Diamante\DeskBundle\Model\Shared\Repository; +use Doctrine\ORM\OptimisticLockException; +use Doctrine\ORM\ORMException; use Doctrine\ORM\Query; use Doctrine\ORM\QueryBuilder; /** * Class DoctrineGenericRepository + * * @package Diamante\DeskBundle\Infrastructure\Persistence * - * @method \Diamante\DeskBundle\Entity\Ticket findOneByTicketKey(\Diamante\DeskBundle\Model\Ticket\TicketKey $key) + * @method Ticket findOneByTicketKey(TicketKey $key) */ class DoctrineGenericRepository extends EntityRepository implements FilterableRepository, Repository { @@ -39,7 +45,9 @@ class DoctrineGenericRepository extends EntityRepository implements FilterableRe */ public function get($id) { - return $this->find($id); + /** @var Entity|null $ticket */ + $ticket = $this->find($id); + return $ticket; } /** @@ -52,8 +60,11 @@ public function getAll() /** * Store Entity + * * @param Entity $entity * @return void + * @throws ORMException + * @throws OptimisticLockException */ public function store(Entity $entity) { @@ -64,11 +75,13 @@ public function store(Entity $entity) /** * @param Entity $entity * @return void + * @throws ORMException + * @throws OptimisticLockException */ public function remove(Entity $entity) { $this->_em->remove($entity); - $this->clearSearchIndex($entity); + // $this->clearSearchIndex($entity); TODO: Temp. commented unless method will be fixed $this->_em->flush($entity); } @@ -76,7 +89,7 @@ public function remove(Entity $entity) * @param array $conditions * @param PagingProperties $pagingProperties * @param null $callback - * @return \Doctrine\Common\Collections\Collection|static + * @return Collection|static */ public function filter(array &$conditions, PagingProperties $pagingProperties, $callback = null) { @@ -95,7 +108,7 @@ public function filter(array &$conditions, PagingProperties $pagingProperties, $ /** * @param array $conditions * @param PagingProperties $pagingProperties - * @return \Doctrine\ORM\QueryBuilder + * @return QueryBuilder */ protected function createFilterQuery(array $conditions, PagingProperties $pagingProperties) { @@ -179,6 +192,7 @@ public function count(array $criteria = [], $searchQuery = null, $callback = nul * Refresh search indexes to prevent transaction rollback * * @param Entity $entity + * @throws ORMException */ public function clearSearchIndex(Entity $entity) { diff --git a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AnonymousAuthorizationImpl.php b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AnonymousAuthorizationImpl.php index ad438f4b3..c79748e40 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AnonymousAuthorizationImpl.php +++ b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AnonymousAuthorizationImpl.php @@ -12,11 +12,12 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\Infrastructure\Shared\Authorization; use Diamante\DeskBundle\Model\Shared\Authorization\Authorization; -use Symfony\Component\Security\Core\SecurityContextInterface; use Diamante\UserBundle\Infrastructure\Persistence\Doctrine\DoctrineDiamanteUserRepository; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class AnonymousAuthorizationImpl implements Authorization { @@ -25,17 +26,17 @@ class AnonymousAuthorizationImpl implements Authorization /** * @param DoctrineDiamanteUserRepository $diamanteUserRepository - * @param SecurityContextInterface $securityContext + * @param TokenStorageInterface $tokenStorage */ public function __construct( - SecurityContextInterface $securityContext, + TokenStorageInterface $tokenStorage, DoctrineDiamanteUserRepository $diamanteUserRepository ) { - $this->securityContext = $securityContext; + $this->tokenStorage = $tokenStorage; $this->diamanteUserRepository = $diamanteUserRepository; $this->permissionsMap = array( - 'Entity:DiamanteDeskBundle:Ticket' => array('CREATE'), + 'Entity:DiamanteDeskBundle:Ticket' => array('CREATE'), ); } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationImplTrait.php b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationImplTrait.php index 800e7d67a..bb3b1835f 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationImplTrait.php +++ b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationImplTrait.php @@ -17,14 +17,14 @@ use Diamante\DeskBundle\Model\Shared\Owned; use Diamante\UserBundle\Infrastructure\Persistence\Doctrine\DoctrineDiamanteUserRepository; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Csrf\TokenStorage\TokenStorageInterface; trait AuthorizationImplTrait { /** - * @var SecurityContextInterface + * @var TokenStorageInterface */ - private $securityContext; + private $tokenStorage; /** * @var DoctrineDiamanteUserRepository @@ -53,7 +53,7 @@ public function isGranted($attributes, $object) /** @var Owned $object */ if (is_object($object)) { $objectIdentity = get_class($object); - $user = $this->securityContext->getToken()->getUser(); + $user = $this->tokenStorage->getToken()->getUser(); $objectOwner = $object->getOwner(); if ($attributes == 'EDIT' || $attributes == 'DELETE' || $attributes == 'VIEW') { @@ -81,4 +81,4 @@ public function isGranted($attributes, $object) return false; } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationManager.php b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationManager.php index 66d8e7702..13ab5edbc 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationManager.php +++ b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/AuthorizationManager.php @@ -17,16 +17,16 @@ use Diamante\UserBundle\Entity\ApiUser; use Oro\Bundle\UserBundle\Entity\User; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Diamante\DeskBundle\Model\Shared\Authorization\AuthorizationService; use Diamante\DeskBundle\Model\Shared\Authorization\Authorization; class AuthorizationManager implements AuthorizationService { /** - * @var SecurityContextInterface + * @var TokenStorageInterface */ - private $securityContext; + private $tokenStorage; /** * @var string @@ -39,10 +39,10 @@ class AuthorizationManager implements AuthorizationService private $authImpl; public function __construct(ContainerInterface $serviceContainer, - SecurityContextInterface $securityContext) + TokenStorageInterface $tokenStorage) { - $this->securityContext = $securityContext; - $user = $this->getLoggedUser(); + $this->tokenStorage = $tokenStorage; + $user = $this->getLoggedUser(); switch (true) { case ($user instanceof ApiUser): @@ -67,7 +67,7 @@ public function __construct(ContainerInterface $serviceContainer, */ public function getLoggedUser() { - if (null === $token = $this->securityContext->getToken()) { + if (null === $token = $this->tokenStorage->getToken()) { return null; } diff --git a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/DiamanteAuthorizationImpl.php b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/DiamanteAuthorizationImpl.php index 37f62d9aa..375e61a66 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/DiamanteAuthorizationImpl.php +++ b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/DiamanteAuthorizationImpl.php @@ -15,7 +15,7 @@ namespace Diamante\DeskBundle\Infrastructure\Shared\Authorization; use Diamante\DeskBundle\Model\Shared\Authorization\Authorization; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Diamante\UserBundle\Infrastructure\Persistence\Doctrine\DoctrineDiamanteUserRepository; class DiamanteAuthorizationImpl implements Authorization @@ -24,13 +24,13 @@ class DiamanteAuthorizationImpl implements Authorization /** * @param DoctrineDiamanteUserRepository $diamanteUserRepository - * @param SecurityContextInterface $securityContext + * @param TokenStorageInterface $tokenStorage */ public function __construct( - SecurityContextInterface $securityContext, + TokenStorageInterface $tokenStorage, DoctrineDiamanteUserRepository $diamanteUserRepository ) { - $this->securityContext = $securityContext; + $this->tokenStorage = $tokenStorage; $this->diamanteUserRepository = $diamanteUserRepository; $this->permissionsMap = array( @@ -40,4 +40,4 @@ public function __construct( 'Diamante\DeskBundle\Entity\Comment' => array('VIEW', 'EDIT', 'DELETE'), ); } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/OroAuthorizationImpl.php b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/OroAuthorizationImpl.php index 70fc3f6c9..758e725df 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/OroAuthorizationImpl.php +++ b/src/Diamante/DeskBundle/Infrastructure/Shared/Authorization/OroAuthorizationImpl.php @@ -12,30 +12,32 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\DeskBundle\Infrastructure\Shared\Authorization; -use Oro\Bundle\SecurityBundle\SecurityFacade; use Diamante\DeskBundle\Model\Shared\Authorization\Authorization; +use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface; class OroAuthorizationImpl implements Authorization { /** - * @var SecurityFacade + * @var AuthorizationCheckerInterface */ - private $securityFacade; + private $authorizationChecker; - public function __construct(SecurityFacade $securityFacade) + public function __construct(AuthorizationCheckerInterface $authorizationChecker) { - $this->securityFacade = $securityFacade; + $this->authorizationChecker = $authorizationChecker; } /** - * @param $attributes + * @param $attributes * @param null $object + * * @return bool */ public function isGranted($attributes, $object = null) { - return $this->securityFacade->isGranted($attributes, $object); + return $this->authorizationChecker->isGranted($attributes, $object); } -} \ No newline at end of file +} diff --git a/src/Diamante/DeskBundle/Infrastructure/Ticket/Filters/FilterUrlGeneratorFactory.php b/src/Diamante/DeskBundle/Infrastructure/Ticket/Filters/FilterUrlGeneratorFactory.php index c1e6705f6..e5d19ad1d 100644 --- a/src/Diamante/DeskBundle/Infrastructure/Ticket/Filters/FilterUrlGeneratorFactory.php +++ b/src/Diamante/DeskBundle/Infrastructure/Ticket/Filters/FilterUrlGeneratorFactory.php @@ -46,7 +46,7 @@ class FilterUrlGeneratorFactory public function __construct(ContainerInterface $container) { $this->container = $container; - $this->token = $this->container->get('security.context')->getToken(); + $this->token = $this->container->get('security.token_storage')->getToken(); $this->defaultPerPage = $this->container->get('oro_config.global') ->get('oro_data_grid.default_per_page'); $this->userFullName = $this->getCurrentUserFullName(); diff --git a/src/Diamante/DeskBundle/Model/Attachment/File.php b/src/Diamante/DeskBundle/Model/Attachment/File.php index 43e8926e0..517cbe37f 100644 --- a/src/Diamante/DeskBundle/Model/Attachment/File.php +++ b/src/Diamante/DeskBundle/Model/Attachment/File.php @@ -29,7 +29,7 @@ class File public function __construct($pathname) { $this->pathname = $pathname; - $this->filename = basename($pathname); + $pathname = basename($pathname); $this->filename = strrpos($pathname, '/') !== false ? substr($pathname, strrpos($pathname, '/') + 1) : $pathname; } diff --git a/src/Diamante/DeskBundle/Resources/config/attachment.xml b/src/Diamante/DeskBundle/Resources/config/attachment.xml index aae052fd7..76d02dc5b 100644 --- a/src/Diamante/DeskBundle/Resources/config/attachment.xml +++ b/src/Diamante/DeskBundle/Resources/config/attachment.xml @@ -22,7 +22,7 @@ Diamante\DeskBundle\Entity\Attachment Diamante\DeskBundle\Model\Attachment\AttachmentFactory attachments - %kernel.root_dir%/%diamante.attachment.directory.name% + %kernel.project_dir%/var/%diamante.attachment.directory.name% Diamante\DeskBundle\Model\Attachment\ManagerImpl Diamante\DeskBundle\Infrastructure\Attachment\FileStorage\LocalFileStorageService Diamante\DeskBundle\Infrastructure\Attachment\Imagine\Data\Loader\FileSystemAttachmentLoader @@ -36,8 +36,8 @@ %diamante.attachment.entity.class% - + + %diamante.attachment.upload_dir.path% @@ -57,9 +57,8 @@ - + + %diamante.attachment.entity.class% @@ -72,7 +71,7 @@ - + diff --git a/src/Diamante/DeskBundle/Resources/config/authorization.xml b/src/Diamante/DeskBundle/Resources/config/authorization.xml index b5ff995a6..63c0e81d4 100644 --- a/src/Diamante/DeskBundle/Resources/config/authorization.xml +++ b/src/Diamante/DeskBundle/Resources/config/authorization.xml @@ -27,22 +27,22 @@ - + - + - + - + diff --git a/src/Diamante/DeskBundle/Resources/config/automation.yml b/src/Diamante/DeskBundle/Resources/config/automation.yml index dd00c8110..c93afa7eb 100644 --- a/src/Diamante/DeskBundle/Resources/config/automation.yml +++ b/src/Diamante/DeskBundle/Resources/config/automation.yml @@ -1,33 +1,33 @@ diamante_automation: entities: ticket: - class: "Diamante\DeskBundle\Entity\Ticket" + class: 'Diamante\DeskBundle\Entity\Ticket' frontend_label: diamante.desk.ticket.entity_label conditions: ['created', 'updated', 'removed'] properties: status: frontend_label: diamante.desk.ticket.status.label frontend_options: - source: "^\\Diamante\\DeskBundle\\Model\\Ticket\\Status::getValueToLabelMap" + source: '^\\Diamante\\DeskBundle\\Model\\Ticket\\Status::getValueToLabelMap' type: status conditions: ['eq', 'neq', 'changed', 'changed_from', 'changed_to'] priority: frontend_label: diamante.desk.ticket.priority.label frontend_options: - source: "^\\Diamante\\DeskBundle\\Model\\Ticket\\Priority::getValueToLabelMap" + source: '^\\Diamante\\DeskBundle\\Model\\Ticket\\Priority::getValueToLabelMap' type: priority conditions: ['eq', 'neq', 'changed', 'changed_from', 'changed_to', 'gt', 'gte', 'lt', 'lte'] branch: frontend_label: diamante.desk.ticket.branch.label frontend_options: - source: "@diamante.autocomplete.branch.service->getBranches" + source: '@diamante.autocomplete.branch.service->getBranches' type: branch updatable: false conditions: ['eq', 'neq', 'like'] assignee: frontend_label: diamante.desk.ticket.assignee.label frontend_options: - source: "@diamante.autocomplete.user.service->getAssigners" + source: '@diamante.autocomplete.user.service->getAssigners' type: user conditions: ['eq', 'neq', 'changed', 'changed_from', 'changed_to'] reporter_email: @@ -39,7 +39,7 @@ diamante_automation: source: frontend_label: diamante.desk.ticket.source.label frontend_options: - source: "^\\Diamante\\DeskBundle\\Model\\Ticket\\Source::getValueToLabelMap" + source: '^\\Diamante\\DeskBundle\\Model\\Ticket\\Source::getValueToLabelMap' type: source conditions: ['eq', 'neq'] subject: @@ -83,7 +83,7 @@ diamante_automation: conditions: ['gt', 'gte', 'lt', 'lte'] rules: ['time_triggered'] comment: - class: "Diamante\DeskBundle\Entity\Comment" + class: 'Diamante\DeskBundle\Entity\Comment' frontend_label: diamante.desk.comment.entity_label conditions: ['created', 'updated', 'removed'] properties: @@ -99,7 +99,7 @@ diamante_automation: author: frontend_label: diamante.desk.comment.author.label frontend_options: - source: "@diamante.autocomplete.user.service->getUsers" + source: '@diamante.autocomplete.user.service->getUsers' type: user updatable: false conditions: ['is_admin', 'is_customer'] @@ -112,8 +112,8 @@ diamante_automation: actions: move_to_branch: - id: @diamante.desk.automation.action.move_to_branch + id: '@diamante.desk.automation.action.move_to_branch' frontend_label: diamante.desk.automation.action.move_to_branch frontend_options: - source: "@diamante.autocomplete.branch.service->getBranches" - data_types: ['virtual'] \ No newline at end of file + source: '@diamante.autocomplete.branch.service->getBranches' + data_types: ['virtual'] diff --git a/src/Diamante/DeskBundle/Resources/config/branch.xml b/src/Diamante/DeskBundle/Resources/config/branch.xml index d937e1ae0..10eedc3d1 100644 --- a/src/Diamante/DeskBundle/Resources/config/branch.xml +++ b/src/Diamante/DeskBundle/Resources/config/branch.xml @@ -42,9 +42,9 @@ - - %kernel.root_dir% + + + %kernel.project_dir% @@ -70,8 +70,8 @@ - - branch + + false @@ -80,9 +80,8 @@ - + + %diamante.branch.entity.class% diff --git a/src/Diamante/DeskBundle/Resources/config/form.xml b/src/Diamante/DeskBundle/Resources/config/form.xml index 2c368c5e9..3545b04b1 100644 --- a/src/Diamante/DeskBundle/Resources/config/form.xml +++ b/src/Diamante/DeskBundle/Resources/config/form.xml @@ -30,7 +30,7 @@ - + @@ -39,61 +39,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/Diamante/DeskBundle/Resources/config/mass_actions.xml b/src/Diamante/DeskBundle/Resources/config/mass_actions.xml index 05950c938..406ce646a 100644 --- a/src/Diamante/DeskBundle/Resources/config/mass_actions.xml +++ b/src/Diamante/DeskBundle/Resources/config/mass_actions.xml @@ -9,9 +9,9 @@ - + - \ No newline at end of file + diff --git a/src/Diamante/DeskBundle/Resources/config/notification.xml b/src/Diamante/DeskBundle/Resources/config/notification.xml index 3d292c2ea..d639fcdd5 100644 --- a/src/Diamante/DeskBundle/Resources/config/notification.xml +++ b/src/Diamante/DeskBundle/Resources/config/notification.xml @@ -28,8 +28,9 @@ - + + + @@ -50,13 +51,13 @@ - - - - - - - + + + + + + + diff --git a/src/Diamante/DeskBundle/Resources/config/oro/assets.yml b/src/Diamante/DeskBundle/Resources/config/oro/assets.yml index 349fb2556..5f93a6051 100644 --- a/src/Diamante/DeskBundle/Resources/config/oro/assets.yml +++ b/src/Diamante/DeskBundle/Resources/config/oro/assets.yml @@ -1,5 +1,4 @@ -assets: - css: - 'diamantedesk': - - 'bundles/diamantedesk/css/diam.css' - - 'bundles/diamantedesk/css/diam.widget.css' +css: + inputs: + - 'bundles/diamantedesk/css/diam.css' + - 'bundles/diamantedesk/css/diam.widget.css' diff --git a/src/Diamante/DeskBundle/Resources/config/oro/datagrids.yml b/src/Diamante/DeskBundle/Resources/config/oro/datagrids.yml index 9b7fd6416..cf738c876 100644 --- a/src/Diamante/DeskBundle/Resources/config/oro/datagrids.yml +++ b/src/Diamante/DeskBundle/Resources/config/oro/datagrids.yml @@ -1,6 +1,6 @@ datagrids: diamante-branch-grid: - extended_entity_name: %diamante.branch.entity.class% + extended_entity_name: '%diamante.branch.entity.class%' source: type: orm query: @@ -60,7 +60,7 @@ datagrids: view: type: navigate label: diamante.desk.branch.actions.view - icon: eye-open + icon: eye link: view_link rowAction: true acl_resource: VIEW;Entity:DiamanteDeskBundle:Branch @@ -102,13 +102,15 @@ datagrids: query: where: and: - - i.branch = :branch + - (i.branch = :branch) + bind_parameters: + - branch filters: default: status: { value: ['@diamante.ticket.datagrid_status_helper->getNewStatus', '@diamante.ticket.datagrid_status_helper->getOpenStatus'] } diamante-ticket-grid: - extended_entity_name: %diamante.ticket.entity.class% + extended_entity_name: '%diamante.ticket.entity.class%' source: type: orm query: @@ -214,7 +216,7 @@ datagrids: updatedAt: data_name: updatedAt default: - updatedAt: %oro_datagrid.extension.orm_sorter.class%::DIRECTION_DESC + updatedAt: '%oro_datagrid.extension.orm_sorter.class%::DIRECTION_DESC' filters: columns: key: @@ -229,7 +231,8 @@ datagrids: options: field_options: class: DiamanteDeskBundle:Branch - property: name + choice_label: name + query_builder: "@diamante.ticket.datagrid_branch_helper->getBranchFilterQueryBuilder" assigneeFullName: type: string data_name: assigneeFullName @@ -242,14 +245,14 @@ datagrids: options: field_options: multiple: true - choices: @diamante.ticket.datagrid_priority_helper->getTicketPriorities + choices: '@diamante.ticket.datagrid_priority_helper->getTicketPriorities' status: type: choice data_name: i.status options: field_options: multiple: true - choices: @diamante.ticket.datagrid_status_helper->getTicketStatuses + choices: '@diamante.ticket.datagrid_status_helper->getTicketStatuses' createdAt: type: datetime data_name: i.createdAt @@ -266,7 +269,7 @@ datagrids: view: type: navigate label: diamante.desk.ticket.actions.view - icon: eye-open + icon: eye link: view_link rowAction: true acl_resource: VIEW;Entity:DiamanteDeskBundle:Ticket @@ -328,7 +331,7 @@ datagrids: - a.id - a.file from: - - { table: %diamante.attachment.entity.class%, alias: a } + - { table: '%diamante.attachment.entity.class%', alias: a } where: and: - a.ticket = :ticket @@ -349,7 +352,7 @@ datagrids: view: type: navigate label: View - icon: eye-open + icon: eye link: view_link rowAction: true delete: @@ -359,7 +362,7 @@ datagrids: link: delete_link diamante-reporter-select-grid: - extended_entity_name: %oro_user.entity.class% + extended_entity_name: '%oro_user.entity.class%' options: entityHint: user entity_pagination: true @@ -402,7 +405,7 @@ datagrids: enabled: data_name: u.enabled default: - email: %oro_datagrid.extension.orm_sorter.class%::DIRECTION_ASC + email: '%oro_datagrid.extension.orm_sorter.class%::DIRECTION_ASC' filters: columns: email: @@ -432,7 +435,7 @@ datagrids: type: diamante_combined_users_datasource diamante-watcher-select-grid: - extended_entity_name: %oro_user.entity.class% + extended_entity_name: '%oro_user.entity.class%' options: entityHint: user entity_pagination: true @@ -475,7 +478,7 @@ datagrids: enabled: data_name: u.enabled default: - email: %oro_datagrid.extension.orm_sorter.class%::DIRECTION_ASC + email: '%oro_datagrid.extension.orm_sorter.class%::DIRECTION_ASC' filters: columns: email: @@ -564,7 +567,7 @@ datagrids: - i.status - i.createdAt from: - - { table: Diamante\DeskBundle\Entity\Ticket, alias: i } + - { table: 'Diamante\DeskBundle\Entity\Ticket', alias: i } join: left: - { join: i.branch, alias: branch } @@ -603,7 +606,7 @@ datagrids: columns: key: data_name: key - apply_callback: Diamante\DeskBundle\Datagrid\SortHelper::getKeySortingFunction + apply_callback: 'Diamante\DeskBundle\Datagrid\SortHelper::getKeySortingFunction' subject: data_name: i.subject status: @@ -627,7 +630,7 @@ datagrids: options: field_options: multiple: true - choices: @diamante.ticket.datagrid_status_helper->getTicketStatuses + choices: '@diamante.ticket.datagrid_status_helper->getTicketStatuses' createdAt: type: datetime data_name: i.createdAt @@ -636,7 +639,7 @@ datagrids: view: type: navigate label: diamante.desk.ticket.actions.view - icon: eye-open + icon: eye link: view_link rowAction: true acl_resource: VIEW;Entity:DiamanteDeskBundle:Ticket diff --git a/src/Diamante/DeskBundle/Resources/config/oro/liip_imagine.yml b/src/Diamante/DeskBundle/Resources/config/oro/liip_imagine.yml index c853ca966..2c843e89d 100644 --- a/src/Diamante/DeskBundle/Resources/config/oro/liip_imagine.yml +++ b/src/Diamante/DeskBundle/Resources/config/oro/liip_imagine.yml @@ -1,18 +1,17 @@ liip_imagine: - filter_sets: - attach_preview_img: - data_loader: diamante_attachment - quality: 95 - filters: - thumbnail: { size: [180, 180], mode: inset } - strip: ~ - attach_preview_default: - quality: 95 - filters: - thumbnail: { size: [180, 180], mode: outbound, allow_upscale: true } - strip: ~ - branch_logo_preview: - quality: 95 - filters: - thumbnail: { size: [16, 16], mode: outbound, allow_upscale: true } - strip: ~ \ No newline at end of file + filter_sets: + attach_preview_img: + quality: 95 + filters: + thumbnail: { size: [180, 180], mode: inset } + strip: ~ + attach_preview_default: + quality: 95 + filters: + thumbnail: { size: [180, 180], mode: outbound, allow_upscale: true } + strip: ~ + branch_logo_preview: + quality: 95 + filters: + thumbnail: { size: [16, 16], mode: outbound, allow_upscale: true } + strip: ~ \ No newline at end of file diff --git a/src/Diamante/DeskBundle/Resources/config/oro/system_configuration.yml b/src/Diamante/DeskBundle/Resources/config/oro/system_configuration.yml index 6e62907d3..6225160f7 100644 --- a/src/Diamante/DeskBundle/Resources/config/oro/system_configuration.yml +++ b/src/Diamante/DeskBundle/Resources/config/oro/system_configuration.yml @@ -1,54 +1,54 @@ system_configuration: - groups: - diamante_desk_setup: - title: 'DiamanteDesk' - priority: 30 + groups: + diamante_desk_setup: + title: 'DiamanteDesk' + priority: 30 - diamante_desk_channels: - title: 'Channels' - icon: icon-desktop + diamante_desk_channels: + title: 'Channels' + icon: icon-desktop - diamante_desk_channels_general_group: - title: 'General' + diamante_desk_channels_general_group: + title: 'General' - diamante_desk_notifications: - title: 'Notifications' - icon: icon-bullhorn + diamante_desk_notifications: + title: 'Notifications' + icon: icon-bullhorn - diamante_desk_email_notifications_group: - title: 'Email Notifications' + diamante_desk_email_notifications_group: + title: 'Email Notifications' - fields: - diamante_desk.email_notification: - type: choice - data_type: boolean - priority: 85 - options: - label: 'Enable Email Notifications' - choices: - - No - - Yes - diamante_desk.default_branch: - data_type: integer - type: diamante_desk_default_branch - options: - label: 'Default Branch' + fields: + diamante_desk.email_notification: + type: Symfony\Component\Form\Extension\Core\Type\ChoiceType + data_type: boolean + priority: 85 + options: + label: 'Enable Email Notifications' + choices: + No: 0 + Yes: 1 + diamante_desk.default_branch: + data_type: integer + type: Diamante\DeskBundle\Form\Type\DefaultBranchType + options: + label: 'Default Branch' - tree: - system_configuration: - platform: + tree: + system_configuration: + platform: + children: + diamante_desk_setup: + children: + diamante_desk_channels: children: - diamante_desk_setup: - children: - diamante_desk_channels: - children: - diamante_desk_channels_general_group: - priority: 300 - children: - - diamante_desk.default_branch - diamante_desk_notifications: - children: - diamante_desk_email_notifications_group: - priority: 300 - children: - - diamante_desk.email_notification + diamante_desk_channels_general_group: + priority: 300 + children: + - diamante_desk.default_branch + diamante_desk_notifications: + children: + diamante_desk_email_notifications_group: + priority: 300 + children: + - diamante_desk.email_notification diff --git a/src/Diamante/DeskBundle/Resources/config/placeholders.yml b/src/Diamante/DeskBundle/Resources/config/placeholders.yml index 500d82312..a943d15b3 100644 --- a/src/Diamante/DeskBundle/Resources/config/placeholders.yml +++ b/src/Diamante/DeskBundle/Resources/config/placeholders.yml @@ -10,10 +10,10 @@ placeholders: items: default_branch_notification: template: DiamanteDeskBundle::defaultBranchNotification.html.twig - applicable: @diamante.branch.placeholder->isDefault($entity$) + applicable: '@diamante.branch.placeholder->isDefault($entity$)' data: default_branch: [entity] diamante_orouser_ticket_grid: template: DiamanteDeskBundle:OroUser:Grid.html.twig - applicable: @oro_ui.placeholder.filter->isInstanceOf($entity$, %oro_user.entity.class%) + applicable: '@oro_ui.placeholder.filter->isInstanceOf($entity$, %oro_user.entity.class%)' diff --git a/src/Diamante/DeskBundle/Resources/config/services.xml b/src/Diamante/DeskBundle/Resources/config/services.xml index 74e7e1e69..4e0198b93 100755 --- a/src/Diamante/DeskBundle/Resources/config/services.xml +++ b/src/Diamante/DeskBundle/Resources/config/services.xml @@ -64,9 +64,14 @@ Diamante\DeskBundle\Infrastructure\Shared\Entity\AbstractPropertyHandler Diamante\DeskBundle\Infrastructure\Comment\CommentPropertyHandler Diamante\DeskBundle\Infrastructure\Shared\Entity\PropertyProcessingManager + Diamante\DeskBundle\Form\Extension\CountryChoiceTypeExtension + + + + @@ -88,12 +93,14 @@ - + + + @@ -115,8 +122,8 @@ - - ticket + + false @@ -177,25 +184,25 @@ - + - + - + - + - + @@ -239,7 +246,7 @@ - + diff --git a/src/Diamante/DeskBundle/Resources/config/ticket.xml b/src/Diamante/DeskBundle/Resources/config/ticket.xml index e301be167..3cf98d3ed 100644 --- a/src/Diamante/DeskBundle/Resources/config/ticket.xml +++ b/src/Diamante/DeskBundle/Resources/config/ticket.xml @@ -42,6 +42,7 @@ Diamante\DeskBundle\Serializer\CommentAuthorHandler Diamante\DeskBundle\Datagrid\StatusHelper Diamante\DeskBundle\Datagrid\PriorityHelper + Diamante\DeskBundle\Datagrid\BranchHelper Diamante\DeskBundle\Infrastructure\Ticket\EmailProcessing\TicketStrategy Diamante\DeskBundle\Entity\MessageReference @@ -89,7 +90,7 @@ - + @@ -155,9 +156,10 @@ + - + @@ -196,44 +198,37 @@ - + + %diamante.ticket.entity.class% - + + %diamante.comment.entity.class% - + + %diamante.ticket.email_processing_message_reference.entity.class% - + + %diamante.ticket_history.entity.class% - + + %diamante.watcher_list.entity.class% - + + %diamante.ticket_timeline.entity.class% - + + %diamante.audit.entity.class% diff --git a/src/Diamante/DeskBundle/Resources/public/css/diam.css b/src/Diamante/DeskBundle/Resources/public/css/diam.css index 7228cf7ff..ee2714159 100755 --- a/src/Diamante/DeskBundle/Resources/public/css/diam.css +++ b/src/Diamante/DeskBundle/Resources/public/css/diam.css @@ -1,5 +1,6 @@ .diam-attachments { position: relative; + list-style-type: none; } .diam-attachment { float: left; @@ -8,6 +9,16 @@ text-align: center; border: 1px #e5e5e5 solid; border-radius: 5px; + color: #545456; +} +.diam-attachment a { + color: #545456; +} +.diam-attachment.watchers { + margin: 0 2em 2em 0; +} +.diam-attachment.watchers i { + margin: 2px 7px 2px 0; } .diam-attachment strong { font-weight: normal; @@ -69,6 +80,7 @@ .diam-comments { margin: 0 0 1em; + list-style-type: none; } .diam-comment { @@ -343,6 +355,11 @@ div[id^="grid-audit-grid"] td.number-cell { border-radius: .25em; } +.select2-chosen .diam-user-type { + vertical-align: bottom; + display: inline-block; +} + .diam-user-type.oro { background-color: #3984B6; } @@ -351,3 +368,69 @@ div[id^="grid-audit-grid"] td.number-cell { background-color: #1D2E81; } +.desktop-version .side-menu-overlay .divider { + display: block; + height: 1px; + margin: 5px 0 5px 16px; + border: 1px solid #e3e3e4; + border-width: 1px 0 0; +} + +.desktop-version .main-menu-sided.minimized .dropdown-level-1.active .title { + color: #545456; +} + +.modal.show .modal-dialog { + top: 50%; + transform: translateY(-50%); +} + +.mce-bdesk .mce-bdesk-image { + width: 100%; + padding-top: 5px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul, ol { + padding: 0; + margin: 0 0 10px 25px; +} + +.ui-dialog-content .form-horizontal .control-group>.control-label { + width: auto !important; +} + +.form-horizontal .control-group { + position: relative; + flex-wrap: wrap; + max-width: 100%; +} + +.form-horizontal .control-group .control-label.wrap { + margin-right: 24px; + margin-top: 10px; +} + +.form-horizontal .control-group .controls { + min-width: 0; + max-width: 100%; + margin-top: 10px; + margin-left: 0; +} + +.form-horizontal .control-group .controls .selector { + max-width: 100%; +} + +.oro-modal-normal.widget-setup .modal-dialog { + margin-top: 0; +} +.modal-dialog { + margin-top: 0; + margin-bottom: 0; +} diff --git a/src/Diamante/DeskBundle/Resources/views/Ticket/attachment/list.html.twig b/src/Diamante/DeskBundle/Resources/views/Ticket/attachment/list.html.twig index 7f86a54e7..2d8f61dba 100644 --- a/src/Diamante/DeskBundle/Resources/views/Ticket/attachment/list.html.twig +++ b/src/Diamante/DeskBundle/Resources/views/Ticket/attachment/list.html.twig @@ -7,7 +7,7 @@
    {% set attachmentExtension = attachment.file.extension %} - {% set attachmentPreviewSrc = attachment.file.Pathname %} + {% set attachmentPreviewSrc = attachment.file.location %} {% if attachmentExtension == '' %} {{ attachment.filename|escape }} {% elseif (attachmentExtension == 'jpg' or attachmentExtension == 'jpeg' or @@ -38,7 +38,7 @@ method="post" enctype="multipart/form-data"> - +
    diff --git a/src/Diamante/DeskBundle/Resources/views/Ticket/widget/watchers.html.twig b/src/Diamante/DeskBundle/Resources/views/Ticket/widget/watchers.html.twig index 5c8e2ff1b..2813d7052 100644 --- a/src/Diamante/DeskBundle/Resources/views/Ticket/widget/watchers.html.twig +++ b/src/Diamante/DeskBundle/Resources/views/Ticket/widget/watchers.html.twig @@ -3,11 +3,11 @@
      {% for watcher in watchers %} -
    • +
    • {{ render_user_name(watcher) }} - + {{ 'diamante.desk.ui.delete'|trans }} diff --git a/src/Diamante/DeskBundle/Serializer/AttachmentHandler.php b/src/Diamante/DeskBundle/Serializer/AttachmentHandler.php index 3771f8bdd..7d7493f24 100644 --- a/src/Diamante/DeskBundle/Serializer/AttachmentHandler.php +++ b/src/Diamante/DeskBundle/Serializer/AttachmentHandler.php @@ -11,8 +11,8 @@ use JMS\Serializer\JsonSerializationVisitor; use JMS\Serializer\Metadata\PropertyMetadata; use JMS\Serializer\XmlSerializationVisitor; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException; +use Symfony\Component\HttpFoundation\RequestStack; class AttachmentHandler implements SubscribingHandlerInterface { @@ -34,19 +34,19 @@ class AttachmentHandler implements SubscribingHandlerInterface protected $managerImpl; /** - * @var ContainerInterface + * @var RequestStack */ - private $serviceContainer; + private $requestStack; public function __construct( AttachmentServiceImpl $attachmentServiceImpl, ManagerImpl $managerImpl, - ContainerInterface $serviceContainer + RequestStack $requestStack ) { $this->attachmentService = $attachmentServiceImpl; $this->managerImpl = $managerImpl; - $this->serviceContainer = $serviceContainer; + $this->requestStack = $requestStack; } /** @@ -58,13 +58,13 @@ public static function getSubscribingMethods() array( 'direction' => GraphNavigator::DIRECTION_SERIALIZATION, 'format' => 'json', - 'type' => 'Diamante\\DeskBundle\\Entity\\Attachment', + 'type' => Attachment::class, 'method' => 'serializeToJson', ), array( 'direction' => GraphNavigator::DIRECTION_SERIALIZATION, 'format' => 'xml', - 'type' => 'Diamante\\DeskBundle\\Entity\\Attachment', + 'type' => Attachment::class, 'method' => 'serializeToXml', ), ); @@ -109,7 +109,7 @@ public function serializeToXml( $metadata = $visitor->getCurrentMetadata(); $metadata->xmlKeyValuePairs = true; - $visitor->visitArray($data, $type, $context); + return $visitor->visitArray($data, $type, $context); } /** @@ -126,7 +126,7 @@ private function getAttachmentData(Attachment $attachment) } /** @var \Symfony\Component\HttpFoundation\Request $request */ - $request = $this->serviceContainer->get('request'); + $request = $this->requestStack->getCurrentRequest(); $data = [ 'id' => $attachment->getId(), diff --git a/src/Diamante/DistributionBundle/Command/CheckRequirementsCommand.php b/src/Diamante/DistributionBundle/Command/CheckRequirementsCommand.php new file mode 100644 index 000000000..3c3833238 --- /dev/null +++ b/src/Diamante/DistributionBundle/Command/CheckRequirementsCommand.php @@ -0,0 +1,119 @@ +setName('diamante:check-requirements') + ->setDescription('Check if Diamante Application meets an requirements') + ->setHelp( + <<%command.name% command checks that the application meets the system requirements. + +By default this command shows only errors, but you can specify the verbosity level to see warnings +and information messages, e.g.: + + php %command.full_name% -v +or + php %command.full_name% -vv + +The process exit code will be 0 if all requirements are met and 1 if at least one requirement is not fulfilled. +EOT + ); + } + + /** + * {@inheritdoc} + */ + protected function execute(InputInterface $input, OutputInterface $output) + { + $this->outputRequirements($output); + } + + /** + * @param OutputInterface $output + */ + protected function outputRequirements(OutputInterface $output) + { + $output->writeln('Requirements check:'); + + $requirements = $this->getRequirements(); + + $this->renderTable($requirements->getMandatoryRequirements(), 'Mandatory requirements', $output); + $this->renderTable($requirements->getPhpIniRequirements(), 'PHP settings', $output); + $this->renderTable($requirements->getOroRequirements(), 'Oro specific requirements', $output); + $this->renderTable($requirements->getDiamanteDeskRequirements(), 'DiamanteDesk requirements', $output); + $this->renderTable($requirements->getRecommendations(), 'Optional recommendations', $output); + + if (count($requirements->getFailedRequirements())) { + throw new \RuntimeException( + 'Some system requirements are not fulfilled. Please check output messages and fix them.' + ); + } + + $output->writeln(''); + } + + /** + * @return \DiamanteDeskRequirements + */ + protected function getRequirements() + { + if (!class_exists('DiamanteDeskRequirements')) { + require_once $this->getContainer()->getParameter('kernel.project_dir') + . DIRECTORY_SEPARATOR + . 'var' + . DIRECTORY_SEPARATOR + . 'DiamanteDeskRequirements.php'; + } + + return new \DiamanteDeskRequirements(); + } + + /** + * @param \Requirement[] $requirements + * @param string $header + * @param OutputInterface $output + */ + protected function renderTable(array $requirements, $header, OutputInterface $output) + { + $rows = []; + $verbosity = $output->getVerbosity(); + foreach ($requirements as $requirement) { + if ($requirement->isFulfilled()) { + if ($verbosity >= OutputInterface::VERBOSITY_VERY_VERBOSE) { + $rows[] = ['OK', $requirement->getTestMessage()]; + } + } elseif ($requirement->isOptional()) { + if ($verbosity >= OutputInterface::VERBOSITY_VERBOSE) { + $rows[] = ['WARNING', $requirement->getHelpText()]; + } + } else if ($verbosity >= OutputInterface::VERBOSITY_NORMAL) { + $rows[] = ['ERROR', $requirement->getHelpText()]; + } + } + + if (!empty($rows)) { + $table = new Table($output); + $table + ->setHeaders(['Check ', $header]) + ->setRows([]); + foreach ($rows as $row) { + $table->addRow($row); + } + $table->render(); + } + } +} + diff --git a/src/Diamante/DistributionBundle/Command/InstallCommand.php b/src/Diamante/DistributionBundle/Command/InstallCommand.php index 4c5fb115f..8c5c96956 100644 --- a/src/Diamante/DistributionBundle/Command/InstallCommand.php +++ b/src/Diamante/DistributionBundle/Command/InstallCommand.php @@ -24,6 +24,7 @@ use Oro\Bundle\InstallerBundle\Command\Provider\InputOptionProvider; use Symfony\Component\Console\Input\InputOption; use Oro\Bundle\ConfigBundle\Config\ConfigManager; +use Symfony\Component\Process\Process; /** * @TODO ORO 2.0 Database schema dropped successfully! executes three times but looks like nothing dropped @@ -48,10 +49,13 @@ class InstallCommand extends OroInstallCommand */ protected $inputOptionProvider; + /** @var Process */ + private $assetsCommandProcess; + protected function initialize(InputInterface $input, OutputInterface $output) { $this->logger = $this->getContainer()->get('monolog.logger.diamante'); - $this->inputOptionProvider = new InputOptionProvider($output, $input, $this->getHelperSet()->get('dialog')); + $this->inputOptionProvider = new InputOptionProvider($output, $input, $this->getHelperSet()->get('question')); if (false === $input->isInteractive()) { $this->validate($input); @@ -104,7 +108,14 @@ protected function configure() null, InputOption::VALUE_NONE, 'Determines whether translation data need to be loaded or not' - ); + ) + ->addOption( + 'skip-download-translations', + null, + InputOption::VALUE_NONE, + 'Determines whether translation data need to be downloaded or not' + ) + ; } /** @@ -143,13 +154,35 @@ protected function execute(InputInterface $input, OutputInterface $output) $output->writeln('Installing DiamanteDesk.'); - $this->checkRequirementsStep($output); - $this->prepareStep($this->commandExecutor, $input, $output) + try{ + $this->commandExecutor->runCommand( + 'diamante:check-requirements', + [ + '--process-isolation' => true, + '-vv' => true, + ] + ); + $skipAssets = $input->getOption('skip-assets'); + if (!$skipAssets) { + $this->startBuildAssetsProcess($input); + } + $this + // ->prepareStep($input, $output) ->loadDataStep($this->commandExecutor, $output); - $output->writeln('Administration setup.'); - $this->finalStep($this->commandExecutor, $output, $input, $input->getOption('skip-assets')); + $output->writeln('Administration setup finished.'); + $this->finalStep($this->commandExecutor, $output, $input, $input->getOption('skip-assets')); + + if (!$skipAssets) { + $buildAssetsProcessExitCode = $this->getBuildAssetsProcessExitCode($output); + } + } catch (\Exception $exception) { + $output->writeln(sprintf('%s', $exception->getMessage())); + + return $this->commandExecutor->getLastCommandExitCode(); + } + $output->writeln( sprintf( @@ -168,44 +201,10 @@ protected function execute(InputInterface $input, OutputInterface $output) $this->logger ->info(sprintf('DiamanteDesk installation finished at %s', date('Y-m-d H:i:s'))); + //return $buildAssetsProcessExitCode ?? 0; return 0; } - /** - * @param OutputInterface $output - * - * @return $this - * @throws \RuntimeException - */ - protected function checkRequirementsStep(OutputInterface $output) - { - $output->writeln('Requirements check:'); - - if (!class_exists('DiamanteDeskRequirements')) { - require_once $this->getContainer()->getParameter('kernel.root_dir') - . DIRECTORY_SEPARATOR - . 'DiamanteDeskRequirements.php'; - } - - $collection = new \DiamanteDeskRequirements(); - - $this->renderTable($collection->getMandatoryRequirements(), 'Mandatory requirements', $output); - $this->renderTable($collection->getPhpIniRequirements(), 'PHP settings', $output); - $this->renderTable($collection->getOroRequirements(), 'Oro specific requirements', $output); - $this->renderTable($collection->getDiamanteDeskRequirements(), 'DiamanteDesk requirements', $output); - $this->renderTable($collection->getRecommendations(), 'Optional recommendations', $output); - - if (count($collection->getFailedRequirements())) { - throw new \RuntimeException( - 'Some system requirements are not fulfilled. Please check output messages and fix them.' - ); - } - - $output->writeln(''); - - return $this; - } - /** * @param CommandExecutor $commandExecutor * @param OutputInterface $output @@ -242,7 +241,7 @@ protected function loadDataStep(CommandExecutor $commandExecutor, OutputInterfac [ '--process-isolation' => true, '--no-interaction' => true, - '--exclude' => ['DiamanteDistributionBundle'] + '--exclude' => ['DiamanteDistributionBundle', 'DiamanteDeskBundle'] ] ); @@ -253,18 +252,22 @@ protected function loadDataStep(CommandExecutor $commandExecutor, OutputInterfac $this->updateOrganization($commandExecutor); $this->updateUser($commandExecutor); - $commandExecutor->runCommand('diamante:desk:data'); - $commandExecutor->runCommand( 'oro:migration:data:load', [ - '--bundles' => ['DiamanteDistributionBundle'], + '--bundles' => ['DiamanteDistributionBundle', 'DiamanteDeskBundle'], '--process-isolation' => true, '--no-interaction' => true, ] ); - + $commandExecutor->runCommand( + 'diamante:desk:data', + [ + '--process-isolation' => true, + '--no-debug' => true + ] + ); $output->writeln(''); return $this; @@ -291,56 +294,43 @@ protected function updateUser(CommandExecutor $commandExecutor) $options = [ 'user-name' => [ 'label' => 'Username', - 'askMethod' => 'ask', - 'additionalAskArguments' => [], + 'options' => [ + 'constructorArgs' => [LoadAdminUserData::DEFAULT_ADMIN_USERNAME] + ], 'defaultValue' => LoadAdminUserData::DEFAULT_ADMIN_USERNAME, ], 'user-email' => [ 'label' => 'Email', - 'askMethod' => 'askAndValidate', - 'additionalAskArguments' => [$emailValidator], + 'options' => ['settings' => ['validator' => [$emailValidator]]], 'defaultValue' => null, ], 'user-firstname' => [ 'label' => 'First name', - 'askMethod' => 'askAndValidate', - 'additionalAskArguments' => [$firstNameValidator], + 'options' => ['settings' => ['validator' => [$firstNameValidator]]], 'defaultValue' => null, ], 'user-lastname' => [ 'label' => 'Last name', - 'askMethod' => 'askAndValidate', - 'additionalAskArguments' => [$lastNameValidator], + 'options' => ['settings' => ['validator' => [$lastNameValidator]]], 'defaultValue' => null, ], 'user-password' => [ 'label' => 'Password', - 'askMethod' => 'askHiddenResponseAndValidate', - 'additionalAskArguments' => [$passwordValidator], + 'options' => ['settings' => ['validator' => [$passwordValidator], 'hidden' => [true]]], 'defaultValue' => null, ], ]; - $commandParameters = []; - foreach ($options as $optionName => $optionData) { - $commandParameters['--' . $optionName] = $this->inputOptionProvider->get( - $optionName, - $optionData['label'], - $optionData['defaultValue'], - $optionData['askMethod'], - $optionData['additionalAskArguments'] - ); - } - - $this->commandExecutor->runCommand('cache:clear'); + //$this->commandExecutor->runCommand('cache:clear'); @see DIAM-1923 $commandExecutor->runCommand( 'oro:user:update', array_merge( [ 'user-name' => LoadAdminUserData::DEFAULT_ADMIN_USERNAME, + '--process-isolation' => true ], - $commandParameters + $this->getCommandParametersFromOptions($options) ) ); } @@ -365,24 +355,18 @@ protected function updateOrganization(CommandExecutor $commandExecutor) } return $value; }; + $options = [ 'organization-name' => [ 'label' => 'Organization name', - 'askMethod' => 'askAndValidate', - 'additionalAskArguments' => [$organizationNameValidator], + 'options' => [ + 'constructorArgs' => [$defaultOrganizationName], + 'settings' => ['validator' => [$organizationNameValidator]] + ], 'defaultValue' => $defaultOrganizationName, ] ]; - $commandParameters = []; - foreach ($options as $optionName => $optionData) { - $commandParameters['--' . $optionName] = $this->inputOptionProvider->get( - $optionName, - $optionData['label'], - $optionData['defaultValue'], - $optionData['askMethod'], - $optionData['additionalAskArguments'] - ); - } + $commandExecutor->runCommand( 'oro:organization:update', array_merge( @@ -390,10 +374,11 @@ protected function updateOrganization(CommandExecutor $commandExecutor) 'organization-name' => 'default', '--process-isolation' => true, ], - $commandParameters + $this->getCommandParametersFromOptions($options) ) ); } + /** * Update system settings such as app url, company name and short name */ @@ -401,14 +386,14 @@ protected function updateSystemSettings() { /** @var ConfigManager $configManager */ $configManager = $this->getContainer()->get('oro_config.global'); + $options = [ 'application-url' => [ 'label' => 'Application URL', 'config_key' => 'oro_ui.application_url', - 'askMethod' => 'ask', - 'additionalAskArguments' => [], ] ]; + foreach ($options as $optionName => $optionData) { $configKey = $optionData['config_key']; $defaultValue = $configManager->get('diamante_distribution.application_url'); @@ -416,14 +401,15 @@ protected function updateSystemSettings() $optionName, $optionData['label'], $defaultValue, - $optionData['askMethod'], - $optionData['additionalAskArguments'] + ['constructorArgs' => [$defaultValue]] ); + // update setting if it's not empty and not equal to default value if (!empty($value) && $value !== $defaultValue) { $configManager->set($configKey, $value); } } + $configManager->flush(); } @@ -450,4 +436,78 @@ protected function alreadyInstalledMessage(OutputInterface $output) return 255; } + + /** + * @param array $options + * @return array + */ + private function getCommandParametersFromOptions(array $options) + { + $commandParameters = []; + foreach ($options as $optionName => $optionData) { + $commandParameters['--' . $optionName] = $this->inputOptionProvider->get( + $optionName, + $optionData['label'], + $optionData['defaultValue'], + $optionData['options'] + ); + } + + return $commandParameters; + } + + /** + * @param InputInterface $input + */ + private function startBuildAssetsProcess(InputInterface $input): void + { + $phpBinaryPath = CommandExecutor::getPhpExecutable(); + + $command = [ + $phpBinaryPath, + 'bin/console', + 'oro:assets:install' + ]; + + if ($input->hasOption('symlink') && $input->getOption('symlink')) { + $command[] = '--symlink'; + } + + if ($input->getOption('env')) { + $command[] = sprintf('--env=%s', $input->getOption('env')); + } + + $this->assetsCommandProcess = new Process( + $command, + realpath($this->getContainer()->getParameter('kernel.project_dir')) + ); + $this->assetsCommandProcess->setTimeout(null); + $this->assetsCommandProcess->start(); + } + + /** + * @param OutputInterface $output + * @return int||null + */ + private function getBuildAssetsProcessExitCode(OutputInterface $output): ?int + { + if (!$this->assetsCommandProcess) { + return 0; + } + + if (!$this->assetsCommandProcess->isTerminated()) { + $this->assetsCommandProcess->wait(); + } + + if ($this->assetsCommandProcess->isSuccessful()) { + $output->writeln('Assets has been installed successfully'); + $output->writeln($this->assetsCommandProcess->getOutput()); + } else { + $output->writeln('Assets has not been installed! Please run "php bin/console oro:assets:install".'); + $output->writeln('Error during install assets:'); + $output->writeln($this->assetsCommandProcess->getErrorOutput()); + } + + return $this->assetsCommandProcess->getExitCode(); + } } diff --git a/src/Diamante/DistributionBundle/DependencyInjection/Compiler/InjectScenarioPass.php b/src/Diamante/DistributionBundle/DependencyInjection/Compiler/InjectScenarioPass.php deleted file mode 100644 index 7efbceed9..000000000 --- a/src/Diamante/DistributionBundle/DependencyInjection/Compiler/InjectScenarioPass.php +++ /dev/null @@ -1,37 +0,0 @@ -getDefinition('oro_installer.scenario'); - $scenario->setClass('Diamante\DistributionBundle\Installer\Process\InstallerScenario'); - } - -} \ No newline at end of file diff --git a/src/Diamante/DistributionBundle/DiamanteDistributionBundle.php b/src/Diamante/DistributionBundle/DiamanteDistributionBundle.php index 2c2370aaf..09be02b57 100644 --- a/src/Diamante/DistributionBundle/DiamanteDistributionBundle.php +++ b/src/Diamante/DistributionBundle/DiamanteDistributionBundle.php @@ -16,7 +16,6 @@ use Diamante\DistributionBundle\DependencyInjection\Compiler\DisableWidgetsPass; use Diamante\DistributionBundle\DependencyInjection\Compiler\RoutingVotersPass; -use Diamante\DistributionBundle\DependencyInjection\Compiler\InjectScenarioPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Bundle\Bundle; @@ -27,7 +26,6 @@ public function build(ContainerBuilder $container) parent::build($container); $container->addCompilerPass(new RoutingVotersPass()); - $container->addCompilerPass(new InjectScenarioPass()); $container->addCompilerPass(new DisableWidgetsPass()); } diff --git a/src/Diamante/DistributionBundle/EventListener/ConfigurationListener.php b/src/Diamante/DistributionBundle/EventListener/ConfigurationListener.php index c97f883eb..4f9fb9809 100755 --- a/src/Diamante/DistributionBundle/EventListener/ConfigurationListener.php +++ b/src/Diamante/DistributionBundle/EventListener/ConfigurationListener.php @@ -40,7 +40,7 @@ class ConfigurationListener //'language_languages', //'look_and_feel', //'navbar_settings', - 'activity_list_settings', + //'activity_list_settings', 'calendar_settings', //'grid_settings', //'wysiwyg_settings', @@ -78,11 +78,8 @@ public function onKernelView(GetResponseForControllerResultEvent $event) $result = $event->getControllerResult(); - /** @var AbstractNodeDefinition $data */ - $data = clone $result['data']; - $this->cleanTree($data); - - $form = clone $result['form']; + $data = $this->cleanTree($result['data']); + $form = $result['form']; $this->clearForm($form); $result['data'] = $data; @@ -93,21 +90,18 @@ public function onKernelView(GetResponseForControllerResultEvent $event) /** * Recursive function to remove not used config items * - * @param AbstractNodeDefinition $node + * @param array $node + * @return array */ - public function cleanTree(AbstractNodeDefinition $node) + public function cleanTree(array $node): array { - $children = $this->getNodeChildren($node); - - /** @var AbstractNodeDefinition $child */ - foreach ($children as $key => $child) { - if (in_array($child->getName(), static::$disabledItems)) { - unset($children[$key]); - } else { - $this->cleanTree($child); + foreach ($node as $key => $child) { + if (in_array($child['id'], static::$disabledItems, true)) { + unset($node[$key]); } } - $this->setNodeChildren($node, $children); + $node = array_values($node); + return $node; } /** @@ -128,35 +122,4 @@ public function clearForm(FormView $form) } } } - - /** - * @param AbstractNodeDefinition $node - * @return array - */ - protected function getNodeChildren(AbstractNodeDefinition $node) - { - $reflection = new \ReflectionClass($node); - if ($reflection->hasProperty('children')) { - $childrenProperty = $reflection->getProperty('children'); - $childrenProperty->setAccessible(true); - return $childrenProperty->getValue($node); - } - - return []; - } - - /** - * @param AbstractNodeDefinition $node - * @param array $children - */ - protected function setNodeChildren(AbstractNodeDefinition $node, array $children) - { - $reflection = new \ReflectionClass($node); - if ($reflection->hasProperty('children')) { - $childrenProperty = $reflection->getProperty('children'); - $childrenProperty->setAccessible(true); - $childrenProperty->setValue($node, $children); - } - } - } diff --git a/src/Diamante/DistributionBundle/EventListener/LaunchpadListener.php b/src/Diamante/DistributionBundle/EventListener/LaunchpadListener.php index 47360b6f5..7b1ac8308 100755 --- a/src/Diamante/DistributionBundle/EventListener/LaunchpadListener.php +++ b/src/Diamante/DistributionBundle/EventListener/LaunchpadListener.php @@ -15,11 +15,10 @@ namespace Diamante\DistributionBundle\EventListener; -use Oro\Bundle\SecurityBundle\SecurityFacade; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpKernel\Event\GetResponseEvent; -use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Symfony\Component\Security\Core\Authorization\AuthorizationChecker; /** * Class ShortcutListener @@ -58,7 +57,7 @@ public function onKernelRequest(GetResponseEvent $event) $dashboard = $this->getDashboardManager()->findUserActiveOrDefaultDashboard($this->getUser()); - if (!$dashboard || !$this->getSecurityFacade()->isGranted('VIEW', $dashboard->getEntity())) { + if (!$dashboard || !$this->getAuthorizationChecker()->isGranted('VIEW', $dashboard->getEntity())) { $url = $this->getRouter()->generate('diamante_ticket_list'); $event->setResponse(new RedirectResponse($url)); } @@ -93,11 +92,11 @@ protected function getDashboardManager() } /** - * @return SecurityFacade + * @return AuthorizationChecker */ - protected function getSecurityFacade() + protected function getAuthorizationChecker() { - return $this->container->get('oro_security.security_facade'); + return $this->container->get('security.authorization_checker'); } /** diff --git a/src/Diamante/DistributionBundle/EventListener/UserRoleListener.php b/src/Diamante/DistributionBundle/EventListener/UserRoleListener.php index 18a7eee8a..743c56600 100755 --- a/src/Diamante/DistributionBundle/EventListener/UserRoleListener.php +++ b/src/Diamante/DistributionBundle/EventListener/UserRoleListener.php @@ -18,6 +18,17 @@ use Oro\Bundle\SecurityBundle\Model\AclPrivilege; use Symfony\Component\Form\FormView; use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; +use Diamante\DeskBundle\Entity\Branch; +use Diamante\DeskBundle\Entity\Comment; +use Oro\Bundle\EmbeddedFormBundle\Entity\EmbeddedForm; +use Oro\Bundle\DataGridBundle\Entity\GridView; +use Oro\Bundle\UserBundle\Entity\Group; +use Oro\Bundle\IntegrationBundle\Entity\Channel; +use Oro\Bundle\NotificationBundle\Entity\EmailNotification; +use Oro\Bundle\UserBundle\Entity\Role; +use Oro\Bundle\TagBundle\Entity\Tag; +use Diamante\DeskBundle\Entity\Ticket; +use Oro\Bundle\UserBundle\Entity\User; /** * Class UserRoleListener @@ -32,31 +43,31 @@ class UserRoleListener private static $allowedEntities = array( '(root)', //'Oro\\Bundle\\AttachmentBundle\\Entity\\Attachment', - 'Diamante\\DeskBundle\\Entity\\Branch', + Branch::class, //'Oro\\Bundle\\OrganizationBundle\\Entity\\BusinessUnit', //'Oro\\Bundle\\CalendarBundle\\Entity\\Calendar', //'Oro\\Bundle\\CalendarBundle\\Entity\\CalendarEvent', //'Oro\\Bundle\\CommentBundle\\Entity\\Comment', - 'Diamante\\DeskBundle\\Entity\\Comment', + Comment::class, //'Oro\\Bundle\\DashboardBundle\\Entity\\Dashboard', //'Oro\\Bundle\\EmailBundle\\Entity\\Email', - 'Oro\\Bundle\\EmbeddedFormBundle\\Entity\\EmbeddedForm', - 'Oro\\Bundle\\DataGridBundle\\Entity\\GridView', - 'Oro\\Bundle\\UserBundle\\Entity\\Group', - 'Oro\\Bundle\\IntegrationBundle\\Entity\\Channel', + EmbeddedForm::class, + GridView::class, + Group::class, + Channel::class, //'Oro\\Bundle\\NoteBundle\\Entity\\Note', - 'Oro\\Bundle\\NotificationBundle\\Entity\\EmailNotification', + EmailNotification::class, //'Oro\\Bundle\\OrganizationBundle\\Entity\\Organization', //'Oro\\Bundle\\WorkflowBundle\\Entity\\ProcessDefinition', //'Oro\\Bundle\\ReportBundle\\Entity\\Report', - 'Oro\\Bundle\\UserBundle\\Entity\\Role', + Role::class, //'Oro\\Bundle\\SegmentBundle\\Entity\\Segment', //'Oro\\Bundle\\CalendarBundle\\Entity\\SystemCalendar', - 'Oro\\Bundle\\TagBundle\\Entity\\Tag', + Tag::class, //'Oro\\Bundle\\EmailBundle\\Entity\\EmailTemplate', - 'Diamante\\DeskBundle\\Entity\\Ticket', + Ticket::class, //'Oro\\Bundle\\TrackingBundle\\Entity\\TrackingWebsite', - 'Oro\\Bundle\\UserBundle\\Entity\\User', + User::class, //'Oro\\Bundle\\WorkflowBundle\\Entity\\WorkflowDefinition', //'Diamante\\DeskBundle\\Entity\\TicketHistory', ); diff --git a/src/Diamante/DistributionBundle/Form/SetupType.php b/src/Diamante/DistributionBundle/Form/SetupType.php deleted file mode 100644 index bfe9fa690..000000000 --- a/src/Diamante/DistributionBundle/Form/SetupType.php +++ /dev/null @@ -1,95 +0,0 @@ -dataClass = $dataClass; - } - - public function buildForm(FormBuilderInterface $builder, array $options) - { - $builder - ->add( - 'application_url', - 'text', - array( - 'label' => 'form.setup.application_url', - 'mapped' => false, - 'required' => false, - ) - ) - ->add( - 'organization_name', - 'text', - array( - 'label' => 'form.setup.organization_name', - 'mapped' => false, - 'required' => false, - ) - ) - ->add( - 'username', - 'text', - array( - 'label' => 'form.setup.username', - ) - ) - ->add( - 'plainPassword', - 'repeated', - array( - 'type' => 'password', - 'invalid_message' => 'The password fields must match.', - 'first_options' => array('label' => 'form.setup.password'), - 'second_options' => array('label' => 'form.setup.password_re'), - ) - ) - ->add( - 'email', - 'email', - array( - 'label' => 'form.setup.email', - ) - ) - ->add( - 'firstName', - 'text', - array( - 'label' => 'form.setup.firstname', - ) - ) - ->add( - 'lastName', - 'text', - array( - 'label' => 'form.setup.lastname', - ) - ); - } - - public function setDefaultOptions(OptionsResolverInterface $resolver) - { - $resolver->setDefaults( - array( - 'data_class' => $this->dataClass, - 'validation_groups' => array('Registration', 'Default'), - 'dynamic_fields_disabled' => true - ) - ); - } - - public function getName() - { - return 'diamante_installer_setup'; - } -} diff --git a/src/Diamante/DistributionBundle/Installer/Process/InstallerScenario.php b/src/Diamante/DistributionBundle/Installer/Process/InstallerScenario.php deleted file mode 100644 index 6778d7945..000000000 --- a/src/Diamante/DistributionBundle/Installer/Process/InstallerScenario.php +++ /dev/null @@ -1,22 +0,0 @@ -add('configure', new OroInstallerStep\ConfigureStep()) - ->add('schema', new DiamanteInstallerStep\InitializationStep()) - ->add('setup', new DiamanteInstallerStep\SetupStep()) - ->add('final', new DiamanteInstallerStep\FinalStep()) - ->setRedirect('oro_dashboard_view'); - } -} diff --git a/src/Diamante/DistributionBundle/Installer/Process/Step/FinalStep.php b/src/Diamante/DistributionBundle/Installer/Process/Step/FinalStep.php deleted file mode 100755 index 8ee167f9f..000000000 --- a/src/Diamante/DistributionBundle/Installer/Process/Step/FinalStep.php +++ /dev/null @@ -1,16 +0,0 @@ -complete(); - - return $this->render('DiamanteDistributionBundle:Process/Step:final.html.twig'); - } -} diff --git a/src/Diamante/DistributionBundle/Installer/Process/Step/InitializationStep.php b/src/Diamante/DistributionBundle/Installer/Process/Step/InitializationStep.php deleted file mode 100755 index 15d97ff9e..000000000 --- a/src/Diamante/DistributionBundle/Installer/Process/Step/InitializationStep.php +++ /dev/null @@ -1,127 +0,0 @@ -getRequest()->query->get('action')) { - case 'cache': - // suppress warning: ini_set(): A session is active. You cannot change the session - // module's ini settings at this time - error_reporting(E_ALL ^ E_WARNING); - return $this->handleAjaxAction('cache:clear', ['--no-optional-warmers' => true]); - case 'schema-drop': - return $this->handleAjaxAction( - 'doctrine:schema:drop', - ['--force' => true, '--full-database' => $context->getStorage()->get('dropDatabase', false)] - ); - case 'schema-update': - return $this->handleSchemaUpdate(); - case 'workflows': - return $this->handleAjaxAction('oro:workflow:definitions:load'); - case 'permissions': - return $this->handleAjaxAction(LoadPermissionConfigurationCommand::NAME); - case 'crons': - return $this->handleAjaxAction('oro:cron:definitions:load'); - case 'processes': - return $this->handleAjaxAction('oro:process:configuration:load'); - case 'fixtures': - return $this->handleFixtures(); - case 'js-routing': - return $this->handleAjaxAction('fos:js-routing:dump'); - case 'localization': - return $this->handleAjaxAction('oro:localization:dump'); - case 'assets': - return $this->handleAjaxAction( - 'oro:assets:install', - array('target' => './', '--symlink', '--exclude' => ['OroInstallerBundle']) - ); - case 'assetic': - return $this->handleAjaxAction('assetic:dump'); - case 'translation': - return $this->handleAjaxAction('oro:translation:dump'); - case 'requirejs': - return $this->handleAjaxAction('oro:requirejs:build', ['--ignore-errors' => true]); - case 'finish': - $this->get('event_dispatcher')->dispatch(InstallerEvents::FINISH); - // everything was fine - update installed flag in parameters.yml - $dumper = $this->get('oro_installer.yaml_persister'); - $params = $dumper->parse(); - $params['system']['installed'] = date('c'); - $dumper->dump($params); - // launch 'cache:clear' to set installed flag in DI container - // suppress warning: ini_set(): A session is active. You cannot change the session - // module's ini settings at this time - error_reporting(E_ALL ^ E_WARNING); - return $this->handleAjaxAction('cache:clear'); - } - - return $this->render('DiamanteDistributionBundle:Process/Step:initialization.html.twig'); - } - - protected function handleSchemaUpdate() - { - $actions = [ - ['oro:migration:load', ['--force' => true, '--timeout' => 0]] - ]; - - $exitCode = 0; - foreach ($actions as $action) { - list($command, $params) = $action; - $this->container->set('oro_migration.migrations.loader', null); - $exitCode = $this->runCommand($command, $params); - if ($exitCode) { - return $this->handleResponse($exitCode); - } - } - return $this->handleResponse($exitCode); - } - - protected function handleFixtures() - { - $actions = [ - ['oro:migration:data:load', ['--no-interaction' => true, '--exclude' => ['DiamanteDistributionBundle']]], - ]; - - $exitCode = 0; - foreach ($actions as $action) { - list($command, $params) = $action; - $exitCode = $this->runCommand($command, $params); - if ($exitCode) { - return $this->handleResponse($exitCode); - } - } - return $this->handleResponse($exitCode); - } - - /** - * @param int $exitCode - * @return JsonResponse|\Symfony\Component\HttpFoundation\RedirectResponse - */ - protected function handleResponse($exitCode) - { - if ($this->getRequest()->isXmlHttpRequest()) { - return new JsonResponse(['result' => true, 'exitCode' => $exitCode]); - } else { - return $this->redirect( - $this->generateUrl( - 'sylius_flow_display', - [ - 'scenarioAlias' => 'oro_installer', - 'stepName' => $this->getName(), - ] - ) - ); - } - } -} diff --git a/src/Diamante/DistributionBundle/Installer/Process/Step/SetupStep.php b/src/Diamante/DistributionBundle/Installer/Process/Step/SetupStep.php deleted file mode 100644 index 588dd67d6..000000000 --- a/src/Diamante/DistributionBundle/Installer/Process/Step/SetupStep.php +++ /dev/null @@ -1,92 +0,0 @@ -createForm('diamante_installer_setup'); - - $form->get('organization_name')->setData('DiamanteDesk'); - $form->get('application_url')->setData('http://localhost/diamantedesk'); - - return $this->render( - 'DiamanteDistributionBundle:Process/Step:setup.html.twig', - array( - 'form' => $form->createView() - ) - ); - } - - public function forwardAction(ProcessContextInterface $context) - { - $adminUser = $this - ->getDoctrine() - ->getRepository('OroUserBundle:User') - ->findOneBy(array('username' => LoadAdminUserData::DEFAULT_ADMIN_USERNAME)); - - if (!$adminUser) { - throw new \RuntimeException("Admin user wasn't loaded in fixtures."); - } - - $form = $this->createForm('diamante_installer_setup'); - $form->setData($adminUser); - - $form->handleRequest($this->getRequest()); - - if ($form->isValid()) { - $context->getStorage()->set( - 'loadFixtures', - false - ); - - $this->get('oro_user.manager')->updateUser($adminUser); - - /** @var ConfigManager $configManager */ - $configManager = $this->get('oro_config.global'); - $defaultOrganizationName = $configManager->get('oro_ui.organization_name'); - $organizationName = $form->get('organization_name')->getData(); - if (!empty($organizationName) && $organizationName !== $defaultOrganizationName) { - $configManager->set('oro_ui.application_name', $organizationName); - } - - $defaultAppURL = $configManager->get('oro_ui.application_url'); - $applicationURL = $form->get('application_url')->getData(); - if (!empty($applicationURL) && $applicationURL !== $defaultAppURL) { - $configManager->set('oro_ui.application_url', $applicationURL); - } - $configManager->flush(); - - $this->runCommand('diamante:desk:data'); - $this->runCommand('oro:migration:data:load', ['--bundles' => ['DiamanteDistributionBundle']]); - - return $this->complete(); - } - - return $this->render( - 'DiamanteDistributionBundle:Process/Step:setup.html.twig', - array( - 'form' => $form->createView() - ) - ); - } -} diff --git a/src/Diamante/DistributionBundle/Resources/config/oro/assets.yml b/src/Diamante/DistributionBundle/Resources/config/oro/assets.yml deleted file mode 100644 index b935aadb2..000000000 --- a/src/Diamante/DistributionBundle/Resources/config/oro/assets.yml +++ /dev/null @@ -1,4 +0,0 @@ -assets: - css: - 'diamantedistribution': - - 'bundles/diamantedistribution/css/less/main.less' diff --git a/src/Diamante/DistributionBundle/Resources/config/oro/assets_old.yml b/src/Diamante/DistributionBundle/Resources/config/oro/assets_old.yml new file mode 100644 index 000000000..4a67ccae8 --- /dev/null +++ b/src/Diamante/DistributionBundle/Resources/config/oro/assets_old.yml @@ -0,0 +1,3 @@ +css: + inputs: +# - 'bundles/diamantedistribution/css/less/main.less' diff --git a/src/Diamante/DistributionBundle/Resources/config/oro/navigation.yml b/src/Diamante/DistributionBundle/Resources/config/oro/navigation.yml index b32a297f0..4760a0983 100644 --- a/src/Diamante/DistributionBundle/Resources/config/oro/navigation.yml +++ b/src/Diamante/DistributionBundle/Resources/config/oro/navigation.yml @@ -1,208 +1,216 @@ navigation: - menu_config: - items: - embedded_forms: - label: 'oro.embeddedform.entity_plural_label' - route: 'oro_embedded_form_list' - extras: - position: 20 - routes: ['oro_embedded_form_*'] - diamante_branch_list: - label: 'diamante.desk.branch.entity_plural_label' - route: diamante_branch_list - extras: - icon: icon-archive - routes: ['diamante_branch_*'] - position: 80 - diamante_ticket_list: - label: 'diamante.desk.ticket.entity_plural_label' - route: diamante_ticket_list - extras: - icon: icon-check - routes: ['diamante_ticket_*', 'diamante_comment_*'] - position: 90 - diamante_automation_list: - label: 'diamante.automation.rule.entity_plural_label' - uri: '#' - extras: - position: 93 - diamante_report_list: - label: 'diamante.desk.report.plural_label' - uri: '#' - extras: - icon: icon-bar-chart - position: 95 - - diamante_customer_management: - label: 'diamante.user.labels.entity.plural' - route: 'diamante_user_list' - extras: - icon: icon-group - position: 96 - - diamante_event_triggered_list: - label: 'diamante.automation.rule.event_triggered.entity_label' - route: diamante_event_triggered_list - extras: - routes: - route: 'diamante_event_triggered_*' - route_parameters: - type: 'event_triggered' - - - diamante_time_triggered_list: - label: 'diamante.automation.rule.time_triggered.entity_label' - route: diamante_time_triggered_list - extras: - routes: - route: 'diamante_time_triggered_*' - route_parameters: - type: 'time_triggered' - - - #reports - diamante_report_tickets_by_priority: - label: 'diamante.desk.report.reports.tickets_by_priority' - route: diamante_report_view - extras: - routes: - route: 'diamante_report_*' - route_parameters: - id: 'tickets_by_priority' - - diamante_report_time_of_response: - label: 'diamante.desk.report.reports.tickets_by_response_time' - route: diamante_report_view - extras: - routes: - route: 'diamante_report_*' - route_parameters: - id: 'time_of_response' - - diamante_report_tickets_by_channels: - label: 'diamante.desk.report.reports.tickets_by_channels' - route: diamante_report_view - extras: - routes: - route: 'diamante_report_*' - route_parameters: - id: 'tickets_by_channels' - - diamante_report_tickets_by_branches: - label: 'diamante.desk.report.reports.tickets_by_branches' - route: diamante_report_view - extras: - routes: - route: 'diamante_report_*' - route_parameters: - id: 'tickets_by_branches' - - diamante_report_ticket_timeline: - label: 'diamante.desk.report.reports.ticket_timeline' - route: diamante_report_view - extras: - routes: - route: 'diamante_report_*' - route_parameters: - id: 'ticket_timeline' - - tags_management_extra: - label: 'oro.tag.entity_plural_label' - route: 'oro_tag_index' - extras: - position: 90 - routes: ['oro_tag_*'] - description: 'oro.tag.menu.tag_list.description' - - oro_calendar_view_default: - display: false - oro_email_user_emails: - display: false - activities_tab: - display: false - reports_tab: - display: false - system_tab: - display: false - oro_platform_system_info: - display: false - diamante_config_tab: - label: 'System' - uri: '#' - extras: - icon: icon-cog - position: 100 - tree: - application_menu: + menu_config: + items: + embedded_forms: + label: 'oro.embeddedform.entity_plural_label' + route: 'oro_embedded_form_list' + extras: + position: 20 + routes: ['oro_embedded_form_*'] + diamante_branch_list: + label: 'diamante.desk.branch.entity_plural_label' + route: 'diamante_branch_list' + extras: + icon: fa-archive + routes: ['diamante_branch_*'] + position: 80 + diamante_ticket_list: + label: 'diamante.desk.ticket.entity_plural_label' + route: 'diamante_ticket_list' + extras: + icon: fa-check + routes: ['diamante_ticket_*', 'diamante_comment_*'] + position: 90 + diamante_automation_list: + label: 'diamante.automation.rule.entity_plural_label' + uri: '#' + extras: + position: 93 + diamante_report_list: + label: 'diamante.desk.report.plural_label' + uri: '#' + extras: + icon: fa-bar-chart + position: 95 + + diamante_customer_management: + label: 'diamante.user.labels.entity.plural' + route: 'diamante_user_list' + extras: + icon: fa-users + position: 96 + + diamante_event_triggered_list: + label: 'diamante.automation.rule.event_triggered.entity_label' + route: 'diamante_event_triggered_list' + extras: + routes: + route: 'diamante_event_triggered_*' + route_parameters: + type: 'event_triggered' + + + diamante_time_triggered_list: + label: 'diamante.automation.rule.time_triggered.entity_label' + route: 'diamante_time_triggered_list' + extras: + routes: + route: 'diamante_time_triggered_*' + route_parameters: + type: 'time_triggered' + + + #reports + diamante_report_tickets_by_priority: + label: 'diamante.desk.report.reports.tickets_by_priority' + route: 'diamante_report_view' + extras: + routes: + route: 'diamante_report_*' + route_parameters: + id: 'tickets_by_priority' + + diamante_report_time_of_response: + label: 'diamante.desk.report.reports.tickets_by_response_time' + route: 'diamante_report_view' + extras: + routes: + route: 'diamante_report_*' + route_parameters: + id: 'time_of_response' + + diamante_report_tickets_by_channels: + label: 'diamante.desk.report.reports.tickets_by_channels' + route: 'diamante_report_view' + extras: + routes: + route: 'diamante_report_*' + route_parameters: + id: 'tickets_by_channels' + + diamante_report_tickets_by_branches: + label: 'diamante.desk.report.reports.tickets_by_branches' + route: 'diamante_report_view' + extras: + routes: + route: 'diamante_report_*' + route_parameters: + id: 'tickets_by_branches' + + diamante_report_ticket_timeline: + label: 'diamante.desk.report.reports.ticket_timeline' + route: 'diamante_report_view' + extras: + routes: + route: 'diamante_report_*' + route_parameters: + id: 'ticket_timeline' + + tags_management_extra: + label: 'oro.tag.entity_plural_label' + route: 'oro_tag_index' + extras: + position: 90 + routes: ['oro_tag_*'] + description: 'oro.tag.menu.tag_list.description' + + oro_calendar_view_default: + display: false + oro_email_user_emails: + display: false + activities_tab: + display: false + reports_tab: + display: false + system_tab: + display: false + oro_platform_system_info: + display: false + oro_organization_list: + display: false + oro_business_unit_list: + display: false + user_create: + display: false + integrations_list: + display: false + diamante_config_tab: + label: 'System' + uri: '#' + extras: + icon: fa-cog + position: 100 + tree: + application_menu: + children: + diamante_branch_list: ~ + diamante_ticket_list: ~ + diamante_automation_list: + children: + diamante_time_triggered_list: ~ + diamante_event_triggered_list: ~ + diamante_report_list: + children: + diamante_report_tickets_by_priority: ~ + diamante_report_time_of_response: ~ + diamante_report_tickets_by_channels: ~ + diamante_report_tickets_by_branches: ~ + diamante_report_ticket_timeline: ~ + diamante_customer_management: ~ + diamante_config_tab: + children: + tags_management_extra: + merge_strategy: move + system_configuration: + merge_strategy: move + users_management: + merge_strategy: move children: - diamante_branch_list: ~ - diamante_ticket_list: ~ - diamante_automation_list: - children: - diamante_time_triggered_list: ~ - diamante_event_triggered_list: ~ - diamante_report_list: - children: - diamante_report_tickets_by_priority: ~ - diamante_report_time_of_response: ~ - diamante_report_tickets_by_channels: ~ - diamante_report_tickets_by_branches: ~ - diamante_report_ticket_timeline: ~ - diamante_customer_management: ~ - diamante_config_tab: - children: - tags_management_extra: - merge_strategy: move - system_configuration: - merge_strategy: move - users_management: - merge_strategy: move - children: - user_list: - merge_strategy: move - user_create: - merge_strategy: move - user_groups: - merge_strategy: move - user_roles: - merge_strategy: move - integrations_submenu: - merge_strategy: move - children: - embedded_forms: ~ - oro_platform_system_info: - merge_strategy: move - audit_list: - merge_strategy: move - - titles: - diamante_branch_list: ~ - diamante_branch_view: '%%branch.name%%' - diamante_branch_create: 'Create Branch' - diamante_branch_update: '%%branch.name%% - Edit' - - diamante_comment_create: 'Add Comment - %%ticket.subject%%' - diamante_comment_update: 'Edit Comment - %%ticket.subject%%' - - diamante_ticket_list: ~ - diamante_ticket_view: '[%%ticket.key%%] %%ticket.subject%%' - diamante_ticket_create: 'Create Ticket' - diamante_ticket_update: '%%ticket.subject%% - Edit' - diamante_ticket_create_attach: 'Add Attachment' - - diamante_event_triggered_list: 'Event Triggered Rules' - diamante_event_triggered_view: '%%rule.name%%' - diamante_event_triggered_create: 'Create Event Triggered Rule' - diamante_event_triggered_update: '%%rule.name%% - Edit' - - diamante_time_triggered_list: 'Time Triggered Rules' - diamante_time_triggered_view: '%%rule.name%%' - diamante_time_triggered_create: 'Create Time Triggered Rule' - diamante_time_triggered_update: '%%rule.name%% - Edit' - - diamante_report_view: '%%report.label%%' - - diamante_user_create: 'Create Customer' - diamante_user_view: '%%user.fullName%% - DiamanteDesk User' - diamante_user_update: '%%user.name%% - Update' - diamante_user_list: 'Customers Management' + user_list: + merge_strategy: move + user_create: + merge_strategy: move + user_groups: + merge_strategy: move + user_roles: + merge_strategy: move + integrations_submenu: + merge_strategy: move + children: + embedded_forms: ~ + oro_platform_system_info: + merge_strategy: move + audit_list: + merge_strategy: move + + titles: + diamante_branch_list: ~ + diamante_branch_view: '%%branch.name%%' + diamante_branch_create: 'Create Branch' + diamante_branch_update: '%%branch.name%% - Edit' + + diamante_comment_create: 'Add Comment - %%ticket.subject%%' + diamante_comment_update: 'Edit Comment - %%ticket.subject%%' + + diamante_ticket_list: ~ + diamante_ticket_view: '[%%ticket.key%%] %%ticket.subject%%' + diamante_ticket_create: 'Create Ticket' + diamante_ticket_update: '%%ticket.subject%% - Edit' + diamante_ticket_create_attach: 'Add Attachment' + + diamante_event_triggered_list: 'Event Triggered Rules' + diamante_event_triggered_view: '%%rule.name%%' + diamante_event_triggered_create: 'Create Event Triggered Rule' + diamante_event_triggered_update: '%%rule.name%% - Edit' + + diamante_time_triggered_list: 'Time Triggered Rules' + diamante_time_triggered_view: '%%rule.name%%' + diamante_time_triggered_create: 'Create Time Triggered Rule' + diamante_time_triggered_update: '%%rule.name%% - Edit' + + diamante_report_view: '%%report.label%%' + + diamante_user_create: 'Create Customer' + diamante_user_view: '%%user.fullName%% - DiamanteDesk User' + diamante_user_update: '%%user.name%% - Update' + diamante_user_list: 'Customers Management' diff --git a/src/Diamante/DistributionBundle/Resources/config/services.xml b/src/Diamante/DistributionBundle/Resources/config/services.xml index de585aeef..f669e1843 100644 --- a/src/Diamante/DistributionBundle/Resources/config/services.xml +++ b/src/Diamante/DistributionBundle/Resources/config/services.xml @@ -11,9 +11,8 @@ Diamante\DistributionBundle\EventListener\UserRoleListener Diamante\DistributionBundle\EventListener\ConfigurationListener Diamante\DistributionBundle\Routing\Whitelist\WhitelistProviderImpl - Diamante\DistributionBundle\Installer\Process\InstallerScenario - Diamante\DistributionBundle\Form\SetupType Diamante\DistributionBundle\Infrastructure\Version + Diamante\DistributionBundle\Command\CheckRequirementsCommand @@ -57,13 +56,12 @@ - - Oro\Bundle\UserBundle\Entity\User - - - + + + + diff --git a/src/Diamante/DistributionBundle/Resources/config/whitelist.yml b/src/Diamante/DistributionBundle/Resources/config/whitelist.yml index f26029603..66f6190cf 100644 --- a/src/Diamante/DistributionBundle/Resources/config/whitelist.yml +++ b/src/Diamante/DistributionBundle/Resources/config/whitelist.yml @@ -2,7 +2,15 @@ whitelist: simple: - 'oro_config_configuration_system' - 'oro_api_get_sidebars' + - 'oro_api_put_sidebars' + - 'oro_api_patch_entity_data' - 'oro_api_cget_sidebarwidgets' + - 'oro_api_post_sidebarwidgets' + - 'oro_api_post_windows' + - 'oro_api_put_sidebarwidgets' + - 'oro_api_delete_sidebarwidgets' + - 'oro_api_delete_windows' + - 'oro_email_last' - 'oro_default' - 'oro_dashboard_itemized_widget' - 'oro_activity_list_widget_activities' @@ -29,6 +37,8 @@ whitelist: - 'oro_importexport_export_download' - 'oro_attachment_file' - 'oro_action_widget_buttons' + - 'oro_action_operation_execute' + - 'oro_email_emailorigin_list' #OroUserBundle - 'oro_activity_list_api_get_list' diff --git a/src/Diamante/DistributionBundle/Resources/views/Process/Step/final.html.twig b/src/Diamante/DistributionBundle/Resources/views/Process/Step/final.html.twig deleted file mode 100755 index 99ff25e47..000000000 --- a/src/Diamante/DistributionBundle/Resources/views/Process/Step/final.html.twig +++ /dev/null @@ -1,24 +0,0 @@ -{% extends 'OroInstallerBundle::layout.html.twig' %} -{% use 'OroInstallerBundle::progress.html.twig' %} - -{% set step = 'final' %} - -{% block title %}{{ 'process.step.final.header'|trans }} - {{ parent() }}{% endblock %} - -{% block content %} -
      -

      {{ 'process.step.final.header'|trans }}

      -
      - -
      -

      {{ 'process.step.final.content'|trans|raw }}

      -
      - - -{% endblock %} - -{% block javascript %} - {{ parent() }} -{% endblock javascript %} diff --git a/src/Diamante/DistributionBundle/Resources/views/Process/Step/initialization.html.twig b/src/Diamante/DistributionBundle/Resources/views/Process/Step/initialization.html.twig deleted file mode 100644 index 8a7508212..000000000 --- a/src/Diamante/DistributionBundle/Resources/views/Process/Step/initialization.html.twig +++ /dev/null @@ -1,72 +0,0 @@ -{% extends 'OroInstallerBundle::layout.html.twig' %} -{% use 'OroInstallerBundle::progress.html.twig' %} - -{% set step, steps = 'initialization', [ -'cache', -'schema-drop', -'schema-update', -'permissions', -'crons', -'workflows', -'processes', -'fixtures', -'translation', -'js-routing', -'localization', -'assets', -'assetic', -'requirejs' -] %} - -{% block title %}{{ 'process.step.diamanteinstall.header'|trans }} - {{ parent() }}{% endblock %} - -{% set steps = steps|merge(['finish']) %} - -{% block content %} -
      -

      {{ 'process.step.diamanteinstall.header'|trans }}

      -
      - -
      - - - - - - - - - - - {% for step in steps %} - - - - - {% endfor %} - -
      {{ 'process.operation'|trans }}{{ 'process.status'|trans }}
      {{ ('process.step.installation.' ~ step)|trans }} 
      - - -
      -{% endblock %} - -{% block javascript %} - {{ parent() }} - - -{% endblock javascript %} diff --git a/src/Diamante/DistributionBundle/Resources/views/Process/Step/setup.html.twig b/src/Diamante/DistributionBundle/Resources/views/Process/Step/setup.html.twig deleted file mode 100644 index 3f3a0f704..000000000 --- a/src/Diamante/DistributionBundle/Resources/views/Process/Step/setup.html.twig +++ /dev/null @@ -1,43 +0,0 @@ -{% extends 'OroInstallerBundle::layout.html.twig' %} -{% use 'OroInstallerBundle::progress.html.twig' %} -{% form_theme form with 'OroInstallerBundle:Form:fields.html.twig' %} - -{% set step = 'setup' %} - -{% block title %}{{ 'process.step.setup.header'|trans }} - {{ parent() }}{% endblock %} - -{% block content %} -
      -

      {{ 'process.step.setup.header'|trans }}

      -
      - -
      -
      -
      - {{ form_errors(form) }} -
      - -
      -
      -

      {{ form.vars.label|trans }}

      - {{ form_row(form.organization_name) }} - {{ form_row(form.application_url) }} - {{ form_row(form.username) }} - {{ form_row(form.plainPassword) }} - {{ form_row(form.email) }} - {{ form_row(form.firstName) }} - {{ form_row(form.lastName) }} -
      - - {{ form_rest(form) }} -
      - -
      -
      - {{ 'process.button.back'|trans }} - -
      -
      -
      -
      -{% endblock %} diff --git a/src/Diamante/DistributionBundle/Resources/views/layout.html.twig b/src/Diamante/DistributionBundle/Resources/views/layout.html.twig deleted file mode 100644 index 904ba2b0f..000000000 --- a/src/Diamante/DistributionBundle/Resources/views/layout.html.twig +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - {% block title %}DiamanteDesk Installation {% endblock %} - - - - - - - - - - - - - - - - - - - - - - - - - - - {% block javascript %} - - {% endblock javascript %} - - -
      -

      {{ 'title'|trans }}

      -
      -
      -
      - {% block progress %}{% endblock %} - {% block content %}{% endblock %} -
      -
      - {% block bottom %}{% endblock bottom %} - - diff --git a/src/Diamante/DistributionBundle/Resources/views/progress.html.twig b/src/Diamante/DistributionBundle/Resources/views/progress.html.twig deleted file mode 100644 index a2b798972..000000000 --- a/src/Diamante/DistributionBundle/Resources/views/progress.html.twig +++ /dev/null @@ -1,28 +0,0 @@ -{% block progress %} -{% set step = step is defined ? step|lower : 'configure' %} - -
      -
        - - 1 - {{ 'process.step.check.header'|trans }} - - - 2 - {{ 'process.step.configure.header'|trans }} - - - 3 - {{ 'process.step.diamanteinstall.header'|trans }} - - - 4 - {{ 'process.step.setup.header'|trans }} - - - 5 - {{ 'process.step.final.header'|trans }} - -
      -
      -{% endblock %} diff --git a/src/Diamante/EmailProcessingBundle/Form/Type/HelpChannelsConfigurationType.php b/src/Diamante/EmailProcessingBundle/Form/Type/HelpChannelsConfigurationType.php index 25ac1686d..b5af90fe0 100644 --- a/src/Diamante/EmailProcessingBundle/Form/Type/HelpChannelsConfigurationType.php +++ b/src/Diamante/EmailProcessingBundle/Form/Type/HelpChannelsConfigurationType.php @@ -3,6 +3,7 @@ namespace Diamante\EmailProcessingBundle\Form\Type; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\FormBuilderInterface; use Oro\Bundle\FormBundle\Form\DataTransformer\ArrayToJsonTransformer; @@ -16,13 +17,18 @@ class HelpChannelsConfigurationType extends AbstractType */ public function getParent() { - return 'hidden'; + return HiddenType::class; } /** * {@inheritdoc} */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return self::NAME; } diff --git a/src/Diamante/EmailProcessingBundle/Resources/config/form.xml b/src/Diamante/EmailProcessingBundle/Resources/config/form.xml index 6dd4d8201..62ad52523 100644 --- a/src/Diamante/EmailProcessingBundle/Resources/config/form.xml +++ b/src/Diamante/EmailProcessingBundle/Resources/config/form.xml @@ -10,7 +10,7 @@ - + diff --git a/src/Diamante/EmailProcessingBundle/Resources/config/oro/assets.yml b/src/Diamante/EmailProcessingBundle/Resources/config/oro/assets.yml index 8f5087139..71532714f 100644 --- a/src/Diamante/EmailProcessingBundle/Resources/config/oro/assets.yml +++ b/src/Diamante/EmailProcessingBundle/Resources/config/oro/assets.yml @@ -1,4 +1,3 @@ -assets: - css: - 'diamanteemailprocessing': - - 'bundles/diamanteemailprocessing/css/diam.css' +css: + inputs: + - 'bundles/diamanteemailprocessing/css/diam.css' diff --git a/src/Diamante/EmailProcessingBundle/Resources/config/oro/system_configuration.yml b/src/Diamante/EmailProcessingBundle/Resources/config/oro/system_configuration.yml index 988967a94..1b1fbb5d4 100644 --- a/src/Diamante/EmailProcessingBundle/Resources/config/oro/system_configuration.yml +++ b/src/Diamante/EmailProcessingBundle/Resources/config/oro/system_configuration.yml @@ -6,14 +6,14 @@ system_configuration: fields: diamante_email_processing.mailbox_server_address: data_type: string - type: text + type: Symfony\Component\Form\Extension\Core\Type\TextType priority: 95 options: label: 'Server Address' diamante_email_processing.mailbox_port: data_type: string - type: text + type: Symfony\Component\Form\Extension\Core\Type\TextType priority: 90 options: label: 'Port' @@ -21,38 +21,38 @@ system_configuration: diamante_email_processing.mailbox_ssl: data_type: boolean - type: choice + type: Symfony\Component\Form\Extension\Core\Type\ChoiceType priority: 85 options: label: 'SSL' choices: - - No - - Yes + No: 0 + Yes: 1 diamante_email_processing.mailbox_username: data_type: string - type: text + type: Symfony\Component\Form\Extension\Core\Type\TextType priority: 80 options: label: 'Username' diamante_email_processing.mailbox_password: data_type: string - type: password + type: Symfony\Component\Form\Extension\Core\Type\PasswordType priority: 75 options: label: 'Password' diamante_email_processing.mailbox_delete_processed_messages: data_type: string - type: choice + type: Symfony\Component\Form\Extension\Core\Type\ChoiceType priority: 70 options: label: 'Delete Processed Messages' tooltip: "Some IMAP servers do not allow copy/move operations on the messages. In this case they could be removed after processing." choices: - - No - - Yes + No: 0 + Yes: 1 tree: system_configuration: diff --git a/src/Diamante/EmailProcessingBundle/Resources/config/services.xml b/src/Diamante/EmailProcessingBundle/Resources/config/services.xml index 28588c9ed..8054767cd 100644 --- a/src/Diamante/EmailProcessingBundle/Resources/config/services.xml +++ b/src/Diamante/EmailProcessingBundle/Resources/config/services.xml @@ -65,7 +65,7 @@ - + @@ -74,10 +74,10 @@ - + - + diff --git a/src/Diamante/EmbeddedFormBundle/Controller/DiamanteEmbeddedFormController.php b/src/Diamante/EmbeddedFormBundle/Controller/DiamanteEmbeddedFormController.php index 2d8b7f742..e60cbf12c 100644 --- a/src/Diamante/EmbeddedFormBundle/Controller/DiamanteEmbeddedFormController.php +++ b/src/Diamante/EmbeddedFormBundle/Controller/DiamanteEmbeddedFormController.php @@ -14,12 +14,20 @@ */ namespace Diamante\EmbeddedFormBundle\Controller; +use Diamante\EmbeddedFormBundle\Form\Extension\EmbeddedFormTypeExtension; +use Diamante\EmbeddedFormBundle\Form\Type\DiamanteEmbeddedFormType; use Diamante\UserBundle\Model\User; +use Doctrine\ORM\EntityManager; +use Oro\Bundle\EmbeddedFormBundle\Event\EmbeddedFormSubmitAfterEvent; +use Oro\Bundle\EmbeddedFormBundle\Event\EmbeddedFormSubmitBeforeEvent; +use Oro\Bundle\EmbeddedFormBundle\Manager\EmbeddedFormManager; +use Oro\Bundle\EmbeddedFormBundle\Manager\EmbedFormLayoutManager; +use Symfony\Component\Form\FormInterface; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; use Oro\Bundle\EmbeddedFormBundle\Entity\EmbeddedForm; @@ -27,10 +35,6 @@ use Diamante\DeskBundle\Model\Ticket\Source; use Diamante\DeskBundle\Model\Ticket\Status; use Diamante\EmbeddedFormBundle\Api\Command\EmbeddedTicketCommand; -use Diamante\EmbeddedFormBundle\Form\Type\DiamanteEmbeddedFormType; - -use Symfony\Component\Form\Form; -use Symfony\Component\Validator\Exception\ValidatorException; class DiamanteEmbeddedFormController extends Controller { @@ -40,29 +44,60 @@ class DiamanteEmbeddedFormController extends Controller * name="diamante_embedded_form_submit", * requirements={"id"="[-\d\w]+"}, * ) + * @param EmbeddedForm $formEntity + * @param Request $request + * @return Response + * @throws \Doctrine\ORM\ORMException + * @throws \Doctrine\ORM\OptimisticLockException */ - public function formAction(EmbeddedForm $formEntity) + public function formAction(EmbeddedForm $formEntity, Request $request) { $response = new Response(); $response->setPublic(); + // $formEntity->setFormType(DiamanteEmbeddedFormType::class); //$response->setEtag($formEntity->getId() . $formEntity->getUpdatedAt()->format(\DateTime::ISO8601)); - if ($response->isNotModified($this->getRequest())) { + if ($response->isNotModified($request)) { return $response; } + $isInline = $request->query->getBoolean('inline'); + $command = new EmbeddedTicketCommand(); + /** @var EntityManager $em */ + $em = $this->get('doctrine.orm.entity_manager'); + /** @var EmbeddedFormManager $formManager */ $formManager = $this->get('oro_embedded_form.manager'); - $form = $formManager->createForm($formEntity->getFormType()); - - if (in_array($this->getRequest()->getMethod(), ['POST', 'PUT'])) { + $type = $formEntity->getFormType(); + $type1 = DiamanteEmbeddedFormType::class; + $form = $formManager->createForm(DiamanteEmbeddedFormType::class, $command); + + if (in_array($request->getMethod(), ['POST', 'PUT'])) { + $data = $request->get('diamante_embedded_form'); + $dataClass = $form->getConfig()->getOption('data_class'); + if (isset($dataClass) && class_exists($dataClass)) { + $ref = new \ReflectionClass($dataClass); + $constructor = $ref->getConstructor(); + $data = $constructor && $constructor->getNumberOfRequiredParameters() + ? $ref->newInstanceWithoutConstructor() + : $ref->newInstance(); + + $form->setData($data); + } else { + $data = []; + } + $event = new EmbeddedFormSubmitBeforeEvent($data, $formEntity); + $eventDispatcher = $this->get('event_dispatcher'); + $eventDispatcher->dispatch(EmbeddedFormSubmitBeforeEvent::EVENT_NAME, $event); + $this->submitPostPutRequest($form, $request); - $data = $this->getRequest()->get('diamante_embedded_form'); + $event = new EmbeddedFormSubmitAfterEvent($data, $formEntity, $form); + $eventDispatcher->dispatch(EmbeddedFormSubmitAfterEvent::EVENT_NAME, $event); //Initialize Reporter $diamanteUserRepository = $this->get('diamante.user.repository'); $diamanteUser = $diamanteUserRepository->findUserByEmail($data['emailAddress']); - if (is_null($diamanteUser)) { + if ($diamanteUser === null) { $diamanteUser = $this->get('diamante.user_factory')->create($data['emailAddress'], $data['firstName'], $data['lastName']); $diamanteUserRepository->store($diamanteUser); } @@ -84,9 +119,10 @@ public function formAction(EmbeddedForm $formEntity) } $command->assignee = $assignee; - $form->handleRequest($this->getRequest()); + $form->handleRequest($request); - if ($form->isValid()) { + if ($form->isSubmitted() && $form->isValid()) { + $entity = $form->getData(); $command->branch = $formEntity->getBranch()->getId(); @@ -116,7 +152,8 @@ public function formAction(EmbeddedForm $formEntity) ); $layoutManager = $this->get('oro_embedded_form.embed_form_layout_manager'); - $layoutContent = $layoutManager->getLayout($formEntity, $form)->render(); + $layout = $layoutManager->getLayout($formEntity, $form); + $layoutContent = $layout->render(); $replaceString = '
      '; @@ -126,6 +163,24 @@ public function formAction(EmbeddedForm $formEntity) return $response; } + /** + * Submits data from post or put Request to a given form. + * + * @param FormInterface $form + * @param Request $request + * @param bool $clearMissing + */ + private function submitPostPutRequest(FormInterface $form, Request $request, bool $clearMissing = true) + { + $requestData = $form->getName() + ? $request->request->get($form->getName(), []) + : $request->request->all(); + + $filesData = $form->getName() + ? $request->files->get($form->getName(), []) + : $request->files->all(); + $form->submit(array_replace_recursive($requestData, $filesData), $clearMissing); + } } \ No newline at end of file diff --git a/src/Diamante/EmbeddedFormBundle/Controller/EmbeddedFormController.php b/src/Diamante/EmbeddedFormBundle/Controller/EmbeddedFormController.php index c030788cd..cbdd35693 100644 --- a/src/Diamante/EmbeddedFormBundle/Controller/EmbeddedFormController.php +++ b/src/Diamante/EmbeddedFormBundle/Controller/EmbeddedFormController.php @@ -18,5 +18,4 @@ class EmbeddedFormController extends BaseController { - } \ No newline at end of file diff --git a/src/Diamante/EmbeddedFormBundle/EventListener/EmbeddedFormListener.php b/src/Diamante/EmbeddedFormBundle/EventListener/EmbeddedFormListener.php index 0efe85d67..de42acc14 100644 --- a/src/Diamante/EmbeddedFormBundle/EventListener/EmbeddedFormListener.php +++ b/src/Diamante/EmbeddedFormBundle/EventListener/EmbeddedFormListener.php @@ -17,6 +17,7 @@ use Symfony\Component\HttpFoundation\Request; use Oro\Bundle\UIBundle\Event\BeforeFormRenderEvent; +use Symfony\Component\HttpFoundation\RequestStack; class EmbeddedFormListener { @@ -24,11 +25,11 @@ class EmbeddedFormListener protected $request; /** - * @param Request|null $request + * @param RequestStack|null $requestStack */ - public function setRequest(Request $request = null) + public function setRequest(RequestStack $requestStack) { - $this->request = $request; + $this->request = $requestStack->getCurrentRequest(); } /** diff --git a/src/Diamante/EmbeddedFormBundle/Form/Extension/EmbeddedFormTypeExtension.php b/src/Diamante/EmbeddedFormBundle/Form/Extension/EmbeddedFormTypeExtension.php index 8c7abd3cd..3f3a0d2b8 100644 --- a/src/Diamante/EmbeddedFormBundle/Form/Extension/EmbeddedFormTypeExtension.php +++ b/src/Diamante/EmbeddedFormBundle/Form/Extension/EmbeddedFormTypeExtension.php @@ -12,24 +12,28 @@ * obtain it through the world-wide-web, please send an email * to license@eltrino.com so we can send you a copy immediately. */ + namespace Diamante\EmbeddedFormBundle\Form\Extension; +use Diamante\EmbeddedFormBundle\Form\Type\DiamanteEmbeddedFormType; +use Oro\Bundle\EmbeddedFormBundle\Form\Type\EmbeddedFormType; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\AbstractTypeExtension; +use Symfony\Component\Form\FormTypeInterface; use Symfony\Component\Validator\Constraints\NotBlank; use Oro\Bundle\FormBundle\Utils\FormUtils; -class EmbeddedFormTypeExtension extends AbstractTypeExtension +class EmbeddedFormTypeExtension extends AbstractTypeExtension implements FormTypeInterface { /** * {@inheritdoc} */ public function getExtendedType() { - return 'embedded_form'; + return EmbeddedFormType::class; } /** @@ -37,14 +41,17 @@ public function getExtendedType() */ public function buildForm(FormBuilderInterface $builder, array $options) { - $modifier = function(FormEvent $event) { + $modifier = function (FormEvent $event) { $form = $event->getForm(); if ($form->has('additional') && $form->get('additional')->has('branch')) { FormUtils::replaceField( $form->get('additional'), 'branch', - ['required' => true, 'constraints' => [new NotBlank()]] + [ + 'required' => true, + 'constraints' => [new NotBlank()], + ] ); } }; @@ -52,4 +59,27 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->addEventListener(FormEvents::PRE_SET_DATA, $modifier); $builder->addEventListener(FormEvents::PRE_SUBMIT, $modifier); } + + /** + * Returns the prefix of the template block name for this type. + * + * The block prefix defaults to the underscored short class name with + * the "Type" suffix removed (e.g. "UserProfileType" => "user_profile"). + * + * @return string The prefix of the template block name + */ + public function getBlockPrefix() + { + return 'embedded_form'; + } + + /** + * Returns the name of the parent type. + * + * @return string|null The name of the parent type if any, null otherwise + */ + public function getParent() + { + return DiamanteEmbeddedFormType::class; + } } diff --git a/src/Diamante/EmbeddedFormBundle/Form/Type/DiamanteEmbeddedFormType.php b/src/Diamante/EmbeddedFormBundle/Form/Type/DiamanteEmbeddedFormType.php index c45a4e6fe..85fc93472 100644 --- a/src/Diamante/EmbeddedFormBundle/Form/Type/DiamanteEmbeddedFormType.php +++ b/src/Diamante/EmbeddedFormBundle/Form/Type/DiamanteEmbeddedFormType.php @@ -14,14 +14,23 @@ */ namespace Diamante\EmbeddedFormBundle\Form\Type; +use Diamante\EmbeddedFormBundle\Api\Command\EmbeddedTicketCommand; +use Oro\Bundle\EmbeddedFormBundle\Form\Type\EmbeddedFormType; +use Oro\Component\Layout\LayoutItemInterface; +use Oro\Component\Layout\LayoutManipulatorInterface; +use Oro\Component\Layout\LayoutUpdateInterface; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\EmailType; +use Symfony\Component\Form\Extension\Core\Type\FileType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\TextareaType; +use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Oro\Bundle\EmbeddedFormBundle\Form\Type\EmbeddedFormInterface; -use Oro\Bundle\EmbeddedFormBundle\Form\Type\CustomLayoutFormInterface; use Diamante\DeskBundle\Form\DataTransformer\AttachmentTransformer; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; class DiamanteEmbeddedFormType extends AbstractType implements EmbeddedFormInterface { @@ -29,10 +38,22 @@ class DiamanteEmbeddedFormType extends AbstractType implements EmbeddedFormInter * {@inheritdoc} */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_embedded_form'; } + // public function configureOptions(OptionsResolver $resolver) + // { + // $resolver->setDefaults([ + // 'data_class' => EmbeddedTicketCommand::class + // ]); + // } + /** * {@inheritdoc} */ @@ -40,25 +61,25 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'firstName', - 'text', + TextType::class, ['required' => true, 'label' => 'First Name'] ); $builder->add( 'lastName', - 'text', + TextType::class, ['required' => true, 'label' => 'Last Name'] ); $builder->add( 'emailAddress', - 'email', + EmailType::class, ['required' => true, 'label' => 'Email'] ); $builder->add( 'subject', - 'text', + TextType::class, array( 'label' => 'diamante.desk.attributes.subject', 'required' => true, @@ -67,7 +88,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'description', - 'textarea', + TextareaType::class, array( 'label' => 'diamante.desk.common.description', 'required' => true, @@ -80,19 +101,17 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( $builder->create( 'attachmentsInput', - 'file', + FileType::class, array( 'label' => 'diamante.desk.attachment.file', 'required' => false, - 'attr' => array( - 'multiple' => 'multiple', - ) + 'multiple' => true ) ) ->addModelTransformer(new AttachmentTransformer()) ); - $builder->add('submit', 'submit'); + $builder->add('submit', SubmitType::class); } /** diff --git a/src/Diamante/EmbeddedFormBundle/Resources/config/services.xml b/src/Diamante/EmbeddedFormBundle/Resources/config/services.xml index 7fabc706a..9f4478fd9 100644 --- a/src/Diamante/EmbeddedFormBundle/Resources/config/services.xml +++ b/src/Diamante/EmbeddedFormBundle/Resources/config/services.xml @@ -28,15 +28,17 @@ - - + + - + + + - + @@ -44,7 +46,7 @@ - + diff --git a/src/Diamante/EmbeddedFormBundle/Twig/BackLinkExtension.php b/src/Diamante/EmbeddedFormBundle/Twig/BackLinkExtension.php index c2cd3b4bf..f55850dd5 100644 --- a/src/Diamante/EmbeddedFormBundle/Twig/BackLinkExtension.php +++ b/src/Diamante/EmbeddedFormBundle/Twig/BackLinkExtension.php @@ -27,6 +27,7 @@ public function getName() return 'diamante_embedded_form_back_link_extension'; } + /** * @return \Twig_SimpleFilter[] */ @@ -47,12 +48,12 @@ public function backLinkFilter($string, $id = null) { $backLinkRegexp = '/{back_link(?:\|([^}]+))?}/'; preg_match($backLinkRegexp, $string, $matches); - list($placeholder, $linkText) = array_pad($matches, 2, ''); + [$placeholder, $linkText] = array_pad($matches, 2, ''); if (!$linkText) { $linkText = 'oro.embeddedform.back_link_default_text'; } - $translatedLinkText = $this->translator->trans($linkText); - $url = $this->router->generate('diamante_embedded_form_submit', ['id' => $id]); + $translatedLinkText = $this->getTranslator()->trans($linkText); + $url = $this->getRouter()->generate('diamante_embedded_form_submit', ['id' => $id]); $link = sprintf('%s', $url, $translatedLinkText); return str_replace($placeholder, $link, $string); diff --git a/src/Diamante/EmbeddedFormBundle/Twig/DynamicFieldsExtension.php b/src/Diamante/EmbeddedFormBundle/Twig/DynamicFieldsExtension.php index 3101e9f04..f4a788bfc 100644 --- a/src/Diamante/EmbeddedFormBundle/Twig/DynamicFieldsExtension.php +++ b/src/Diamante/EmbeddedFormBundle/Twig/DynamicFieldsExtension.php @@ -28,7 +28,7 @@ public function getFields($entity, $entityClass = null) { $dynamicRows = parent::getFields($entity, $entityClass); if (method_exists($entity, 'getFormType')) { - if ($entity->getFormType() != 'diamante_embedded_form.form_type.available_embedded_form') { + if ($entity->getFormType() !== 'diamante_embedded_form.form_type.available_embedded_form') { unset($dynamicRows['branch']); } else { unset($dynamicRows['dataChannel']); diff --git a/src/Diamante/FrontBundle/Command/BuildCommand.php b/src/Diamante/FrontBundle/Command/BuildCommand.php index 8b0509de4..d91beb588 100644 --- a/src/Diamante/FrontBundle/Command/BuildCommand.php +++ b/src/Diamante/FrontBundle/Command/BuildCommand.php @@ -14,7 +14,6 @@ */ namespace Diamante\FrontBundle\Command; -use Diamante\FrontBundle\Utility\DependencyLocator; use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; diff --git a/src/Diamante/FrontBundle/Controller/IndexController.php b/src/Diamante/FrontBundle/Controller/IndexController.php index d6652fb43..12d90baaf 100644 --- a/src/Diamante/FrontBundle/Controller/IndexController.php +++ b/src/Diamante/FrontBundle/Controller/IndexController.php @@ -17,7 +17,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; -use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpFoundation\Request; /** @@ -32,16 +32,17 @@ class IndexController extends Controller * ) * @Template("DiamanteFrontBundle::index.html.twig") * + * @param Request $request * @return array */ - public function indexAction() + public function indexAction(Request $request) { $settings = $this->container->get('diamante.email_processing.mail_system_settings'); return [ - 'apiUrl' => $this->getRequest()->getUriForPath('/api/diamante/rest/latest'), - 'baseUrl' => $this->getRequest()->getBaseUrl() . $this->getRequest()->getPathInfo(), - 'basePath' => $this->getRequest()->getBasePath(), + 'apiUrl' => $request->getUriForPath('/api/diamante/rest/latest'), + 'baseUrl' => $request->getBaseUrl() . $request->getPathInfo(), + 'basePath' => $request->getBasePath(), 'branchId' => $settings->getDefaultBranchId() ]; } diff --git a/src/Diamante/FrontBundle/Controller/UserController.php b/src/Diamante/FrontBundle/Controller/UserController.php index 0939667db..26fce0f2a 100644 --- a/src/Diamante/FrontBundle/Controller/UserController.php +++ b/src/Diamante/FrontBundle/Controller/UserController.php @@ -11,7 +11,6 @@ use FOS\RestBundle\Util\Codes; use FOS\RestBundle\Controller\FOSRestController; use FOS\RestBundle\View\View; -use FOS\RestBundle\Routing\ClassResourceInterface; use Nelmio\ApiDocBundle\Annotation\ApiDoc; @@ -19,6 +18,7 @@ use FOS\RestBundle\Controller\Annotations\RouteResource; use FOS\RestBundle\Controller\Annotations\Post; use FOS\RestBundle\Controller\Annotations\Patch; +use Symfony\Component\HttpFoundation\Request; /** * @RouteResource("User") @@ -35,9 +35,8 @@ class UserController extends FOSRestController * resource=true * ) */ - public function registerAction() + public function registerAction(Request $request) { - $request = $this->get('request_stack')->getCurrentRequest(); $command = new RegisterCommand(); $command->email = $request->get('email'); $command->password = $request->get('password'); @@ -68,11 +67,13 @@ public function registerAction() * description="Confirm new Diamante User registration", * resource=true * ) + * @param Request $request + * @return \Symfony\Component\HttpFoundation\Response */ - public function confirmAction() + public function confirmAction(Request $request) { $command = new ConfirmCommand(); - $command->hash = $this->getRequest()->get('hash'); + $command->hash = $request->get('hash'); $errors = $this->get('validator')->validate($command); @@ -99,10 +100,10 @@ public function confirmAction() * resource=true * ) */ - public function resetAction() + public function resetAction(Request $request) { $command = new ResetPasswordCommand(); - $command->email = $this->getRequest()->get('email'); + $command->email = $request->get('email'); try { $resetService = $this->container->get('diamante.front.reset_password.service'); $resetService->resetPassword($command); @@ -122,12 +123,14 @@ public function resetAction() * description="Update user password", * resource=true * ) + * @param Request $request + * @return \Symfony\Component\HttpFoundation\Response */ - public function passwordAction() + public function passwordAction(Request $request) { $command = new ChangePasswordCommand(); - $command->hash = $this->getRequest()->get('hash'); - $command->password = $this->getRequest()->get('password'); + $command->hash = $request->get('hash'); + $command->password = $request->get('password'); try { $resetService = $this->container->get('diamante.front.reset_password.service'); $resetService->changePassword($command); @@ -146,11 +149,13 @@ public function passwordAction() * description="Send email for user confirmation", * resource=true * ) + * @param Request $request + * @return \Symfony\Component\HttpFoundation\Response */ - public function sendConfirmAction() + public function sendConfirmAction(Request $request) { $command = new SendConfirmCommand(); - $command->email = $this->getRequest()->get('email'); + $command->email = $request->get('email'); try { $this->get('diamante.front.send_confirm.service')->send($command); diff --git a/src/Diamante/FrontBundle/Resources/assets/img/logo_xs_blue.png b/src/Diamante/FrontBundle/Resources/assets/img/logo_xs_blue.png new file mode 100644 index 000000000..d95990cd2 Binary files /dev/null and b/src/Diamante/FrontBundle/Resources/assets/img/logo_xs_blue.png differ diff --git a/src/Diamante/FrontBundle/Resources/config/oro/system_configuration.yml b/src/Diamante/FrontBundle/Resources/config/oro/system_configuration.yml index 1bedda0e2..403b5459c 100644 --- a/src/Diamante/FrontBundle/Resources/config/oro/system_configuration.yml +++ b/src/Diamante/FrontBundle/Resources/config/oro/system_configuration.yml @@ -5,17 +5,17 @@ system_configuration: fields: diamante_front.registration_required: - type: choice + type: Symfony\Component\Form\Extension\Core\Type\ChoiceType data_type: boolean options: label: 'Registration Requied' choices: - - No - - Yes + No: 0 + Yes: 1 diamante_email_processing.mailbox_help: data_type: block - type: diamante_config_channels_help + type: Diamante\EmailProcessingBundle\Form\Type\HelpChannelsConfigurationType tree: system_configuration: diff --git a/src/Diamante/FrontBundle/Resources/public/img/logo_xs_blue.png b/src/Diamante/FrontBundle/Resources/public/img/logo_xs_blue.png new file mode 100644 index 000000000..d95990cd2 Binary files /dev/null and b/src/Diamante/FrontBundle/Resources/public/img/logo_xs_blue.png differ diff --git a/src/Diamante/FrontBundle/Resources/translations/jsmessages.en.yml b/src/Diamante/FrontBundle/Resources/translations/jsmessages.en.yml index 05daff2a3..0d27cd8a3 100644 --- a/src/Diamante/FrontBundle/Resources/translations/jsmessages.en.yml +++ b/src/Diamante/FrontBundle/Resources/translations/jsmessages.en.yml @@ -162,7 +162,7 @@ diamante_front: create_ticket: Ticket %{ticket_created_id} created edit: title: Edit Ticket %{ticket_id} - edit_ticket: Edit Ticket: %{key} - %{subject} + edit_ticket: 'Edit Ticket: %{key} - %{subject}' search_result: Search Result model: diff --git a/src/Diamante/FrontBundle/package-lock.json b/src/Diamante/FrontBundle/package-lock.json new file mode 100644 index 000000000..f6de1b5cc --- /dev/null +++ b/src/Diamante/FrontBundle/package-lock.json @@ -0,0 +1,2053 @@ +{ + "name": "diamante-desk-front", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "optional": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + } + } + }, + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "optional": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "optional": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "body": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", + "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=", + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "optional": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "requires": { + "pako": "~0.2.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "clean-css": { + "version": "3.4.28", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", + "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", + "requires": { + "commander": "2.8.x", + "source-map": "0.4.x" + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "optional": true + }, + "coffeescript": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz", + "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "^0.1.4" + } + }, + "continuable-cache": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", + "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true, + "requires": { + "boom": "2.x.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "date-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz", + "integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=", + "requires": { + "time-zone": "^0.1.0" + } + }, + "dateformat": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", + "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.3.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "optional": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", + "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", + "requires": { + "string-template": "~0.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=" + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "optional": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "optional": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", + "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", + "requires": { + "glob": "~5.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "requires": { + "globule": "^1.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "getobject": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", + "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", + "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==", + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "grunt": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz", + "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==", + "requires": { + "coffeescript": "~1.10.0", + "dateformat": "~1.0.12", + "eventemitter2": "~0.4.13", + "exit": "~0.1.1", + "findup-sync": "~0.3.0", + "glob": "~7.0.0", + "grunt-cli": "~1.2.0", + "grunt-known-options": "~1.1.0", + "grunt-legacy-log": "~2.0.0", + "grunt-legacy-util": "~1.1.1", + "iconv-lite": "~0.4.13", + "js-yaml": "~3.13.0", + "minimatch": "~3.0.2", + "mkdirp": "~0.5.1", + "nopt": "~3.0.6", + "path-is-absolute": "~1.0.0", + "rimraf": "~2.6.2" + }, + "dependencies": { + "grunt-cli": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz", + "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=", + "requires": { + "findup-sync": "~0.3.0", + "grunt-known-options": "~1.1.0", + "nopt": "~3.0.6", + "resolve": "~1.1.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "grunt-contrib-cssmin": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-1.0.2.tgz", + "integrity": "sha1-FzTL09hMpzZHWLflj/GOUqpgu3Y=", + "requires": { + "chalk": "^1.0.0", + "clean-css": "~3.4.2", + "maxmin": "^1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "grunt-contrib-jshint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz", + "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=", + "requires": { + "chalk": "^1.1.1", + "hooker": "^0.2.3", + "jshint": "~2.9.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "grunt-contrib-less": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.4.1.tgz", + "integrity": "sha1-O73sC3XRLOqlXWKUNiXAsIYc328=", + "requires": { + "async": "^2.0.0", + "chalk": "^1.0.0", + "less": "~2.7.1", + "lodash": "^4.8.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "grunt-contrib-requirejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-requirejs/-/grunt-contrib-requirejs-1.0.0.tgz", + "integrity": "sha1-7BZwyvwycTkC7lNWlFRxWy48utU=", + "requires": { + "requirejs": "^2.1.0" + } + }, + "grunt-contrib-watch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz", + "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==", + "requires": { + "async": "^2.6.0", + "gaze": "^1.1.0", + "lodash": "^4.17.10", + "tiny-lr": "^1.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "grunt-known-options": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", + "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==" + }, + "grunt-legacy-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz", + "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==", + "requires": { + "colors": "~1.1.2", + "grunt-legacy-log-utils": "~2.0.0", + "hooker": "~0.2.3", + "lodash": "~4.17.5" + } + }, + "grunt-legacy-log-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz", + "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==", + "requires": { + "chalk": "~2.4.1", + "lodash": "~4.17.10" + } + }, + "grunt-legacy-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz", + "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==", + "requires": { + "async": "~1.5.2", + "exit": "~0.1.1", + "getobject": "~0.1.0", + "hooker": "~0.2.3", + "lodash": "~4.17.10", + "underscore.string": "~3.3.4", + "which": "~1.3.0" + } + }, + "grunt-sync": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/grunt-sync/-/grunt-sync-0.5.2.tgz", + "integrity": "sha1-YWLEj0LhualvX5MEM+HzqIDYpuw=", + "requires": { + "glob": "^4.0.5", + "lodash": "^3.10.1", + "md5-file": "^2.0.3", + "promised-io": "0.3.3" + }, + "dependencies": { + "glob": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", + "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^2.0.1", + "once": "^1.3.0" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "^1.0.0" + } + } + } + }, + "gzip-size": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz", + "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=", + "requires": { + "browserify-zlib": "^0.1.4", + "concat-stream": "^1.4.1" + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "optional": true, + "requires": { + "ajv": "^4.9.1", + "har-schema": "^1.0.5" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true, + "requires": { + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "optional": true + }, + "hooker": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", + "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=" + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true, + "requires": { + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "jshint": { + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.7.tgz", + "integrity": "sha512-Q8XN38hGsVQhdlM+4gd1Xl7OB1VieSuCJf+fEJjpo59JH99bVJhXRXAh26qQ15wfdd1VPMuDWNeSWoNl53T4YA==", + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "~4.17.10", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + } + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "optional": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "less": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz", + "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==", + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.2.11", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "2.81.0", + "source-map": "^0.5.3" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "optional": true + } + } + }, + "livereload-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", + "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==" + }, + "load-grunt-tasks": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz", + "integrity": "sha1-ByhWEYD9IP+KaSdQWFL8WKrqDIg=", + "requires": { + "arrify": "^1.0.0", + "multimatch": "^2.0.0", + "pkg-up": "^1.0.0", + "resolve-pkg": "^0.1.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "maxmin": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz", + "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=", + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^1.0.0", + "pretty-bytes": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "md5-file": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-2.0.7.tgz", + "integrity": "sha1-MH94vQTMsFTkZ+xmHPpamv3J8hA=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "optional": true + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "optional": true + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "optional": true, + "requires": { + "mime-db": "1.42.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multimatch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", + "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", + "requires": { + "array-differ": "^1.0.0", + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "minimatch": "^3.0.0" + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "optional": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "requires": { + "find-up": "^1.0.0" + } + }, + "plur": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", + "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=" + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "pretty-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", + "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", + "requires": { + "is-finite": "^1.0.1", + "parse-ms": "^1.0.0", + "plur": "^1.0.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promised-io": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.3.tgz", + "integrity": "sha1-DqVWIYD/mJaW82r1tGIITKQWYEg=" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "raw-body": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", + "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=", + "requires": { + "bytes": "1", + "string_decoder": "0.10" + }, + "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "optional": true, + "requires": { + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" + } + }, + "requirejs": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==" + }, + "resolve": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", + "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "resolve-pkg": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz", + "integrity": "sha1-AsyZNBDik2livZcWahsHfalyVTE=", + "requires": { + "resolve-from": "^2.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-json-parse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", + "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true, + "requires": { + "hoek": "2.x.x" + } + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string-template": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "stringstream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "time-grunt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz", + "integrity": "sha1-BiIT5mDJB+hvRAVWwB6mWXtxJCA=", + "requires": { + "chalk": "^1.0.0", + "date-time": "^1.1.0", + "figures": "^1.0.0", + "hooker": "^0.2.3", + "number-is-nan": "^1.0.0", + "pretty-ms": "^2.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "time-zone": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz", + "integrity": "sha1-Sncotqwo2w4Aj1FAQ/1VW9VXO0Y=" + }, + "tiny-lr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", + "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "underscore.string": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", + "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", + "requires": { + "sprintf-js": "^1.0.3", + "util-deprecate": "^1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/src/Diamante/UserBundle/Api/Internal/UserStateServiceImpl.php b/src/Diamante/UserBundle/Api/Internal/UserStateServiceImpl.php index 47ae98c11..aa2fb04c4 100644 --- a/src/Diamante/UserBundle/Api/Internal/UserStateServiceImpl.php +++ b/src/Diamante/UserBundle/Api/Internal/UserStateServiceImpl.php @@ -15,24 +15,24 @@ namespace Diamante\UserBundle\Api\Internal; use Diamante\UserBundle\Api\UserStateService; -use Symfony\Component\Security\Core\SecurityContextInterface; +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Oro\Bundle\UserBundle\Entity\User; class UserStateServiceImpl implements UserStateService { /** - * @var SecurityContextInterface + * @var TokenStorageInterface */ - private $securityContext; + private $tokenStorage; - public function __construct(SecurityContextInterface $securityContext) + public function __construct(TokenStorageInterface $tokenStorage) { - $this->securityContext = $securityContext; + $this->tokenStorage = $tokenStorage; } public function isOroUser() { - $token = $this->securityContext->getToken(); + $token = $this->tokenStorage->getToken(); if (!$token) { return false; @@ -40,4 +40,4 @@ public function isOroUser() return $token->getUser() instanceof User; } -} \ No newline at end of file +} diff --git a/src/Diamante/UserBundle/Controller/UserController.php b/src/Diamante/UserBundle/Controller/UserController.php index 880aa9339..6279ec057 100644 --- a/src/Diamante/UserBundle/Controller/UserController.php +++ b/src/Diamante/UserBundle/Controller/UserController.php @@ -7,6 +7,8 @@ use Diamante\UserBundle\Api\Command\UpdateDiamanteUserCommand; use Diamante\UserBundle\Entity\DiamanteUser; use Diamante\UserBundle\Exception\UserRemovalException; +use Diamante\UserBundle\Form\Type\CreateDiamanteUserType; +use Diamante\UserBundle\Form\Type\UpdateDiamanteUserType; use Diamante\UserBundle\Model\User; use JMS\AopBundle\Exception\RuntimeException; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; @@ -14,6 +16,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\Form\Form; use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Exception\MethodNotAllowedException; @@ -23,6 +26,7 @@ class UserController extends Controller use Shared\ExceptionHandlerTrait; use Shared\SessionFlashMessengerTrait; use Shared\ResponseHandlerTrait; + use Shared\RequestGetterTrait; /** * @Route("/", name="diamante_user_list") @@ -54,12 +58,12 @@ public function viewAction($id) * @Route("/create", name="diamante_user_create") * @Template() */ - public function createAction() + public function createAction(Request $request) { $command = new CreateDiamanteUserCommand(); try { - $form = $this->createForm('diamante_user_create', $command); - $result = $this->edit($command, $form, function($command) { + $form = $this->createForm(CreateDiamanteUserType::class, $command); + $result = $this->edit($request, $command, $form, function($command) { $userId = $this->get('diamante.user.service')->createDiamanteUser($command); return $userId; }); @@ -83,7 +87,7 @@ public function createAction() * * @return array|null|\Symfony\Component\HttpFoundation\RedirectResponse */ - public function updateAction($id) + public function updateAction(Request $request, $id) { $command = new UpdateDiamanteUserCommand(); /** @var DiamanteUser $user */ @@ -98,8 +102,8 @@ public function updateAction($id) $command->firstName = $user->getFirstName(); try { - $form = $this->createForm('diamante_user_update', $command); - $result = $this->edit($command, $form, function($command) { + $form = $this->createForm(UpdateDiamanteUserType::class, $command); + $result = $this->edit($request, $command, $form, function($command) { $userId = $this->get('diamante.user.service')->updateDiamanteUser($command); return $userId; }); @@ -118,10 +122,10 @@ public function updateAction($id) * * @return Response */ - public function deleteAction($id) + public function deleteAction(Request $request, $id) { try { - if (!in_array($this->get('request')->getMethod(), ['POST', 'PUT', 'DELETE'])) { + if (!in_array($request->getMethod(), ['POST', 'PUT', 'DELETE'])) { throw new MethodNotAllowedException("This won't work"); } @@ -130,7 +134,7 @@ public function deleteAction($id) $this->get('diamante.user.service') ->removeDiamanteUser($id); return new Response(null, 204, array( - 'Content-Type' => $this->getRequest()->getMimeType('json') + 'Content-Type' => $request->getMimeType('json') )); } catch (\Exception $e) { $this->handleException($e); @@ -144,12 +148,12 @@ public function deleteAction($id) * @param \Closure $callback * @return array|null|\Symfony\Component\HttpFoundation\RedirectResponse */ - protected function edit($command, Form $form, $callback) + protected function edit(Request $request, $command, Form $form, $callback) { $response = null; try { - $this->handle($form); + $this->handle($request, $form); $userId = $callback($command); if (isset($command->id) && ($command->id !== null)) { @@ -173,9 +177,9 @@ protected function edit($command, Form $form, $callback) /** * @Route("/delete/massaction", name="diamante_user_delete_massaction", options={"expose"=true}) */ - public function massRemoveAction() + public function massRemoveAction(Request $request) { - $params = $this->parseGridParameters(); + $params = $this->parseGridParameters($request); $repository = $this->get('diamante.user.repository'); $users = $repository->findByDataGridParams($params); @@ -203,14 +207,14 @@ public function massRemoveAction() * * @return Response */ - public function resetPasswordAction($id) + public function resetPasswordAction(Request $request, $id) { $user = new User($id, User::TYPE_DIAMANTE); try { $this->get('diamante.user.service')->resetPassword($user); return new Response(null, 204, array( - 'Content-Type' => $this->getRequest()->getMimeType('json') + 'Content-Type' => $request->getMimeType('json') )); } catch (\Exception $e) { $this->handleException($e); @@ -221,9 +225,9 @@ public function resetPasswordAction($id) /** * @Route("/reset/massaction", name="diamante_user_reset_pwd_massaction", options={"expose" = true}) */ - public function massResetPasswordAction() + public function massResetPasswordAction(Request $request) { - $users = $this->get('request')->get('values'); + $users = $request->get('values'); if (!is_array($users)) { $users = explode(',', $users); @@ -266,9 +270,9 @@ protected function ensureUserHasNoRelatedEntities($userId) /** * @return array */ - protected function parseGridParameters() + protected function parseGridParameters(Request $request) { $parametersParser = $this->container->get('oro_datagrid.mass_action.parameters_parser'); - return $parametersParser->parse($this->get('request')); + return $parametersParser->parse($request); } } diff --git a/src/Diamante/UserBundle/Form/Type/CreateDiamanteUserType.php b/src/Diamante/UserBundle/Form/Type/CreateDiamanteUserType.php index a844ac62f..f9ce22dea 100644 --- a/src/Diamante/UserBundle/Form/Type/CreateDiamanteUserType.php +++ b/src/Diamante/UserBundle/Form/Type/CreateDiamanteUserType.php @@ -16,8 +16,11 @@ namespace Diamante\UserBundle\Form\Type; use Symfony\Component\Form\AbstractType; +use Symfony\Component\Form\Extension\Core\Type\EmailType; +use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\UserBundle\Api\Command\CreateDiamanteUserCommand; class CreateDiamanteUserType extends AbstractType { @@ -28,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add( 'email', - 'email', + EmailType::class, [ 'label' => 'diamante.user.labels.email', 'required' => true @@ -37,7 +40,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'firstName', - 'text', + TextType::class, [ 'label' => 'diamante.user.labels.first_name', 'required' => true @@ -46,7 +49,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add( 'lastName', - 'text', + TextType::class, [ 'label' => 'diamante.user.labels.last_name', 'required' => true @@ -57,11 +60,11 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * @inheritDoc */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( [ - 'data_class' => 'Diamante\UserBundle\Api\Command\CreateDiamanteUserCommand', + 'data_class' => CreateDiamanteUserCommand::class, 'intention' => 'diamante_user', 'cascade_validation' => true, ] @@ -74,6 +77,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) * @return string The name of this type */ public function getName() + { + return $this->getBlockPrefix(); + } + + public function getBlockPrefix() { return 'diamante_user_create'; } diff --git a/src/Diamante/UserBundle/Form/Type/UpdateDiamanteUserType.php b/src/Diamante/UserBundle/Form/Type/UpdateDiamanteUserType.php index fb4622cb3..0df753994 100644 --- a/src/Diamante/UserBundle/Form/Type/UpdateDiamanteUserType.php +++ b/src/Diamante/UserBundle/Form/Type/UpdateDiamanteUserType.php @@ -15,18 +15,19 @@ namespace Diamante\UserBundle\Form\Type; -use Symfony\Component\OptionsResolver\OptionsResolverInterface; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Diamante\UserBundle\Api\Command\UpdateDiamanteUserCommand; class UpdateDiamanteUserType extends CreateDiamanteUserType { /** * @inheritDoc */ - public function setDefaultOptions(OptionsResolverInterface $resolver) + public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults( [ - 'data_class' => 'Diamante\UserBundle\Api\Command\UpdateDiamanteUserCommand', + 'data_class' => UpdateDiamanteUserCommand::class, 'intention' => 'diamante_user', 'cascade_validation' => true, ] @@ -38,7 +39,11 @@ public function setDefaultOptions(OptionsResolverInterface $resolver) */ public function getName() { - return 'diamante_user_update'; + return $this->getBlockPrefix(); } + public function getBlockPrefix() + { + return 'diamante_user_update'; + } } \ No newline at end of file diff --git a/src/Diamante/UserBundle/Infrastructure/User/AutocompleteUserServiceImpl.php b/src/Diamante/UserBundle/Infrastructure/User/AutocompleteUserServiceImpl.php index cbdd7e03c..2308fada0 100644 --- a/src/Diamante/UserBundle/Infrastructure/User/AutocompleteUserServiceImpl.php +++ b/src/Diamante/UserBundle/Infrastructure/User/AutocompleteUserServiceImpl.php @@ -140,7 +140,7 @@ protected function getOroUsers() { $convertedUsers = []; - $oroUsers = $this->oroUserManager->findUsers(); + $oroUsers = $this->oroUserManager->getRepository()->findAll(); if (!empty($oroUsers)) { $convertedUsers = $this->convertUsers($oroUsers, User::TYPE_ORO); diff --git a/src/Diamante/UserBundle/Model/UserDetails.php b/src/Diamante/UserBundle/Model/UserDetails.php index 56bc14f37..8c03deb86 100755 --- a/src/Diamante/UserBundle/Model/UserDetails.php +++ b/src/Diamante/UserBundle/Model/UserDetails.php @@ -21,32 +21,32 @@ class UserDetails /** * @var string */ - protected $id; + private $id; /** * @var string */ - protected $type; + private $type; /** * @var string */ - protected $email; + private $email; /** * @var string */ - protected $firstName; + private $firstName; /** * @var string */ - protected $lastName; + private $lastName; /** * @var null|string */ - protected $avatar; + private $avatar; public function __construct($id, $type, $email, $firstName, $lastName, $avatar = null) diff --git a/src/Diamante/UserBundle/Resources/config/forms.xml b/src/Diamante/UserBundle/Resources/config/forms.xml index 9a65ae4d2..c4664ddb4 100644 --- a/src/Diamante/UserBundle/Resources/config/forms.xml +++ b/src/Diamante/UserBundle/Resources/config/forms.xml @@ -11,10 +11,10 @@ - + - + \ No newline at end of file diff --git a/src/Diamante/UserBundle/Resources/config/mass_actions.xml b/src/Diamante/UserBundle/Resources/config/mass_actions.xml index 5eb8e0928..6822041a5 100644 --- a/src/Diamante/UserBundle/Resources/config/mass_actions.xml +++ b/src/Diamante/UserBundle/Resources/config/mass_actions.xml @@ -15,9 +15,9 @@ - + - \ No newline at end of file + diff --git a/src/Diamante/UserBundle/Resources/config/oro/datagrids.yml b/src/Diamante/UserBundle/Resources/config/oro/datagrids.yml index 4318440a7..2568a8721 100644 --- a/src/Diamante/UserBundle/Resources/config/oro/datagrids.yml +++ b/src/Diamante/UserBundle/Resources/config/oro/datagrids.yml @@ -13,7 +13,7 @@ datagrids: left: - { join: u.apiUser, alias: a } from: - - { table: %diamante.user.entity.class%, alias: u } + - { table: '%diamante.user.entity.class%', alias: u } where: and: - u.isDeleted = false diff --git a/src/Diamante/UserBundle/Resources/config/services.xml b/src/Diamante/UserBundle/Resources/config/services.xml index 3da4326f9..4147b6f16 100644 --- a/src/Diamante/UserBundle/Resources/config/services.xml +++ b/src/Diamante/UserBundle/Resources/config/services.xml @@ -28,9 +28,8 @@ - + + %diamante.user.entity.class% @@ -73,7 +72,7 @@ - Diamante\UserBundle\Model\User\UserDetails + Diamante\UserBundle\Model\UserDetails @@ -100,9 +99,8 @@ - + + %diamante.api.user.entity.class% @@ -111,7 +109,7 @@ - + getEnvironment()) { + $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); + $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); + if (class_exists('Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle')) { + $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); + } + } + + return $bundles; + } + + /** + * {@inheritdoc} + */ + public function getRootDir() + { + return __DIR__; + } + + /** + * {@inheritdoc} + */ + public function getCacheDir() + { + return dirname(__DIR__).'/var/cache/dist/' . $this->environment; + } + + /** + * {@inheritdoc} + * + * @api + */ + public function getLogDir() + { + return dirname(__DIR__).'/var/logs/dist'; + } + + + /** + * {@inheritdoc} + */ + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load(__DIR__.'/../config/dist/config_' . $this->getEnvironment().'.yml'); + } +} diff --git a/app/Resources/views/Default/index.html.twig b/templates/Default/index.html.twig similarity index 96% rename from app/Resources/views/Default/index.html.twig rename to templates/Default/index.html.twig index b6c5c148c..84c7b7404 100644 --- a/app/Resources/views/Default/index.html.twig +++ b/templates/Default/index.html.twig @@ -1,8 +1,8 @@ -{% extends "::base.html.twig" %} - -{% block content %} -
      -

      {{ 'Welcome to The Oro Platform!'|trans }}

      - We can't wait to see what you will create with our Platform... -
      -{% endblock content %} +{% extends "::base.html.twig" %} + +{% block content %} +
      +

      {{ 'Welcome to The Oro Platform!'|trans }}

      + We can't wait to see what you will create with our Platform... +
      +{% endblock content %} diff --git a/app/Resources/views/Default/oneColumn.html.twig b/templates/Default/oneColumn.html.twig similarity index 100% rename from app/Resources/views/Default/oneColumn.html.twig rename to templates/Default/oneColumn.html.twig diff --git a/app/Resources/views/Default/threeColumn.html.twig b/templates/Default/threeColumn.html.twig similarity index 100% rename from app/Resources/views/Default/threeColumn.html.twig rename to templates/Default/threeColumn.html.twig diff --git a/app/Resources/views/Default/twoColumnLeft.html.twig b/templates/Default/twoColumnLeft.html.twig similarity index 100% rename from app/Resources/views/Default/twoColumnLeft.html.twig rename to templates/Default/twoColumnLeft.html.twig diff --git a/app/Resources/views/Default/twoColumnRight.html.twig b/templates/Default/twoColumnRight.html.twig similarity index 100% rename from app/Resources/views/Default/twoColumnRight.html.twig rename to templates/Default/twoColumnRight.html.twig diff --git a/app/Resources/views/base.html.twig b/templates/base.html.twig similarity index 100% rename from app/Resources/views/base.html.twig rename to templates/base.html.twig diff --git a/templates/bundles/TwigBundle/Exception/error.html.twig b/templates/bundles/TwigBundle/Exception/error.html.twig new file mode 100644 index 000000000..9e03c34a0 --- /dev/null +++ b/templates/bundles/TwigBundle/Exception/error.html.twig @@ -0,0 +1,42 @@ +{% extends 'OroUIBundle:Default:error.html.twig' %} +{% block head %} + + {{ parent() }} +{% endblock %} +{% block content %} +
      +
      +
      + {% if oro_theme_logo() %} + + logo + + {% endif %} +

      {{ status_code }}. {{ status_text }}

      +

      + {% if status_code == 404 %} + {{ 'The page you requested could not be found. Please make sure the path you used is correct.'|trans }} + {% elseif status_code == 403 %} + {{ "You don't have permission to access this page."|trans }} + {% else %} + {{ 'The System is currently under maintenance and should be available in a few minutes.'|trans }} + {% endif %} +

      + {% if status_code == 404 or status_code == 403 %} + + {% endif %} +
      +
      +
      +

      © {{ 'now'|date('Y') }} {{ 'Oro Inc. All Rights Reserved.'|trans }}

      +
      +
      + +{% endblock %} \ No newline at end of file diff --git a/app/Resources/TwigBundle/views/Exception/exception_full.html.twig b/templates/bundles/TwigBundle/Exception/exception_full.html.twig similarity index 100% rename from app/Resources/TwigBundle/views/Exception/exception_full.html.twig rename to templates/bundles/TwigBundle/Exception/exception_full.html.twig diff --git a/web/media/.gitkeep b/translations/.gitignore similarity index 100% rename from web/media/.gitkeep rename to translations/.gitignore diff --git a/app/Resources/translations/install.en.yml b/translations/install.en.yml similarity index 100% rename from app/Resources/translations/install.en.yml rename to translations/install.en.yml diff --git a/app/DiamanteDeskRequirements.php b/var/DiamanteDeskRequirements.php similarity index 93% rename from app/DiamanteDeskRequirements.php rename to var/DiamanteDeskRequirements.php index 45bba32e5..72235a9a8 100755 --- a/app/DiamanteDeskRequirements.php +++ b/var/DiamanteDeskRequirements.php @@ -18,9 +18,9 @@ public function __construct() $baseDir = realpath(__DIR__ . '/..'); $this->addDiamanteDeskRequirement( - is_writable($baseDir . '/app/attachments'), - 'app/attachments/ directory must be writable', - 'Change the permissions of the "app/attachments/" directory so that the web server can write into it.' + is_writable($baseDir . '/var/attachments'), + 'var/attachments/ directory must be writable', + 'Change the permissions of the "var/attachments/" directory so that the web server can write into it.' ); } diff --git a/app/OroRequirements.php b/var/OroRequirements.php similarity index 57% rename from app/OroRequirements.php rename to var/OroRequirements.php index e1d66a5e4..24e893d11 100644 --- a/app/OroRequirements.php +++ b/var/OroRequirements.php @@ -1,30 +1,51 @@ =6.6'; - const EXCLUDE_REQUIREMENTS_MASK = '/5\.[0-5]\./'; + const EXCLUDE_REQUIREMENTS_MASK = '/5\.[0-6]|7\.0/'; - public function __construct() + /** + * @param string $env + */ + public function __construct($env = 'prod') { + $phpVersion = phpversion(); + + /** + * We should hide the deprecation varnings for php >= 7.2 because SymfonyRequirements class uses + * 'create_function' function that was deprecated in php 7.2. + * + * @see http://php.net/manual/en/migration72.deprecated.php#migration72.deprecated.create_function-function + * @see https://github.com/sensiolabs/SensioDistributionBundle/pull/336 + */ + if (version_compare($phpVersion, '7.2', '>=')) { + $oldLevel = error_reporting(E_ALL & ~E_DEPRECATED); + } + parent::__construct(); - $phpVersion = phpversion(); + // restore the previous report level in casse of php > 7.2. + if (version_compare($phpVersion, '7.2', '>=')) { + error_reporting($oldLevel); + } + $gdVersion = defined('GD_VERSION') ? GD_VERSION : null; $curlVersion = function_exists('curl_version') ? curl_version() : null; $icuVersion = Intl::getIcuVersion(); @@ -54,21 +75,52 @@ public function __construct() ); $this->addOroRequirement( - function_exists('mcrypt_encrypt'), - 'mcrypt_encrypt() should be available', - 'Install and enable the Mcrypt extension.' + function_exists('openssl_encrypt'), + 'openssl_encrypt() should be available', + 'Install and enable the openssl extension.' ); + if (function_exists('iconv')) { + $this->addOroRequirement( + false !== @iconv('utf-8', 'ascii//TRANSLIT', 'check string'), + 'iconv() must not return the false result on converting string "check string"', + 'Check the configuration of the iconv extension, ' + . 'as it may have been configured incorrectly' + . ' (iconv(\'utf-8\', \'ascii//TRANSLIT\', \'check string\') must not return false).' + ); + } + $this->addOroRequirement( class_exists('Locale'), 'intl extension should be available', 'Install and enable the intl extension.' ); - $this->addOroRequirement( - null !== $icuVersion && version_compare($icuVersion, self::REQUIRED_ICU_VERSION, '>='), - 'icu library must be at least ' . self::REQUIRED_ICU_VERSION, - 'Install and enable the icu library at least ' . self::REQUIRED_ICU_VERSION . ' version' + $localeCurrencies = [ + 'de_DE' => 'EUR', + 'en_CA' => 'CAD', + 'en_GB' => 'GBP', + 'en_US' => 'USD', + 'fr_FR' => 'EUR', + 'uk_UA' => 'UAH', + ]; + + foreach ($localeCurrencies as $locale => $currencyCode) { + $numberFormatter = new \NumberFormatter($locale, \NumberFormatter::CURRENCY); + + if ($currencyCode === $numberFormatter->getTextAttribute(\NumberFormatter::CURRENCY_CODE)) { + unset($localeCurrencies[$locale]); + } + } + + $this->addRecommendation( + empty($localeCurrencies), + sprintf('Current version %s of the ICU library should meet the requirements', $icuVersion), + sprintf( + 'There may be a problem with currency formatting in ICU %s, ' . + 'please upgrade your ICU library.', + $icuVersion + ) ); $this->addOroRequirement( @@ -89,6 +141,18 @@ class_exists('SoapClient'), 'Install and enable the Tidy extension.' ); + $this->addRecommendation( + !extension_loaded('phar'), + 'Phar extension is disabled', + 'Disable Phar extension to reduce the risk of PHP unserialization vulnerability.' + ); + + $this->addRecommendation( + extension_loaded('imap'), + 'IMAP extension should be installed for valid email processing on IMAP sync.', + 'Install and enable the IMAP extension.' + ); + $tmpDir = sys_get_temp_dir(); $this->addRequirement( is_writable($tmpDir), @@ -123,27 +187,12 @@ class_exists('COM'), $this->checkFileNameLength(), 'Maximum supported filename length must be greater or equal 242 characters.' . ' Make sure that the cache folder is not inside the encrypted directory.', - 'Move app/cache folder outside encrypted directory.', + 'Move var/cache folder outside encrypted directory.', 'Maximum supported filename length must be greater or equal 242 characters.' . - ' Move app/cache folder outside encrypted directory.' + ' Move var/cache folder outside encrypted directory.' ); } - // Web installer specific checks - if ('cli' !== PHP_SAPI) { - $output = $this->checkCliRequirements(); - - $requirement = new CliRequirement( - !$output, - 'Requirements validation for PHP CLI', - 'If you have multiple PHP versions installed, you need to configure ORO_PHP_PATH variable with PHP binary path used by web server' - ); - - $requirement->setOutput($output); - - $this->add($requirement); - } - $baseDir = realpath(__DIR__ . '/..'); $mem = $this->getBytes(ini_get('memory_limit')); @@ -157,62 +206,85 @@ function ($cfgValue) use ($mem) { 'Set the "memory_limit" setting in php.ini* to at least "512M".' ); - $jsEngine = RequireJSConfiguration::getDefaultJsEngine(); + $nodeJsExecutableFinder = new NodeJsExecutableFinder(); + $nodeJsExecutable = $nodeJsExecutableFinder->findNodeJs(); + $nodeJsExists = null !== $nodeJsExecutable; + $this->addOroRequirement( + $nodeJsExists, + $nodeJsExists ? 'NodeJS is installed' : 'NodeJS must be installed', + 'Install NodeJS.' + ); - $this->addRecommendation( - $jsEngine ? true : false, - $jsEngine ? "A JS Engine ($jsEngine) is installed" : 'JSEngine such as NodeJS should be installed', - 'Install JSEngine.' + $this->addOroRequirement( + NodeJsVersionChecker::satisfies($nodeJsExecutable, self::REQUIRED_NODEJS_VERSION), + sprintf('NodeJS "%s" version must be installed.', self::REQUIRED_NODEJS_VERSION), + sprintf('Upgrade NodeJS to "%s" version.', self::REQUIRED_NODEJS_VERSION) ); + $npmExists = null !== $nodeJsExecutableFinder->findNpm(); $this->addOroRequirement( - is_writable($baseDir . '/web/uploads'), - 'web/uploads/ directory must be writable', - 'Change the permissions of the "web/uploads/" directory so that the web server can write into it.' + $npmExists, + $npmExists ? 'NPM is installed' : 'NPM must be installed', + 'Install NPM.' + ); + + $this->addOroRequirement( + is_writable($baseDir . '/public/uploads'), + 'public/uploads/ directory must be writable', + 'Change the permissions of the "public/uploads/" directory so that the web server can write into it.' ); $this->addOroRequirement( - is_writable($baseDir . '/web/media'), - 'web/media/ directory must be writable', - 'Change the permissions of the "web/media/" directory so that the web server can write into it.' + is_writable($baseDir . '/public/media'), + 'public/media/ directory must be writable', + 'Change the permissions of the "public/media/" directory so that the web server can write into it.' ); $this->addOroRequirement( - is_writable($baseDir . '/web/bundles'), - 'web/bundles/ directory must be writable', - 'Change the permissions of the "web/bundles/" directory so that the web server can write into it.' + is_writable($baseDir . '/public/bundles'), + 'public/bundles/ directory must be writable', + 'Change the permissions of the "public/bundles/" directory so that the web server can write into it.' + ); + $this->addOroRequirement( + is_writable($baseDir . '/var/attachment'), + 'var/attachment/ directory must be writable', + 'Change the permissions of the "var/attachment/" directory so that the web server can write into it.' + ); + $this->addOroRequirement( + is_writable($baseDir . '/var/import_export'), + 'var/import_export/ directory must be writable', + 'Change the permissions of the "var/import_export/" directory so that the web server can write into it.' ); - if (is_dir($baseDir . '/web/js')) { + if (is_dir($baseDir . '/public/js')) { $this->addOroRequirement( - is_writable($baseDir . '/web/js'), - 'web/js directory must be writable', - 'Change the permissions of the "web/js" directory so that the web server can write into it.' + is_writable($baseDir . '/public/js'), + 'public/js directory must be writable', + 'Change the permissions of the "public/js" directory so that the web server can write into it.' ); } - if (is_dir($baseDir . '/web/css')) { + if (is_dir($baseDir . '/public/css')) { $this->addOroRequirement( - is_writable($baseDir . '/web/css'), - 'web/css directory must be writable', - 'Change the permissions of the "web/css" directory so that the web server can write into it.' + is_writable($baseDir . '/public/css'), + 'public/css directory must be writable', + 'Change the permissions of the "public/css" directory so that the web server can write into it.' ); } - if (!is_dir($baseDir . '/web/css') || !is_dir($baseDir . '/web/js')) { + if (!is_dir($baseDir . '/public/css') || !is_dir($baseDir . '/public/js')) { $this->addOroRequirement( - is_writable($baseDir . '/web'), - 'web directory must be writable', - 'Change the permissions of the "web" directory so that the web server can write into it.' + is_writable($baseDir . '/public'), + 'public directory must be writable', + 'Change the permissions of the "public" directory so that the web server can write into it.' ); } - if (is_file($baseDir . '/app/config/parameters.yml')) { + if (is_file($baseDir . '/config/parameters.yml')) { $this->addOroRequirement( - is_writable($baseDir . '/app/config/parameters.yml'), - 'app/config/parameters.yml file must be writable', - 'Change the permissions of the "app/config/parameters.yml" file so that the web server can write into it.' + is_writable($baseDir . '/config/parameters.yml'), + 'config/parameters.yml file must be writable', + 'Change the permissions of the "config/parameters.yml" file so that the web server can write into it.' ); } - } /** @@ -239,8 +311,7 @@ public function getMandatoryRequirements() $this->getRequirements(), function ($requirement) { return !($requirement instanceof PhpIniRequirement) - && !($requirement instanceof OroRequirement) - && !($requirement instanceof CliRequirement); + && !($requirement instanceof OroRequirement); } ); } @@ -275,19 +346,6 @@ function ($requirement) { ); } - /** - * @return array - */ - public function getCliRequirements() - { - return array_filter( - $this->getRequirements(), - function ($requirement) { - return $requirement instanceof CliRequirement; - } - ); - } - /** * @param string $val * @return int @@ -330,9 +388,11 @@ public function getRequirements() $requirements = parent::getRequirements(); foreach ($requirements as $key => $requirement) { - $testMessage = $requirement->getTestMessage(); - if (preg_match_all(self::EXCLUDE_REQUIREMENTS_MASK, $testMessage, $matches)) { - unset($requirements[$key]); + if (!$requirement instanceof OroRequirement) { + $testMessage = $requirement->getTestMessage(); + if (preg_match_all(self::EXCLUDE_REQUIREMENTS_MASK, $testMessage, $matches)) { + unset($requirements[$key]); + } } } @@ -378,47 +438,8 @@ protected function checkFileNameLength() return $fileLength >= 242; } - - /** - * @return null|string - */ - protected function checkCliRequirements() - { - $finder = new PhpExecutableFinder(); - $command = sprintf( - '%s %soro-check.php', - $finder->find(), - __DIR__ . DIRECTORY_SEPARATOR - ); - - return shell_exec($command); - } } class OroRequirement extends Requirement { } - -class CliRequirement extends Requirement -{ - /** - * @var string - */ - protected $output; - - /** - * @return string - */ - public function getOutput() - { - return $this->output; - } - - /** - * @param string $output - */ - public function setOutput($output) - { - $this->output = $output; - } -} diff --git a/web/uploads/.gitkeep b/var/attachment/.gitkeep old mode 100644 new mode 100755 similarity index 100% rename from web/uploads/.gitkeep rename to var/attachment/.gitkeep diff --git a/web/test2.json b/var/attachments/.gitkeep old mode 100644 new mode 100755 similarity index 100% rename from web/test2.json rename to var/attachments/.gitkeep diff --git a/var/cache/.gitkeep b/var/cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/var/import_export/.gitignore b/var/import_export/.gitignore new file mode 100755 index 000000000..d6b7ef32c --- /dev/null +++ b/var/import_export/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/var/logs/.gitkeep b/var/logs/.gitkeep new file mode 100755 index 000000000..e69de29bb diff --git a/web/.htaccess b/web/.htaccess deleted file mode 100644 index acb299a56..000000000 --- a/web/.htaccess +++ /dev/null @@ -1,8 +0,0 @@ - - RewriteEngine On - - #RewriteBase / - - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ app.php [QSA,L] - diff --git a/web/install.php b/web/install.php deleted file mode 100644 index a958cbbcc..000000000 --- a/web/install.php +++ /dev/null @@ -1,214 +0,0 @@ -getFailedRequirements(); -$minorProblems = $collection->getFailedRecommendations(); - -$translator->addLoader('yml', new YamlFileLoader()); -$translator->addResource('yml', __DIR__ . '/../app/Resources/translations/install.' . $locale . '.yml', $locale); - -function iterateRequirements(array $collection) -{ - foreach ($collection as $requirement) : - ?> - - - isFulfilled()) : ?> - - isOptional()) : ?> - - - - - getTestMessage(); ?> - - isFulfilled()) : ?> -
      getOutput(); ?>
      - - - isFulfilled() ? 'OK' : $requirement->getHelpHtml(); ?> - - - - - - - - - - - <?php echo $translator->trans('title'); ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      - <?php echo $translator->trans('title'); ?> -

      -
      -
      -
      -
      -
        -
      • - 1 - trans('process.step.check.header'); ?> -
      • -
      • - 2 - trans('process.step.configure'); ?> -
      • -
      • - 3 - trans('process.step.diamanteinstall'); ?> -
      • -
      • - 4 - trans('process.step.setup'); ?> -
      • -
      • - 5 - trans('process.step.final'); ?> -
      • -
      -
      - -
      -

      trans('process.step.check.header'); ?>

      -
      - -
      - -
      -
        -
      • trans('process.step.check.invalid'); ?>
      • - hasPhpIniConfigIssue()): ?> -
      • * - getPhpIniConfigPath()) : - echo $translator->trans( - 'process.step.check.phpchanges', - array( - '%path%' => $collection->getPhpIniConfigPath() - ) - ); - else : - echo $translator->trans('process.step.check.phpchanges'); - endif; - ?> -
      • - -
      -
      - - - $collection->getMandatoryRequirements(), - 'php' => $collection->getPhpIniRequirements(), - 'oro' => $collection->getOroRequirements(), - 'diamante' => $collection->getDiamanteDeskRequirements(), - 'cli' => $collection->getCliRequirements(), - 'optional' => $collection->getRecommendations(), - ); - - foreach($requirements as $type => $requirement) : ?> - - - - - - - - - - - - -
      trans('process.step.check.table.' . $type); ?>trans('process.step.check.table.check'); ?>
      - -
      - -
      -
      - - diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..c1b64c3ae --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,7 @@ +const OroConfig = require('./vendor/oro/platform/build/webpack-config-builder/oro-webpack-config'); + +OroConfig + .setPublicPath('public/') + .setCachePath('var/cache'); + +module.exports = OroConfig.getWebpackConfig();