diff --git a/bin/console b/bin/console index d6ff57bdbc..2ee888d69c 100755 --- a/bin/console +++ b/bin/console @@ -11,6 +11,7 @@ namespace KonsoleKommander; +use Alchemy\Phrasea\Command\Plugin\ListPlugin; use Alchemy\Phrasea\Command\SearchEngine\IndexFull; use Alchemy\Phrasea\Command\BuildMissingSubdefs; use Alchemy\Phrasea\Command\CreateCollection; @@ -103,6 +104,7 @@ $cli->command(new RescanTechnicalDatas('records:rescan-technical-datas')); $cli->command(new BuildMissingSubdefs('records:build-missing-subdefs')); $cli->command(new AddPlugin()); +$cli->command(new ListPlugin()); $cli->command(new RemovePlugin()); $cli->command(new Configuration()); $cli->command(new XSendFileConfigurationDumper()); diff --git a/composer.json b/composer.json index c2918c3a98..640f711f6b 100644 --- a/composer.json +++ b/composer.json @@ -24,7 +24,7 @@ "jms/serializer" : "~0.10", "justinrainbow/json-schema" : "~1.3", "mediavorus/mediavorus" : "~0.4.0", - "media-alchemyst/media-alchemyst" : "~0.4, >=0.4.3", + "media-alchemyst/media-alchemyst" : "~0.4, >=0.4.4", "monolog/monolog" : "~1.3", "mrclay/minify" : "~2.1.6", "neutron/process-manager" : "~1.0", diff --git a/composer.lock b/composer.lock index 4ff2b19046..2bce0ef03e 100644 --- a/composer.lock +++ b/composer.lock @@ -3,7 +3,7 @@ "This file locks the dependencies of your project to a known state", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" ], - "hash": "cf050120950d3b57c24a52d01bbf94a3", + "hash": "6d21ea16cd4f85707ff5c89c7a5777ac", "packages": [ { "name": "alchemy-fr/tcpdf-clone", @@ -292,69 +292,6 @@ "notification-url": "https://packagist.org/downloads/", "time": "2013-07-01 09:47:54" }, - { - "name": "alchemy/task-manager", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/alchemy-fr/task-manager.git", - "reference": "58cc74d41e89cabf1f76c81fdc4e477569e709df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/alchemy-fr/task-manager/zipball/58cc74d41e89cabf1f76c81fdc4e477569e709df", - "reference": "58cc74d41e89cabf1f76c81fdc4e477569e709df", - "shasum": "" - }, - "require": { - "ext-zmq": "*", - "neutron/process-manager": "~1.0", - "neutron/signal-handler": "~1.0", - "php": ">=5.3.3", - "symfony/event-dispatcher": "~2.0", - "symfony/process": "~2.4" - }, - "require-dev": { - "monolog/monolog": "~1.0", - "phpunit/phpunit": "~3.7", - "symfony/console": "~2.3", - "symfony/finder": "~2.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.1-dev" - } - }, - "autoload": { - "psr-0": { - "Alchemy": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Romain Neutron", - "email": "imprec@gmail.com", - "homepage": "http://www.lickmychip.com/" - }, - { - "name": "Phraseanet Team", - "email": "info@alchemy.fr", - "homepage": "http://www.phraseanet.com/" - } - ], - "description": "A manager for running parallel PHP processes command line.", - "keywords": [ - "cli", - "parallel", - "process" - ], - "time": "2013-12-03 18:53:49" - }, { "name": "dailymotion/sdk", "version": "1.5.1", @@ -506,16 +443,16 @@ }, { "name": "doctrine/cache", - "version": "v1.3.0", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449" + "reference": "d0e4447707a064a5814b18cb0dcc2f24185f6179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/e16d7adf45664a50fa86f515b6d5e7f670130449", - "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449", + "url": "https://api.github.com/repos/doctrine/cache/zipball/d0e4447707a064a5814b18cb0dcc2f24185f6179", + "reference": "d0e4447707a064a5814b18cb0dcc2f24185f6179", "shasum": "" }, "require": { @@ -524,10 +461,6 @@ "conflict": { "doctrine/common": ">2.2,<2.4" }, - "require-dev": { - "phpunit/phpunit": ">=3.7", - "satooshi/php-coveralls": "~0.6" - }, "type": "library", "extra": { "branch-alias": { @@ -547,8 +480,7 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" + "homepage": "http://www.jwage.com/" }, { "name": "Guilherme Blanco", @@ -576,7 +508,7 @@ "cache", "caching" ], - "time": "2013-10-25 19:04:14" + "time": "2013-09-26 19:23:25" }, { "name": "doctrine/collections", @@ -721,33 +653,31 @@ }, { "name": "doctrine/dbal", - "version": "v2.4.2", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "fec965d330c958e175c39e61c3f6751955af32d0" + "reference": "2a37b007dda8e21bdbb8fa445be8fa0064199e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/fec965d330c958e175c39e61c3f6751955af32d0", - "reference": "fec965d330c958e175c39e61c3f6751955af32d0", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/2a37b007dda8e21bdbb8fa445be8fa0064199e13", + "reference": "2a37b007dda8e21bdbb8fa445be8fa0064199e13", "shasum": "" }, "require": { - "doctrine/common": "~2.4", + "doctrine/common": ">=2.3.0,<2.5-dev", "php": ">=5.3.2" }, - "require-dev": { - "phpunit/phpunit": "3.7.*", - "symfony/console": "~2.0" - }, - "suggest": { - "symfony/console": "Allows use of the command line interface" - }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, "autoload": { "psr-0": { - "Doctrine\\DBAL\\": "lib/" + "Doctrine\\DBAL": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -758,8 +688,7 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" + "homepage": "http://www.jwage.com/" }, { "name": "Guilherme Blanco", @@ -783,7 +712,7 @@ "persistence", "queryobject" ], - "time": "2014-01-01 16:43:57" + "time": "2013-05-11 07:45:37" }, { "name": "doctrine/inflector", @@ -900,90 +829,25 @@ ], "time": "2013-01-12 18:59:04" }, - { - "name": "doctrine/migrations", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/doctrine/migrations.git", - "reference": "0742fc7167a4deedaabc8639849a3e71082999f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/0742fc7167a4deedaabc8639849a3e71082999f1", - "reference": "0742fc7167a4deedaabc8639849a3e71082999f1", - "shasum": "" - }, - "require": { - "doctrine/dbal": "~2.0", - "php": ">=5.3.2" - }, - "require-dev": { - "symfony/console": "2.*", - "symfony/yaml": "2.*" - }, - "suggest": { - "symfony/console": "to run the migration from the console" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\DBAL\\Migrations": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL" - ], - "authors": [ - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - } - ], - "description": "Database Schema migrations using Doctrine DBAL", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "migrations" - ], - "time": "2014-01-20 11:29:43" - }, { "name": "doctrine/orm", - "version": "v2.4.1", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/doctrine/doctrine2.git", - "reference": "84373d05a4198ec380918d535abf83c454c3867f" + "reference": "a41b02c080114c0de3da4ee9fba61f7d18fae7d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/84373d05a4198ec380918d535abf83c454c3867f", - "reference": "84373d05a4198ec380918d535abf83c454c3867f", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/a41b02c080114c0de3da4ee9fba61f7d18fae7d0", + "reference": "a41b02c080114c0de3da4ee9fba61f7d18fae7d0", "shasum": "" }, "require": { - "doctrine/collections": "~1.1", - "doctrine/dbal": "~2.4", + "doctrine/dbal": "2.3.*", "ext-pdo": "*", "php": ">=5.3.2", - "symfony/console": "~2.0" - }, - "require-dev": { - "satooshi/php-coveralls": "dev-master", - "symfony/yaml": "~2.1" + "symfony/console": "2.*" }, "suggest": { "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" @@ -995,12 +859,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { "psr-0": { - "Doctrine\\ORM\\": "lib/" + "Doctrine\\ORM": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1011,8 +875,7 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com", - "homepage": "http://www.jwage.com/", - "role": "Creator" + "homepage": "http://www.jwage.com/" }, { "name": "Guilherme Blanco", @@ -1034,63 +897,7 @@ "database", "orm" ], - "time": "2013-11-12 12:40:13" - }, - { - "name": "elasticsearch/elasticsearch", - "version": "v0.4.4", - "source": { - "type": "git", - "url": "https://github.com/elasticsearch/elasticsearch-php.git", - "reference": "53df7beea2d66b3ec41e023945e97fe0e240f72b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/elasticsearch/elasticsearch-php/zipball/53df7beea2d66b3ec41e023945e97fe0e240f72b", - "reference": "53df7beea2d66b3ec41e023945e97fe0e240f72b", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "guzzle/guzzle": "~3.7", - "monolog/monolog": "~1.5", - "php": ">=5.3.9", - "pimple/pimple": "~1.0", - "psr/log": "~1.0" - }, - "require-dev": { - "athletic/athletic": "~0.1", - "elasticsearch/elasticsearch_src": "*", - "mikey179/vfsstream": "~1.2", - "mockery/mockery": "dev-master@dev", - "phpunit/phpunit": "3.7.*", - "satooshi/php-coveralls": "dev-master", - "symfony/yaml": "2.4.*@dev" - }, - "type": "library", - "autoload": { - "psr-0": { - "Elasticsearch": "src/", - "Elasticsearch\\Tests": "tests/", - "Elasticsearch\\Benchmarks": "benchmarks/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache 2" - ], - "authors": [ - { - "name": "Zachary Tong" - } - ], - "description": "PHP Client for Elasticsearch", - "keywords": [ - "client", - "elasticsearch", - "search" - ], - "time": "2014-01-07 22:34:33" + "time": "2013-05-11 07:51:12" }, { "name": "evenement/evenement", @@ -1134,16 +941,16 @@ }, { "name": "facebook/php-sdk", - "version": "v3.2.3", + "version": "v3.2.2", "source": { "type": "git", "url": "https://github.com/facebook/facebook-php-sdk.git", - "reference": "6714042fa2f5979d4c64c7d11fb4bcab16bdf6cb" + "reference": "bf99924386be074da30a8e9d6bbcb49d3333da12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/facebook-php-sdk/zipball/6714042fa2f5979d4c64c7d11fb4bcab16bdf6cb", - "reference": "6714042fa2f5979d4c64c7d11fb4bcab16bdf6cb", + "url": "https://api.github.com/repos/facebook/facebook-php-sdk/zipball/bf99924386be074da30a8e9d6bbcb49d3333da12", + "reference": "bf99924386be074da30a8e9d6bbcb49d3333da12", "shasum": "" }, "require": { @@ -1151,9 +958,6 @@ "ext-json": "*", "php": ">=5.2.0" }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, "type": "library", "autoload": { "classmap": [ @@ -1176,20 +980,20 @@ "facebook", "sdk" ], - "time": "2013-11-19 23:11:14" + "time": "2013-01-15 21:37:15" }, { "name": "gedmo/doctrine-extensions", - "version": "v2.3.9", + "version": "v2.3.7", "source": { "type": "git", "url": "https://github.com/l3pp4rd/DoctrineExtensions.git", - "reference": "35adcaae1a3f50d0d5b73aa50ed8fd28ee35ce54" + "reference": "0aa660ffea298b630b8ded7bd2a7eae0d8619fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/l3pp4rd/DoctrineExtensions/zipball/35adcaae1a3f50d0d5b73aa50ed8fd28ee35ce54", - "reference": "35adcaae1a3f50d0d5b73aa50ed8fd28ee35ce54", + "url": "https://api.github.com/repos/l3pp4rd/DoctrineExtensions/zipball/0aa660ffea298b630b8ded7bd2a7eae0d8619fdb", + "reference": "0aa660ffea298b630b8ded7bd2a7eae0d8619fdb", "shasum": "" }, "require": { @@ -1256,7 +1060,7 @@ "tree", "uploadable" ], - "time": "2014-01-12 16:34:06" + "time": "2013-08-18 07:18:44" }, { "name": "guzzle/guzzle", @@ -1350,64 +1154,18 @@ ], "time": "2013-10-02 20:47:00" }, - { - "name": "igorw/get-in", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/igorw/get-in.git", - "reference": "ba9ab6e41d0819db138d52f6431587f56698f121" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/get-in/zipball/ba9ab6e41d0819db138d52f6431587f56698f121", - "reference": "ba9ab6e41d0819db138d52f6431587f56698f121", - "shasum": "" - }, - "require": { - "php": ">=5.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/get_in.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch", - "homepage": "http://wiedler.ch/igor/" - } - ], - "description": "Functions for for hash map (assoc array) traversal.", - "keywords": [ - "assoc-array", - "hash-map" - ], - "time": "2014-01-08 02:24:41" - }, { "name": "imagine/imagine", "version": "dev-develop", "source": { "type": "git", "url": "https://github.com/avalanche123/Imagine.git", - "reference": "5e013323dacbb7d6ab0c0d55692e6b75d1fb30d2" + "reference": "237ccf205dd5ece7a00a574b4f18bd118aa08a5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/5e013323dacbb7d6ab0c0d55692e6b75d1fb30d2", - "reference": "5e013323dacbb7d6ab0c0d55692e6b75d1fb30d2", + "url": "https://api.github.com/repos/avalanche123/Imagine/zipball/237ccf205dd5ece7a00a574b4f18bd118aa08a5d", + "reference": "237ccf205dd5ece7a00a574b4f18bd118aa08a5d", "shasum": "" }, "require": { @@ -1451,20 +1209,20 @@ "image manipulation", "image processing" ], - "time": "2013-12-23 10:54:18" + "time": "2013-10-26 10:53:02" }, { "name": "jms/metadata", - "version": "1.5.0", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/metadata.git", - "reference": "88ffa28bc987e4c26229fc84a2e541b6ed4e1459" + "reference": "246d7096801ce29b5aea30a1abf0277ccfb9f055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/88ffa28bc987e4c26229fc84a2e541b6ed4e1459", - "reference": "88ffa28bc987e4c26229fc84a2e541b6ed4e1459", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/246d7096801ce29b5aea30a1abf0277ccfb9f055", + "reference": "246d7096801ce29b5aea30a1abf0277ccfb9f055", "shasum": "" }, "require": { @@ -1476,7 +1234,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -1503,7 +1261,7 @@ "xml", "yaml" ], - "time": "2013-11-05 23:02:36" + "time": "2013-09-13 09:05:44" }, { "name": "jms/parser-lib", @@ -1542,16 +1300,16 @@ }, { "name": "jms/serializer", - "version": "0.14.0", + "version": "0.13.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "22daa254e54f4b69292bd8679d7a6f3a78dc85d4" + "reference": "9e0fcd00a374e9ad484687628c6c25ab1083ea5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/22daa254e54f4b69292bd8679d7a6f3a78dc85d4", - "reference": "22daa254e54f4b69292bd8679d7a6f3a78dc85d4", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/9e0fcd00a374e9ad484687628c6c25ab1083ea5a", + "reference": "9e0fcd00a374e9ad484687628c6c25ab1083ea5a", "shasum": "" }, "require": { @@ -1563,9 +1321,6 @@ }, "require-dev": { "doctrine/orm": ">=2.1,<2.4-dev", - "doctrine/phpcr-odm": "~1.0.1", - "jackalope/jackalope-doctrine-dbal": "1.0.*", - "propel/propel1": "~1.7", "symfony/filesystem": "2.*", "symfony/form": ">=2.1,<2.2-dev", "symfony/translation": ">=2.0,<2.2-dev", @@ -1579,7 +1334,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.14-dev" + "dev-master": "0.13-dev" } }, "autoload": { @@ -1608,20 +1363,20 @@ "serialization", "xml" ], - "time": "2013-12-04 16:46:05" + "time": "2013-07-29 13:39:49" }, { "name": "justinrainbow/json-schema", - "version": "1.3.5", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "01949f6d2130e9737ffae5d3952909a8de70d114" + "reference": "56fe099669ff3ec3be859ec02e3da965a720184d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/01949f6d2130e9737ffae5d3952909a8de70d114", - "reference": "01949f6d2130e9737ffae5d3952909a8de70d114", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/56fe099669ff3ec3be859ec02e3da965a720184d", + "reference": "56fe099669ff3ec3be859ec02e3da965a720184d", "shasum": "" }, "require": { @@ -1629,8 +1384,7 @@ }, "require-dev": { "json-schema/json-schema-test-suite": "1.1.0", - "phpdocumentor/phpdocumentor": "~2", - "phpunit/phpunit": "~3.7" + "phpunit/phpunit": "~3.7.0" }, "bin": [ "bin/validate-json" @@ -1676,20 +1430,20 @@ "json", "schema" ], - "time": "2013-12-13 15:21:04" + "time": "2013-07-22 15:15:25" }, { "name": "media-alchemyst/media-alchemyst", - "version": "0.4.3", + "version": "0.4.4", "source": { "type": "git", "url": "https://github.com/alchemy-fr/Media-Alchemyst.git", - "reference": "319f55c2265a9056d68f1f0e6314dce977ef47ef" + "reference": "067599fd669b86ff3a1cfb344730014b4a339b7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/319f55c2265a9056d68f1f0e6314dce977ef47ef", - "reference": "319f55c2265a9056d68f1f0e6314dce977ef47ef", + "url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/067599fd669b86ff3a1cfb344730014b4a339b7e", + "reference": "067599fd669b86ff3a1cfb344730014b4a339b7e", "shasum": "" }, "require": { @@ -1749,7 +1503,7 @@ "video", "video processing" ], - "time": "2013-12-03 17:07:51" + "time": "2014-01-31 11:32:50" }, { "name": "mediavorus/mediavorus", @@ -1919,40 +1673,6 @@ "homepage": "http://code.google.com/p/minify/", "time": "2013-07-23 19:58:28" }, - { - "name": "neutron/process-manager", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/romainneutron/ProcessManager.git", - "reference": "0f44ac5e5b855b24646d692762f77c988d48f4a4" - }, - "require": { - "php": ">=5.3.3", - "symfony/process": "~2.4" - }, - "require-dev": { - "phpunit/phpunit": "~3.7", - "sami/sami": "~1.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Neutron": "src" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Romain Neutron", - "email": "imprec@gmail.com", - "homepage": "http://www.lickmychip.com/" - } - ], - "time": "2013-12-03 18:48:00" - }, { "name": "neutron/recaptcha", "version": "0.1.3", @@ -1997,49 +1717,6 @@ "description": "ReCaptcha Client", "time": "2013-02-14 13:42:00" }, - { - "name": "neutron/signal-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/romainneutron/signal-handler.git", - "reference": "5f2069bf4a5901a65be51f57ea60779a279564c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/romainneutron/signal-handler/zipball/5f2069bf4a5901a65be51f57ea60779a279564c1", - "reference": "5f2069bf4a5901a65be51f57ea60779a279564c1", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~3.7" - }, - "type": "library", - "autoload": { - "psr-0": { - "Neutron": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Romain Neutron", - "email": "imprec@gmail.com", - "homepage": "http://www.lickmychip.com/" - } - ], - "description": "A library to ease the use of signal handling.", - "keywords": [ - "signal" - ], - "time": "2014-01-15 17:24:13" - }, { "name": "neutron/silex-filesystem-provider", "version": "1.0.0", @@ -2588,16 +2265,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.4.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5" + "reference": "1c7e8016289d17d83ced49c56d0f266fd0568941" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5d099bcf0393908bf4ad69cc47dafb785d51f7f5", - "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/1c7e8016289d17d83ced49c56d0f266fd0568941", + "reference": "1c7e8016289d17d83ced49c56d0f266fd0568941", "shasum": "" }, "require": { @@ -2633,20 +2310,20 @@ "php", "type" ], - "time": "2014-01-09 22:37:17" + "time": "2013-05-19 11:09:35" }, { "name": "pimple/pimple", - "version": "v1.1.0", + "version": "v1.0.2", "source": { "type": "git", "url": "https://github.com/fabpot/Pimple.git", - "reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83" + "reference": "ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Pimple/zipball/471c7d7c52ad6594e17b8ec33efdd1be592b5d83", - "reference": "471c7d7c52ad6594e17b8ec33efdd1be592b5d83", + "url": "https://api.github.com/repos/fabpot/Pimple/zipball/ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94", + "reference": "ae11e57e8c2bb414b2ff93396dbbfc0eb92feb94", "shasum": "" }, "require": { @@ -2655,7 +2332,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2679,7 +2356,7 @@ "container", "dependency injection" ], - "time": "2013-09-19 04:53:08" + "time": "2013-03-08 08:21:40" }, { "name": "psr/log", @@ -2721,59 +2398,57 @@ }, { "name": "silex/silex", - "version": "1.1.x-dev", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "43760a430b6c184760ca205fa768f748296c1647" + "url": "https://github.com/fabpot/Silex.git", + "reference": "v1.0.1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/43760a430b6c184760ca205fa768f748296c1647", - "reference": "43760a430b6c184760ca205fa768f748296c1647", + "url": "https://api.github.com/repos/fabpot/Silex/zipball/v1.0.1", + "reference": "v1.0.1", "shasum": "" }, "require": { "php": ">=5.3.3", - "pimple/pimple": "~1.0", - "symfony/event-dispatcher": ">=2.3,<2.5-dev", - "symfony/http-foundation": ">=2.3,<2.5-dev", - "symfony/http-kernel": ">=2.3,<2.5-dev", - "symfony/routing": ">=2.3,<2.5-dev" + "pimple/pimple": "1.*", + "symfony/event-dispatcher": ">=2.1,<2.4-dev", + "symfony/http-foundation": ">=2.1,<2.4-dev", + "symfony/http-kernel": ">=2.1,<2.4-dev", + "symfony/routing": ">=2.1,<2.4-dev" }, "require-dev": { "doctrine/dbal": ">=2.2.0,<2.4.0-dev", "monolog/monolog": "~1.4,>=1.4.1", - "phpunit/phpunit": "~3.7", "swiftmailer/swiftmailer": "5.*", - "symfony/browser-kit": ">=2.3,<2.5-dev", - "symfony/config": ">=2.3,<2.5-dev", - "symfony/css-selector": ">=2.3,<2.5-dev", - "symfony/debug": ">=2.3,<2.5-dev", - "symfony/dom-crawler": ">=2.3,<2.5-dev", - "symfony/finder": ">=2.3,<2.5-dev", - "symfony/form": ">=2.3,<2.5-dev", - "symfony/locale": ">=2.3,<2.5-dev", - "symfony/monolog-bridge": ">=2.3,<2.5-dev", - "symfony/options-resolver": ">=2.3,<2.5-dev", - "symfony/process": ">=2.3,<2.5-dev", - "symfony/security": ">=2.3,<2.5-dev", - "symfony/serializer": ">=2.3,<2.5-dev", - "symfony/translation": ">=2.3,<2.5-dev", - "symfony/twig-bridge": ">=2.3,<2.5-dev", - "symfony/validator": ">=2.3,<2.5-dev", + "symfony/browser-kit": ">=2.1,<2.4-dev", + "symfony/config": ">=2.1,<2.4-dev", + "symfony/css-selector": ">=2.1,<2.4-dev", + "symfony/dom-crawler": ">=2.1,<2.4-dev", + "symfony/finder": ">=2.1,<2.4-dev", + "symfony/form": ">=2.1.4,<2.4-dev", + "symfony/locale": ">=2.1,<2.4-dev", + "symfony/monolog-bridge": ">=2.1,<2.4-dev", + "symfony/options-resolver": ">=2.1,<2.4-dev", + "symfony/process": ">=2.1,<2.4-dev", + "symfony/security": ">=2.1,<2.4-dev", + "symfony/serializer": ">=2.1,<2.4-dev", + "symfony/translation": ">=2.1,<2.4-dev", + "symfony/twig-bridge": ">=2.1,<2.4-dev", + "symfony/validator": ">=2.1,<2.4-dev", "twig/twig": ">=1.8.0,<2.0-dev" }, "suggest": { - "symfony/browser-kit": ">=2.3,<2.5-dev", - "symfony/css-selector": ">=2.3,<2.5-dev", - "symfony/dom-crawler": ">=2.3,<2.5-dev", - "symfony/form": ">=2.3,<2.5-dev" + "symfony/browser-kit": ">=2.1,<2.4-dev", + "symfony/css-selector": ">=2.1,<2.4-dev", + "symfony/dom-crawler": ">=2.1,<2.4-dev", + "symfony/form": ">= 2.1.4,<2.4-dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2801,21 +2476,21 @@ "keywords": [ "microframework" ], - "time": "2014-01-20 06:45:30" + "time": "2013-07-04 06:25:40" }, { "name": "silex/web-profiler", - "version": "dev-master", + "version": "v1.0.1", "target-dir": "Silex/Provider", "source": { "type": "git", "url": "https://github.com/silexphp/Silex-WebProfiler.git", - "reference": "2d153ae71c8445cb90535fbdd82b92e39d9f67e0" + "reference": "3d875ac4f583e893a076ec51478e38eeaf0cb562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex-WebProfiler/zipball/2d153ae71c8445cb90535fbdd82b92e39d9f67e0", - "reference": "2d153ae71c8445cb90535fbdd82b92e39d9f67e0", + "url": "https://api.github.com/repos/silexphp/Silex-WebProfiler/zipball/3d875ac4f583e893a076ec51478e38eeaf0cb562", + "reference": "3d875ac4f583e893a076ec51478e38eeaf0cb562", "shasum": "" }, "require": { @@ -2846,7 +2521,7 @@ ], "description": "A WebProfiler for Silex", "homepage": "http://silex.sensiolabs.org/", - "time": "2014-01-30 06:11:24" + "time": "2013-05-03 17:04:41" }, { "name": "swftools/swftools", @@ -3001,16 +2676,16 @@ }, { "name": "symfony/symfony", - "version": "v2.4.1", + "version": "v2.3.9", "source": { "type": "git", "url": "https://github.com/symfony/symfony.git", - "reference": "377a5fb23bfdc2fb616610b7b7ab7cc9a50e614d" + "reference": "ee1e0f2ef882ccd6a53ff91e5ffc39a22b6a6b74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/377a5fb23bfdc2fb616610b7b7ab7cc9a50e614d", - "reference": "377a5fb23bfdc2fb616610b7b7ab7cc9a50e614d", + "url": "https://api.github.com/repos/symfony/symfony/zipball/ee1e0f2ef882ccd6a53ff91e5ffc39a22b6a6b74", + "reference": "ee1e0f2ef882ccd6a53ff91e5ffc39a22b6a6b74", "shasum": "" }, "require": { @@ -3031,7 +2706,6 @@ "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", @@ -3048,11 +2722,7 @@ "symfony/proxy-manager-bridge": "self.version", "symfony/routing": "self.version", "symfony/security": "self.version", - "symfony/security-acl": "self.version", "symfony/security-bundle": "self.version", - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-http": "self.version", "symfony/serializer": "self.version", "symfony/stopwatch": "self.version", "symfony/swiftmailer-bridge": "self.version", @@ -3070,13 +2740,13 @@ "doctrine/orm": "~2.2,>=2.2.3", "ircmaxell/password-compat": "1.0.*", "monolog/monolog": "~1.3", - "ocramius/proxy-manager": ">=0.3.1,<0.6-dev", + "ocramius/proxy-manager": ">=0.3.1,<0.4-dev", "propel/propel1": "1.6.*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -3110,7 +2780,7 @@ "keywords": [ "framework" ], - "time": "2014-01-05 02:12:11" + "time": "2014-01-05 01:24:54" }, { "name": "themattharris/tmhoauth", @@ -3156,20 +2826,20 @@ }, { "name": "twig/extensions", - "version": "v1.0.1", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/fabpot/Twig-extensions.git", - "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0" + "reference": "921799aaf05f88af749d72912d6b154dfeb9a03e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig-extensions/zipball/f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", - "reference": "f91a82ec225e5bb108e01a0f93c9be04f84dcfa0", + "url": "https://api.github.com/repos/fabpot/Twig-extensions/zipball/921799aaf05f88af749d72912d6b154dfeb9a03e", + "reference": "921799aaf05f88af749d72912d6b154dfeb9a03e", "shasum": "" }, "require": { - "twig/twig": "~1.0" + "twig/twig": "1.*" }, "type": "library", "extra": { @@ -3199,20 +2869,20 @@ "i18n", "text" ], - "time": "2013-10-18 19:37:15" + "time": "2013-02-28 14:21:30" }, { "name": "twig/twig", - "version": "v1.15.0", + "version": "v1.14.2", "source": { "type": "git", "url": "https://github.com/fabpot/Twig.git", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666" + "reference": "ca445842fcea4f844d68203ffa2d00f5e3cdea64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fabpot/Twig/zipball/85e4ff98000157ff753d934b9f13659a953f5666", - "reference": "85e4ff98000157ff753d934b9f13659a953f5666", + "url": "https://api.github.com/repos/fabpot/Twig/zipball/ca445842fcea4f844d68203ffa2d00f5e3cdea64", + "reference": "ca445842fcea4f844d68203ffa2d00f5e3cdea64", "shasum": "" }, "require": { @@ -3221,7 +2891,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.14-dev" } }, "autoload": { @@ -3248,7 +2918,7 @@ "keywords": [ "templating" ], - "time": "2013-12-06 07:47:10" + "time": "2013-10-30 08:20:53" }, { "name": "vierbergenlars/php-semver", @@ -3343,20 +3013,20 @@ "packages-dev": [ { "name": "behat/behat", - "version": "2.5.x-dev", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "3690b9c6f37f75157063698a12873a6a93e7a679" + "reference": "b7e0e98dd7b50f2fccfbfad0d6495b0e022856b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/3690b9c6f37f75157063698a12873a6a93e7a679", - "reference": "3690b9c6f37f75157063698a12873a6a93e7a679", + "url": "https://api.github.com/repos/Behat/Behat/zipball/b7e0e98dd7b50f2fccfbfad0d6495b0e022856b3", + "reference": "b7e0e98dd7b50f2fccfbfad0d6495b0e022856b3", "shasum": "" }, "require": { - "behat/gherkin": "~2.3.0", + "behat/gherkin": "~2.2.9", "php": ">=5.3.1", "symfony/config": "~2.0", "symfony/console": "~2.0", @@ -3378,6 +3048,11 @@ "bin/behat" ], "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.4-dev" + } + }, "autoload": { "psr-0": { "Behat\\Behat": "src/" @@ -3401,30 +3076,30 @@ "Behat", "Symfony2" ], - "time": "2014-01-04 22:39:16" + "time": "2013-08-11 16:11:33" }, { "name": "behat/gherkin", - "version": "2.3.x-dev", + "version": "v2.2.9", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "2b33963da5525400573560c173ab5c9c057e1852" + "reference": "v2.2.9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2b33963da5525400573560c173ab5c9c057e1852", - "reference": "2b33963da5525400573560c173ab5c9c057e1852", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/v2.2.9", + "reference": "v2.2.9", "shasum": "" }, "require": { "php": ">=5.3.1", - "symfony/finder": "~2.0" + "symfony/finder": ">=2.0,<2.4-dev" }, "require-dev": { - "symfony/config": "~2.0", - "symfony/translation": "~2.0", - "symfony/yaml": "~2.0" + "symfony/config": ">=2.0,<2.4-dev", + "symfony/translation": ">=2.0,<2.4-dev", + "symfony/yaml": ">=2.0,<2.4-dev" }, "suggest": { "symfony/config": "If you want to use Config component to manage resources", @@ -3462,7 +3137,7 @@ "Symfony2", "parser" ], - "time": "2013-10-15 11:22:17" + "time": "2013-03-02 10:38:40" }, { "name": "behat/mink", @@ -3737,6 +3412,61 @@ ], "time": "2013-06-02 19:09:45" }, + { + "name": "doctrine/data-fixtures", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "dfc0dc9a3f6258c878768218fe49cc092ea8a8d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/dfc0dc9a3f6258c878768218fe49cc092ea8a8d1", + "reference": "dfc0dc9a3f6258c878768218fe49cc092ea8a8d1", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.2,<2.5-dev", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/orm": ">=2.2,<2.5-dev" + }, + "suggest": { + "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.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\DataFixtures": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com", + "homepage": "http://www.jwage.com/" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database" + ], + "time": "2013-10-16 14:26:38" + }, { "name": "fabpot/goutte", "version": "v1.0.3", @@ -3851,119 +3581,6 @@ ], "time": "2013-10-04 15:03:51" }, - { - "name": "jms/translation-bundle", - "version": "1.1.0", - "target-dir": "JMS/TranslationBundle", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/JMSTranslationBundle.git", - "reference": "6f03035a38badaf8c48767c7664c3196df1eebdf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSTranslationBundle/zipball/6f03035a38badaf8c48767c7664c3196df1eebdf", - "reference": "6f03035a38badaf8c48767c7664c3196df1eebdf", - "shasum": "" - }, - "require": { - "nikic/php-parser": "0.9.1", - "symfony/console": "*", - "symfony/framework-bundle": "~2.1" - }, - "conflict": { - "twig/twig": "1.10.2" - }, - "require-dev": { - "jms/di-extra-bundle": ">=1.1", - "sensio/framework-extra-bundle": "*", - "symfony/browser-kit": "*", - "symfony/class-loader": "*", - "symfony/css-selector": "*", - "symfony/finder": "*", - "symfony/form": "*", - "symfony/process": "*", - "symfony/security": "*", - "symfony/twig-bundle": "*", - "symfony/validator": "*", - "symfony/yaml": "*" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-0": { - "JMS\\TranslationBundle": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache2" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "http://jmsyst.com", - "role": "Developer of wrapped JMSSerializerBundle" - } - ], - "description": "Puts the Symfony2 Translation Component on steroids", - "homepage": "http://jmsyst.com/bundles/JMSTranslationBundle", - "keywords": [ - "extract", - "extraction", - "i18n", - "interface", - "multilanguage", - "translation", - "ui", - "webinterface" - ], - "time": "2013-06-08 14:08:19" - }, - { - "name": "nikic/php-parser", - "version": "v0.9.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "b1cc9ce676b4350b23d0fafc8244d08eee2fe287" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/b1cc9ce676b4350b23d0fafc8244d08eee2fe287", - "reference": "b1cc9ce676b4350b23d0fafc8244d08eee2fe287", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "PHPParser": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2012-04-23 22:52:11" - }, { "name": "phpunit/php-code-coverage", "version": "1.2.13", @@ -4072,16 +3689,16 @@ }, { "name": "phpunit/php-text-template", - "version": "1.2.0", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "url": "git://github.com/sebastianbergmann/php-text-template.git", + "reference": "1.1.4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4", + "reference": "1.1.4", "shasum": "" }, "require": { @@ -4112,7 +3729,7 @@ "keywords": [ "template" ], - "time": "2014-01-30 17:20:04" + "time": "2012-10-31 11:15:28" }, { "name": "phpunit/php-timer", @@ -4210,16 +3827,16 @@ }, { "name": "phpunit/phpunit", - "version": "3.7.29", + "version": "3.7.28", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "faeb2d9f15dc83830d2db5e4c67acf1d68c9b5ac" + "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/faeb2d9f15dc83830d2db5e4c67acf1d68c9b5ac", - "reference": "faeb2d9f15dc83830d2db5e4c67acf1d68c9b5ac", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", + "reference": "3b97c8492bcafbabe6b6fbd2ab35f2f04d932a8d", "shasum": "" }, "require": { @@ -4280,7 +3897,7 @@ "testing", "xunit" ], - "time": "2014-01-15 06:46:38" + "time": "2013-10-17 07:27:40" }, { "name": "phpunit/phpunit-mock-objects", @@ -4338,14 +3955,10 @@ "minimum-stability": "stable", "stability-flags": { "imagine/imagine": 20, - "silex/silex": 20, - "silex/web-profiler": 20, - "doctrine/migrations": 20, - "behat/behat": 20, - "behat/gherkin": 20 + "doctrine/data-fixtures": 20 }, "platform": { - "php": ">=5.4" + "php": ">=5.3.3" }, "platform-dev": [ diff --git a/lib/Alchemy/Phrasea/Command/Plugin/ListPlugin.php b/lib/Alchemy/Phrasea/Command/Plugin/ListPlugin.php new file mode 100644 index 0000000000..db269b02ef --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/Plugin/ListPlugin.php @@ -0,0 +1,90 @@ +setDescription('Lists installed plugins') + ->addOption('json', 'j', InputOption::VALUE_NONE, 'Output result in JSON'); + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + $plugins = array_map(function (Plugin $plugin) use ($input) { + if ($plugin->isErroneous()) { + return $this->formatErroneousPlugin($input, $plugin); + } + + return $this->formatPlugin($input, $plugin); + }, $this->container['plugins.manager']->listPlugins()); + + if ($input->getOption('json')) { + $output->writeln(json_encode(array('plugins' => array_values($plugins)))); + } else { + $table = $this->getHelperSet()->get('table'); + $table + ->setHeaders(array('Name', 'Version', 'Description')) + ->setRows($plugins) + ; + + $table->render($output); + } + + return 0; + } + + private function formatPlugin(InputInterface $input, Plugin $plugin) + { + if ($input->getOption('json')) { + return array( + 'name' => $plugin->getName(), + 'version' => $plugin->getManifest()->getVersion(), + 'description' => $plugin->getManifest()->getDescription(), + 'error' => false, + ); + } + + return array( + $plugin->getName(), + $plugin->getManifest()->getVersion(), + $plugin->getManifest()->getDescription(), + ); + } + + private function formatErroneousPlugin(InputInterface $input, Plugin $plugin) + { + if ($input->getOption('json')) { + return array( + 'name' => $plugin->getName(), + 'error' => true, + 'description' => 'Error : '.$plugin->getError()->getMessage(), + 'version' => null, + ); + } + + return array( + '' . $plugin->getName() . '', + 'Error : ' . $plugin->getError()->getMessage() . '', + '', + ); + } +} diff --git a/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php b/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php index c84a65760a..2c59a141ff 100644 --- a/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php +++ b/lib/Alchemy/Phrasea/Command/Upgrade/Step35.php @@ -47,11 +47,6 @@ class Step35 implements DatasUpgraderInterface $this->ensureMigrateColumn($databox); - $sql = 'TRUNCATE metadatas'; - $stmt = $databox->get_connection()->prepare($sql); - $stmt->execute(); - $stmt->closeCursor(); - do { $rs = $this->getEmptyOriginalNameRecords($databox); diff --git a/lib/Alchemy/Phrasea/Core/CLIProvider/PluginServiceProvider.php b/lib/Alchemy/Phrasea/Core/CLIProvider/PluginServiceProvider.php index 0fc2c0c83a..df9ffb936c 100644 --- a/lib/Alchemy/Phrasea/Core/CLIProvider/PluginServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/CLIProvider/PluginServiceProvider.php @@ -11,6 +11,7 @@ namespace Alchemy\Phrasea\Core\CLIProvider; +use Alchemy\Phrasea\Plugin\PluginManager; use Alchemy\Phrasea\Plugin\Schema\ManifestValidator; use Alchemy\Phrasea\Plugin\Management\PluginsExplorer; use Alchemy\Phrasea\Plugin\Management\ComposerInstaller; @@ -31,6 +32,10 @@ class PluginServiceProvider implements ServiceProviderInterface { $app['plugins.schema'] = realpath(__DIR__ . '/../../../../conf.d/plugin-schema.json'); + $app['plugins.manager'] = $app->share(function (Application $app) { + return new PluginManager($app['plugins.directory'], $app['plugins.plugins-validator']); + }); + $app['plugins.json-validator'] = $app->share(function (Application $app) { return new JsonValidator(); }); diff --git a/lib/Alchemy/Phrasea/Plugin/Plugin.php b/lib/Alchemy/Phrasea/Plugin/Plugin.php new file mode 100644 index 0000000000..fceed2e45d --- /dev/null +++ b/lib/Alchemy/Phrasea/Plugin/Plugin.php @@ -0,0 +1,65 @@ +name = $name; + $this->manifest = $manifest; + $this->error = $error; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * @return Boolean + */ + public function isErroneous() + { + return null !== $this->error; + } + + /** + * @return Manifest + */ + public function getManifest() + { + return $this->manifest; + } + + /** + * @return PluginValidationException + */ + public function getError() + { + return $this->error; + } +} diff --git a/lib/Alchemy/Phrasea/Plugin/PluginManager.php b/lib/Alchemy/Phrasea/Plugin/PluginManager.php new file mode 100644 index 0000000000..491743bb64 --- /dev/null +++ b/lib/Alchemy/Phrasea/Plugin/PluginManager.php @@ -0,0 +1,64 @@ +pluginDir = $pluginDir; + $this->validator = $validator; + } + + /** + * @return Plugin[] An array containing plugins + */ + public function listPlugins() + { + $finder = new Finder(); + $finder + ->depth(0) + ->in($this->pluginDir) + ->directories(); + + $plugins = array(); + + foreach ($finder as $pluginDir) { + $manifest = $error = null; + $name = $pluginDir->getBasename(); + + try { + $manifest = $this->validator->validatePlugin((string) $pluginDir); + } catch (PluginValidationException $e) { + $error = $e; + } + + $plugins[$name] = new Plugin($name, $manifest, $error); + } + + return $plugins; + } + + public function hasPlugin($name) + { + $plugins = $this->listPlugins(); + + return isset($plugins[$name]); + } +} diff --git a/tests/Alchemy/Tests/Phrasea/Command/Plugin/ListPluginTest.php b/tests/Alchemy/Tests/Phrasea/Command/Plugin/ListPluginTest.php new file mode 100644 index 0000000000..eacdf8cdf9 --- /dev/null +++ b/tests/Alchemy/Tests/Phrasea/Command/Plugin/ListPluginTest.php @@ -0,0 +1,36 @@ +getMock('Symfony\Component\Console\Input\InputInterface'); + $output = $this->getMock('Symfony\Component\Console\Output\OutputInterface'); + + $table = $this->getMockBuilder('Symfony\Component\Console\Helper\TableHelper') + ->disableOriginalConstructor() + ->getMock(); + $table->expects($this->once()) + ->method('setHeaders') + ->will($this->returnSelf()); + + $helperSet = $this->getMockBuilder('Symfony\Component\Console\Helper\HelperSet') + ->disableOriginalConstructor() + ->getMock(); + $helperSet->expects($this->once()) + ->method('get') + ->will($this->returnValue($table)); + + $command = new ListPlugin(); + $command->setContainer(self::$DI['cli']); + $command->setHelperSet($helperSet); + + $result = $command->execute($input, $output); + + $this->assertSame(0, $result); + } +} diff --git a/tests/Alchemy/Tests/Phrasea/Core/CLIProvider/PluginServiceProviderTest.php b/tests/Alchemy/Tests/Phrasea/Core/CLIProvider/PluginServiceProviderTest.php index 13b585e1d2..fd837ed376 100644 --- a/tests/Alchemy/Tests/Phrasea/Core/CLIProvider/PluginServiceProviderTest.php +++ b/tests/Alchemy/Tests/Phrasea/Core/CLIProvider/PluginServiceProviderTest.php @@ -19,6 +19,11 @@ class PluginServiceProviderTest extends ServiceProviderTestCase 'JsonSchema\Validator' ], [ + 'Alchemy\Phrasea\Core\CLIProvider\PluginServiceProvider', + 'plugins.manager', + 'Alchemy\Phrasea\Plugin\PluginManager' + ), + array( 'Alchemy\Phrasea\Core\CLIProvider\PluginServiceProvider', 'plugins.plugins-validator', 'Alchemy\Phrasea\Plugin\Schema\PluginValidator' diff --git a/tests/Alchemy/Tests/Phrasea/Plugin/Fixtures/PluginDirInstalled/test-plugin/twig-views/template.html.twig b/tests/Alchemy/Tests/Phrasea/Plugin/Fixtures/PluginDirInstalled/test-plugin/twig-views/template.html.twig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/Alchemy/Tests/Phrasea/Plugin/PluginManagerTest.php b/tests/Alchemy/Tests/Phrasea/Plugin/PluginManagerTest.php new file mode 100644 index 0000000000..6bbe410a2e --- /dev/null +++ b/tests/Alchemy/Tests/Phrasea/Plugin/PluginManagerTest.php @@ -0,0 +1,43 @@ +listPlugins(); + $this->assertCount(1, $plugins); + $plugin = array_pop($plugins); + + $this->assertFalse($plugin->isErroneous()); + } + + public function testListWrongPlugins() + { + $manager = new PluginManager(__DIR__ . '/Fixtures/WrongPlugins', self::$DI['cli']['plugins.plugins-validator']); + $plugins = $manager->listPlugins(); + $this->assertCount(8, $plugins); + $plugin = array_pop($plugins); + + $this->assertTrue($plugin->isErroneous()); + } + + public function testHasPlugin() + { + $manager = new PluginManager(__DIR__ . '/Fixtures/PluginDirInstalled', self::$DI['cli']['plugins.plugins-validator']); + $this->assertTrue($manager->hasPlugin('test-plugin')); + $this->assertFalse($manager->hasPlugin('test-plugin2')); + } + + private function createValidatorMock() + { + return $this->getMockBuilder('Alchemy\Phrasea\Plugin\Schema\PluginValidator') + ->disableOriginalConstructor() + ->getMock(); + } +} diff --git a/tests/Alchemy/Tests/Phrasea/Plugin/PluginTest.php b/tests/Alchemy/Tests/Phrasea/Plugin/PluginTest.php new file mode 100644 index 0000000000..6bdc3e7638 --- /dev/null +++ b/tests/Alchemy/Tests/Phrasea/Plugin/PluginTest.php @@ -0,0 +1,45 @@ +createManifestMock(); + $error = $this->getMock('Alchemy\Phrasea\Plugin\Exception\PluginValidationException'); + + $plugin = new Plugin('toto', $manifest, null); + $this->assertSame('toto', $plugin->getName()); + $this->assertSame($manifest, $plugin->getManifest()); + $this->assertNull($plugin->getError()); + $this->assertFalse($plugin->isErroneous()); + + $plugin = new Plugin('toto', null, $error); + $this->assertSame('toto', $plugin->getName()); + $this->assertNull($plugin->getManifest()); + $this->assertSame($error, $plugin->getError()); + $this->assertTrue($plugin->isErroneous()); + } + + /** + * @expectedException \LogicException + */ + public function testBothNull() + { + new Plugin('toto', null, null); + } + + /** + * @expectedException \LogicException + */ + public function testBothNotNull() + { + $manifest = $this->createManifestMock(); + $error = $this->getMock('Alchemy\Phrasea\Plugin\Exception\PluginValidationException'); + + new Plugin('toto', $manifest, $error); + } +} diff --git a/tests/Alchemy/Tests/Phrasea/Plugin/PluginTestCase.php b/tests/Alchemy/Tests/Phrasea/Plugin/PluginTestCase.php index db33bdb24b..1c4eb8a6b5 100644 --- a/tests/Alchemy/Tests/Phrasea/Plugin/PluginTestCase.php +++ b/tests/Alchemy/Tests/Phrasea/Plugin/PluginTestCase.php @@ -30,4 +30,11 @@ class PluginTestCase extends \PhraseanetTestCase { return __DIR__ . '/../../../../../lib/conf.d/plugin-schema.json'; } + + protected function createManifestMock() + { + return $this->getMockBuilder('Alchemy\Phrasea\Plugin\Schema\Manifest') + ->disableOriginalConstructor() + ->getMock(); + } }