]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Merge pull request #4151 from ldidry/fix-4060
authorJérémy Benoist <j0k3r@users.noreply.github.com>
Tue, 19 Nov 2019 13:25:41 +0000 (14:25 +0100)
committerGitHub <noreply@github.com>
Tue, 19 Nov 2019 13:25:41 +0000 (14:25 +0100)
✨ Allow custom styles system wide

117 files changed:
app/DoctrineMigrations/Version20160401000000.php
app/DoctrineMigrations/Version20160410190541.php
app/DoctrineMigrations/Version20160812120952.php
app/DoctrineMigrations/Version20160911214952.php
app/DoctrineMigrations/Version20160916201049.php
app/DoctrineMigrations/Version20161001072726.php
app/DoctrineMigrations/Version20161022134138.php
app/DoctrineMigrations/Version20161024212538.php
app/DoctrineMigrations/Version20161031132655.php
app/DoctrineMigrations/Version20161104073720.php
app/DoctrineMigrations/Version20161106113822.php
app/DoctrineMigrations/Version20161117071626.php
app/DoctrineMigrations/Version20161118134328.php
app/DoctrineMigrations/Version20161122144743.php
app/DoctrineMigrations/Version20161122203647.php
app/DoctrineMigrations/Version20161128084725.php
app/DoctrineMigrations/Version20161128131503.php
app/DoctrineMigrations/Version20161214094402.php
app/DoctrineMigrations/Version20161214094403.php
app/DoctrineMigrations/Version20170127093841.php
app/DoctrineMigrations/Version20170327194233.php
app/DoctrineMigrations/Version20170405182620.php
app/DoctrineMigrations/Version20170407200919.php
app/DoctrineMigrations/Version20170420134133.php
app/DoctrineMigrations/Version20170501115751.php
app/DoctrineMigrations/Version20170510082609.php
app/DoctrineMigrations/Version20170511115400.php
app/DoctrineMigrations/Version20170602075214.php
app/DoctrineMigrations/Version20170606155640.php
app/DoctrineMigrations/Version20170719231144.php
app/DoctrineMigrations/Version20170824113337.php
app/DoctrineMigrations/Version20171008195606.php
app/DoctrineMigrations/Version20171105202000.php
app/DoctrineMigrations/Version20171120163128.php
app/DoctrineMigrations/Version20171125164500.php
app/DoctrineMigrations/Version20180405182455.php
app/DoctrineMigrations/Version20181128203230.php
app/DoctrineMigrations/Version20190129120000.php
app/DoctrineMigrations/Version20190401105353.php
app/DoctrineMigrations/Version20190601125843.php
app/config/config.yml
composer.json
composer.lock
docker/php/Dockerfile
scripts/dev.sh
src/Wallabag/AnnotationBundle/Controller/WallabagAnnotationController.php
src/Wallabag/ApiBundle/Controller/AnnotationRestController.php
src/Wallabag/ApiBundle/Controller/DeveloperController.php
src/Wallabag/ApiBundle/Controller/EntryRestController.php
src/Wallabag/ApiBundle/Controller/UserRestController.php
src/Wallabag/CoreBundle/Command/CleanDuplicatesCommand.php
src/Wallabag/CoreBundle/Command/GenerateUrlHashesCommand.php
src/Wallabag/CoreBundle/Command/InstallCommand.php
src/Wallabag/CoreBundle/Command/ShowUserCommand.php
src/Wallabag/CoreBundle/Controller/ConfigController.php
src/Wallabag/CoreBundle/Controller/EntryController.php
src/Wallabag/CoreBundle/Controller/ExportController.php
src/Wallabag/CoreBundle/Controller/FeedController.php
src/Wallabag/CoreBundle/Controller/SiteCredentialController.php
src/Wallabag/CoreBundle/Controller/TagController.php
src/Wallabag/CoreBundle/Entity/Config.php
src/Wallabag/CoreBundle/Entity/Entry.php
src/Wallabag/CoreBundle/Entity/Tag.php
src/Wallabag/CoreBundle/Entity/TaggingRule.php
src/Wallabag/CoreBundle/Event/Listener/UserLocaleListener.php
src/Wallabag/CoreBundle/Event/Subscriber/CustomDoctrineORMSubscriber.php
src/Wallabag/CoreBundle/Event/Subscriber/DownloadImagesSubscriber.php
src/Wallabag/CoreBundle/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php
src/Wallabag/CoreBundle/Form/Type/EntryFilterType.php
src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
src/Wallabag/CoreBundle/Helper/ContentProxy.php
src/Wallabag/CoreBundle/Helper/DownloadImages.php
src/Wallabag/CoreBundle/Helper/HttpClientFactory.php
src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php
src/Wallabag/CoreBundle/Helper/RuleBasedTagger.php
src/Wallabag/CoreBundle/Helper/TagsAssigner.php
src/Wallabag/CoreBundle/Helper/UrlHasher.php
src/Wallabag/CoreBundle/Repository/EntryRepository.php
src/Wallabag/CoreBundle/Resources/translations/messages.da.yml
src/Wallabag/CoreBundle/Resources/translations/messages.de.yml
src/Wallabag/CoreBundle/Resources/translations/messages.en.yml
src/Wallabag/CoreBundle/Resources/translations/messages.es.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml
src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml
src/Wallabag/CoreBundle/Resources/translations/messages.it.yml
src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml
src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml
src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml
src/Wallabag/CoreBundle/Resources/translations/messages.ru.yml
src/Wallabag/CoreBundle/Resources/translations/messages.th.yml
src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/new_form.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/search_form.html.twig
src/Wallabag/ImportBundle/Controller/BrowserController.php
src/Wallabag/ImportBundle/Controller/ElcuratorController.php [new file with mode: 0644]
src/Wallabag/ImportBundle/Controller/WallabagController.php
src/Wallabag/ImportBundle/Import/AbstractImport.php
src/Wallabag/ImportBundle/Import/BrowserImport.php
src/Wallabag/ImportBundle/Import/ElcuratorImport.php [new file with mode: 0644]
src/Wallabag/ImportBundle/Import/ImportChain.php
src/Wallabag/ImportBundle/Import/PocketImport.php
src/Wallabag/ImportBundle/Resources/config/rabbit.yml
src/Wallabag/ImportBundle/Resources/config/redis.yml
src/Wallabag/ImportBundle/Resources/config/services.yml
src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig [new file with mode: 0644]
src/Wallabag/UserBundle/Controller/ManageController.php
src/Wallabag/UserBundle/Entity/User.php
src/Wallabag/UserBundle/Form/UserType.php
src/Wallabag/UserBundle/Mailer/AuthCodeMailer.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php [new file with mode: 0644]
tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php
tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php
tests/Wallabag/ImportBundle/fixtures/elcurator.json [new file with mode: 0644]

index c80e3e1f53cc28df08b58a6f992756d951ca3a04..9417935b7daa34081e1bbba883f822c5679820d9 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20160401000000 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf($schema->hasTable($this->getTable('entry')), 'Database already initialized');
@@ -167,9 +164,6 @@ SQL
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql("DROP TABLE {$this->getTable('craue_config_setting')}");
index e1bd3e5c6aefd91b276827e43650c5b116291768..5b6d83dcef20a5cb1b7bc9fda18c6175f83ca115 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20160410190541 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -34,9 +31,6 @@ class Version20160410190541 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index d09aefa090c9f7e3c66e1824e228409978ece695..f5f90850dfbb48101bc56ee533185a71fa6bfa35 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20160812120952 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
@@ -34,9 +31,6 @@ class Version20160812120952 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
index 9dc225fdc3288a7e342125db515d3d10d31d0e92..4d7e0f7ee5b3ac9582819b7ec83c3265975bb132 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20160911214952 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $redis = $this->container
@@ -36,9 +33,6 @@ class Version20160911214952 extends WallabagMigration
         $this->skipIf(false !== $rabbitmq && false !== $redis, 'It seems that you already played this migration.');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'import_with_redis';");
index 13f99ce1017c87a16d8d41b95be64807df74ed50..fc5e04aea062b43115abc92bb83a1aa32d0f8d32 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20160916201049 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
@@ -23,9 +20,6 @@ class Version20160916201049 extends WallabagMigration
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'pocket_consumer_key';");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
index 4e19a54a7f375c37ba805960d5b7b8917bd90e38..497cb2a164422ba37ec18cfd035903d4a88016fd 100644 (file)
@@ -11,9 +11,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161001072726 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
@@ -98,9 +95,6 @@ class Version20161001072726 extends WallabagMigration
         $this->addSql('ALTER TABLE ' . $this->getTable('annotation') . ' ADD CONSTRAINT FK_annotation_entry FOREIGN KEY (entry_id) REFERENCES ' . $this->getTable('entry') . ' (id) ON DELETE CASCADE');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         throw new SkipMigrationException('Too complex ...');
index 231aada780b9c02728ade2925f385ffef462db9e..d993363c6bbbe36b7339a10dfdcadba01c1901ad 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161022134138 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
@@ -41,9 +38,6 @@ class Version20161022134138 extends WallabagMigration
         $this->addSql('ALTER TABLE ' . $this->getTable('user') . ' CHANGE `name` `name` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
index a7e3c3c8657078011f81d9f8b82d264d768e74fd..fa028ac0b390797510e95ec78ac1d2aea5085b32 100644 (file)
@@ -12,9 +12,6 @@ class Version20161024212538 extends WallabagMigration
 {
     private $constraintName = 'IDX_user_oauth_client';
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
@@ -32,9 +29,6 @@ class Version20161024212538 extends WallabagMigration
         );
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $clientsTable = $schema->getTable($this->getTable('oauth2_clients'));
index 8d5768627abcaa13fa21c6138565eb36bdfb7e3b..ec58cb2a82856d0e1fe18f13e3464b72aac10ea2 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161031132655 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $images = $this->container
@@ -25,9 +22,6 @@ class Version20161031132655 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('download_images_enabled', 0, 'misc')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'download_images_enabled';");
index e2b18a46018ea5be5973c7e8ca4a2715b5f39914..e0289ec9aec5e672d8675a8ebd01977536263d62 100644 (file)
@@ -12,9 +12,6 @@ class Version20161104073720 extends WallabagMigration
 {
     private $indexName = 'IDX_entry_created_at';
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -23,9 +20,6 @@ class Version20161104073720 extends WallabagMigration
         $entryTable->addIndex(['created_at'], $this->indexName);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 3a3c90dbff6150f535c14a03a35922fcf10d3562..5a4831f413987651e76ce71d1c8450e30e9cefe3 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161106113822 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
@@ -25,9 +22,6 @@ class Version20161106113822 extends WallabagMigration
         ]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
index fc66e7e31d794b893cff2842db406048e3721c33..bafb70da159a1d0ae6e0a74affa182cc1266d6b6 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161117071626 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $share = $this->container
@@ -36,9 +33,6 @@ class Version20161117071626 extends WallabagMigration
         $this->skipIf(false !== $share && false !== $unmark, 'It seems that you already played this migration.');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'share_unmark';");
index 8302408ecb895795eca12c8900d945b3744d18ba..2298447a21c3c920c302c2a308ddfda440295781 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161118134328 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -25,9 +22,6 @@ class Version20161118134328 extends WallabagMigration
         ]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 08a41f48050532c98aca28ca6705ee3614b99d8f..e628f058226bea8a4e2a0ceebbd60e761bde6f80 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161122144743 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $access = $this->container
@@ -25,9 +22,6 @@ class Version20161122144743 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('restricted_access', 0, 'entry')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'restricted_access';");
index 60ddeb087acd01f68813e564cb4ab12d38fc367a..27fe7d2c418d1252bec244e967c1db123cf42283 100644 (file)
@@ -18,9 +18,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161122203647 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $userTable = $schema->getTable($this->getTable('user'));
@@ -31,9 +28,6 @@ class Version20161122203647 extends WallabagMigration
         $userTable->dropColumn('credentials_expired');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $userTable = $schema->getTable($this->getTable('user'));
index ef747154a6e0b0214461d3e4c1f18449713a85b6..e22e842f15842d80ac7a77b8ccfa0b411c14bb58 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161128084725 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
@@ -21,9 +18,6 @@ class Version20161128084725 extends WallabagMigration
         $configTable->addColumn('list_mode', 'integer', ['notnull' => false]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $configTable = $schema->getTable($this->getTable('config'));
index cd43461723380bdb10f324b519d17b4543e70042..2a34d448f7434cd0f12d655e532160afed52d175 100644 (file)
@@ -16,9 +16,6 @@ class Version20161128131503 extends WallabagMigration
         'expires_at' => 'datetime',
     ];
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $userTable = $schema->getTable($this->getTable('user'));
@@ -29,9 +26,6 @@ class Version20161128131503 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $userTable = $schema->getTable($this->getTable('user'));
index e9f1a3020ce8b1f674da2fa2f553ac056a34f7db..0240f599490d8d1f7649378c21000efdb70e19d5 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20161214094402 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -35,9 +32,6 @@ class Version20161214094402 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 1f9e1f6bee3d53ffabe202b07b5b5b2c403748a3..c6003cb357f6e688db737a91dd4c1ef485b9b1bc 100644 (file)
@@ -12,9 +12,6 @@ class Version20161214094403 extends WallabagMigration
 {
     private $indexName = 'IDX_entry_uid';
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -23,9 +20,6 @@ class Version20161214094403 extends WallabagMigration
         $entryTable->addIndex(['uid'], $this->indexName);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 491b9383fc749cd1c127a0484f8f033bb751157e..d8eb34e574cfd61b8f6d75c05bc93d49f4b33b61 100644 (file)
@@ -13,9 +13,6 @@ class Version20170127093841 extends WallabagMigration
     private $indexStarredName = 'IDX_entry_starred';
     private $indexArchivedName = 'IDX_entry_archived';
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -25,9 +22,6 @@ class Version20170127093841 extends WallabagMigration
         $entryTable->addIndex(['is_archived'], $this->indexArchivedName);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 1aa20eb5fc790639cab0a7cdf496a58ad0341bcb..268f8cdea7a72ca5ff65cc14a740cbccef3f5cac 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170327194233 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $scuttle = $this->container
@@ -26,9 +23,6 @@ class Version20170327194233 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('scuttle_url', 'http://scuttle.org', 'entry')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'share_scuttle';");
index c7752664a779e6ecfafb75f9d9c2eec9625207ae..798c72af9e2018893a7c7842c0964eab609ce3b1 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170405182620 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -30,9 +27,6 @@ class Version20170405182620 extends WallabagMigration
         ]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index ad05eadf5e3d4894e2c2c87c93ab7e687f43cbc6..d9fff6c38fb9c49caefd5e8d15d8dadfd29832a3 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170407200919 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -21,9 +18,6 @@ class Version20170407200919 extends WallabagMigration
         $entryTable->dropColumn('is_public');
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index c17325783aaa87f8fd915d4791bfb33409750a7e..2bf05346219b53b2837be21e3b3072f427420711 100644 (file)
@@ -10,17 +10,11 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170420134133 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'download_pictures';");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $downloadPictures = $this->container
index fd238cef61d5fbc539be41ae6944b854a1a1ef0d..a879cd441151323db26680eb94843d1ca487dcde 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170501115751 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf($schema->hasTable($this->getTable('site_credential')), 'It seems that you already played this migration.');
@@ -34,9 +31,6 @@ class Version20170501115751 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $schema->dropTable($this->getTable('site_credential'));
index 541ae1fddb82162d9a648d241f5002f72b45c282..ddc894a659f60bf4558da8a2e44cbe4e85b384a9 100644 (file)
@@ -17,9 +17,6 @@ class Version20170510082609 extends WallabagMigration
         'email_canonical',
     ];
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
@@ -29,9 +26,6 @@ class Version20170510082609 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration only apply to MySQL');
index cb80dd4512f9d4156be15e666986d1e5c2272cbf..9a89cfb8b71e138f6d3075721d41fa4080cd7a02 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170511115400 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -24,9 +21,6 @@ class Version20170511115400 extends WallabagMigration
         ]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 12997c7153e070a06e611337b073ce49ce3b2b3f..f72839b204a55db49640aac499678bd964f91dd4 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170602075214 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $apiUserRegistration = $this->container
@@ -25,9 +22,6 @@ class Version20170602075214 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('api_user_registration', '0', 'api')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'api_user_registration';");
index 153d31b8813f591affc4d213a708a106a018b8c3..099e53296c2f19c6160ce280850bb253d6f19780 100644 (file)
@@ -11,9 +11,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170606155640 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $apiUserRegistration = $this->container
@@ -26,9 +23,6 @@ class Version20170606155640 extends WallabagMigration
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'wallabag_url'");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('wallabag_url', 'wallabag.me', 'misc')");
index 93fe7f26031c44fe426f51ff78601fbc9776b6eb..7a9731d431ddad4460923d6c56c67301498b6ce9 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170719231144 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
@@ -89,9 +86,6 @@ class Version20170719231144 extends WallabagMigration
         );
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         throw new SkipMigrationException('Too complex ...');
index 5fc31de9de75fccd06baf3daed22b16ac1cf5d10..dc20f6d9c28e631a35b564b659466eedbd4a3ae3 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20170824113337 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -37,9 +34,6 @@ class Version20170824113337 extends WallabagMigration
         );
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 6974232a01e13e71084941003a70fcd61329b91f..60d8777f4cd7552f73737723668f0f7b8b0f5268 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20171008195606 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
@@ -29,9 +26,6 @@ class Version20171008195606 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->skipIf('sqlite' === $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.');
index 5ed787b993e32ed51f8379cf3e939be529be5008..5313a3368c6ac7a04d6aadbba8c44037ad0cd7e7 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20171105202000 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -24,9 +21,6 @@ class Version20171105202000 extends WallabagMigration
         ]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 48f10f1de5044ad5fa54dd20f68276e1619165ff..a6d126a50f154f7b1da9dd81d1959e4b2fea2b53 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20171120163128 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $storeArticleHeaders = $this->container
@@ -25,9 +22,6 @@ class Version20171120163128 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('store_article_headers', '0', 'entry')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'store_article_headers';");
index a72463f0c24d9ab9bc9717134d80b17bf2b1d8f4..2ee49d8726818b918644972e371c58641e776cc1 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20171125164500 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $shaarliShareOriginUrl = $this->container
@@ -25,9 +22,6 @@ class Version20171125164500 extends WallabagMigration
         $this->addSql('INSERT INTO ' . $this->getTable('craue_config_setting') . " (name, value, section) VALUES ('shaarli_share_origin_url', '0', 'entry')");
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->addSql('DELETE FROM ' . $this->getTable('craue_config_setting') . " WHERE name = 'shaarli_share_origin_url';");
index 50fe97c76e44194939c446bc8eba19487cf2b6a9..1b8c3b0e167b8097ec9ce9378a32794ad15babda 100755 (executable)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20180405182455 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -37,9 +34,6 @@ class Version20180405182455 extends WallabagMigration
         );
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index d1b09fc78cf68d6a9d70bb5fd6610645192702aa..add161cdc3994ad47f226d8827d36e46c872ba88 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20181128203230 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $this->skipIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'This migration can only be applied on \'mysql\'.');
index 3632e762d9b1df62088a24615e88b5a6751bd353..8c5e28cabade20471807339e45f99c22f98f68f4 100644 (file)
@@ -118,9 +118,6 @@ final class Version20190129120000 extends WallabagMigration
         ],
     ];
 
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         foreach ($this->settings as $setting) {
@@ -137,9 +134,6 @@ final class Version20190129120000 extends WallabagMigration
         }
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $this->skipIf(true, 'These settings are required and should not be removed.');
index d27962dbedbdd94c02e4c4c27410dddbb04c33a0..600fc162152ca9662b22df7f83971893b17cdf34 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20190401105353 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -27,9 +24,6 @@ class Version20190401105353 extends WallabagMigration
         $entryTable->addIndex(['user_id', 'hashed_url'], 'hashed_url_user_id', [], ['lengths' => [null, 40]]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 0e97606e9f9ca882079fd19cf28e2bf99c8480bf..cbb92edc98ce5e223049353c4ebf16b29dc648b0 100644 (file)
@@ -10,9 +10,6 @@ use Wallabag\CoreBundle\Doctrine\WallabagMigration;
  */
 class Version20190601125843 extends WallabagMigration
 {
-    /**
-     * @param Schema $schema
-     */
     public function up(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
@@ -34,9 +31,6 @@ class Version20190601125843 extends WallabagMigration
         $entryTable->addIndex(['user_id', 'hashed_given_url'], 'hashed_given_url_user_id', [], ['lengths' => [null, 40]]);
     }
 
-    /**
-     * @param Schema $schema
-     */
     public function down(Schema $schema)
     {
         $entryTable = $schema->getTable($this->getTable('entry'));
index 642e198d413e2a1c232ef4044346ff748633fc72..0b325afe53db78ef4179a53abd876c70b1d7146c 100644 (file)
@@ -261,6 +261,11 @@ old_sound_rabbit_mq:
             exchange_options:
                 name: 'wallabag.import.wallabag_v2'
                 type: topic
+        import_elcurator:
+            connection: default
+            exchange_options:
+                name: 'wallabag.import.elcurator'
+                type: topic
         import_firefox:
             connection: default
             exchange_options:
@@ -326,6 +331,15 @@ old_sound_rabbit_mq:
                 name: 'wallabag.import.wallabag_v2'
             callback: wallabag_import.consumer.amqp.wallabag_v2
             qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
+        import_elcurator:
+            connection: default
+            exchange_options:
+                name: 'wallabag.import.elcurator'
+                type: topic
+            queue_options:
+                name: 'wallabag.import.elcurator'
+            callback: wallabag_import.consumer.amqp.elcurator
+            qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"}
         import_firefox:
             connection: default
             exchange_options:
index e7fc256a347b4ea2ff323527b6289deac91ea336..0ce9622f38162d888f04bb161579b61e87f3c4e4 100644 (file)
@@ -51,6 +51,7 @@
         "doctrine/orm": "^2.6",
         "doctrine/doctrine-bundle": "^1.9",
         "doctrine/doctrine-cache-bundle": "^1.3",
+        "doctrine/dbal": "2.9.2",
         "twig/extensions": "^1.5",
         "symfony/swiftmailer-bundle": "^3.2",
         "symfony/monolog-bundle": "^3.1",
index ad41e6d53c6e88123b3fe74f7f4dcaa03b356a1d..1e546e8d4915670ecf72dbd8ffd3294d49e47e08 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "02ec26b02dc55d65cb9353ad99be7ebe",
+    "content-hash": "bc03955d5e8ea3079c82f32de2e26c98",
     "packages": [
         {
             "name": "bdunogier/guzzle-site-authenticator",
         },
         {
             "name": "beberlei/assert",
-            "version": "v3.2.3",
+            "version": "v3.2.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/beberlei/assert.git",
-                "reference": "65b8152224aef7d3c197d5db05211d4319711b66"
+                "reference": "99508be011753690fe108ded450f5caaae180cfa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/beberlei/assert/zipball/65b8152224aef7d3c197d5db05211d4319711b66",
-                "reference": "65b8152224aef7d3c197d5db05211d4319711b66",
+                "url": "https://api.github.com/repos/beberlei/assert/zipball/99508be011753690fe108ded450f5caaae180cfa",
+                "reference": "99508be011753690fe108ded450f5caaae180cfa",
                 "shasum": ""
             },
             "require": {
                 "ext-ctype": "*",
-                "ext-intl": "*",
                 "ext-json": "*",
                 "ext-mbstring": "*",
                 "ext-simplexml": "*",
@@ -83,6 +82,9 @@
                 "phpstan/phpstan-shim": "*",
                 "phpunit/phpunit": ">=6.0.0 <8"
             },
+            "suggest": {
+                "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
+            },
             "type": "library",
             "autoload": {
                 "psr-4": {
                 "assertion",
                 "validation"
             ],
-            "time": "2019-08-23T17:56:26+00:00"
+            "time": "2019-10-10T10:33:57+00:00"
         },
         {
             "name": "behat/transliterator",
         },
         {
             "name": "doctrine/cache",
-            "version": "v1.8.0",
+            "version": "1.9.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/cache.git",
-                "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57"
+                "reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57",
-                "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57",
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/89a5c76c39c292f7798f964ab3c836c3f8192a55",
+                "reference": "89a5c76c39c292f7798f964ab3c836c3f8192a55",
                 "shasum": ""
             },
             "require": {
             },
             "require-dev": {
                 "alcaeus/mongo-php-adapter": "^1.1",
-                "doctrine/coding-standard": "^4.0",
+                "doctrine/coding-standard": "^6.0",
                 "mongodb/mongodb": "^1.1",
                 "phpunit/phpunit": "^7.0",
                 "predis/predis": "~1.0"
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.8.x-dev"
+                    "dev-master": "1.9.x-dev"
                 }
             },
             "autoload": {
                 "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": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com"
                     "email": "schmittjoh@gmail.com"
                 }
             ],
-            "description": "Caching library offering an object-oriented API for many cache backends",
-            "homepage": "https://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",
+                "riak",
+                "xcache"
             ],
-            "time": "2018-08-21T18:01:43+00:00"
+            "time": "2019-11-15T14:31:57+00:00"
         },
         {
             "name": "doctrine/collections",
-            "version": "v1.6.2",
+            "version": "1.6.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/collections.git",
-                "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be"
+                "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/collections/zipball/c5e0bc17b1620e97c968ac409acbff28b8b850be",
-                "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be",
+                "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
+                "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7",
                 "shasum": ""
             },
             "require": {
                 "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": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com"
                 "iterators",
                 "php"
             ],
-            "time": "2019-06-09T13:48:14+00:00"
+            "time": "2019-11-13T13:07:11+00:00"
         },
         {
             "name": "doctrine/common",
         },
         {
             "name": "doctrine/event-manager",
-            "version": "v1.0.0",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/event-manager.git",
-                "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3"
+                "reference": "629572819973f13486371cb611386eb17851e85c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3",
-                "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3",
+                "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c",
+                "reference": "629572819973f13486371cb611386eb17851e85c",
                 "shasum": ""
             },
             "require": {
                 "doctrine/common": "<2.9@dev"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^4.0",
+                "doctrine/coding-standard": "^6.0",
                 "phpunit/phpunit": "^7.0"
             },
             "type": "library",
                 "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": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com"
                     "email": "ocramius@gmail.com"
                 }
             ],
-            "description": "Doctrine Event Manager component",
+            "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": [
                 "event",
-                "eventdispatcher",
-                "eventmanager"
+                "event dispatcher",
+                "event manager",
+                "event system",
+                "events"
             ],
-            "time": "2018-06-11T11:59:03+00:00"
+            "time": "2019-11-10T09:48:07+00:00"
         },
         {
             "name": "doctrine/inflector",
-            "version": "v1.3.0",
+            "version": "1.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/inflector.git",
-                "reference": "5527a48b7313d15261292c149e55e26eae771b0a"
+                "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a",
-                "reference": "5527a48b7313d15261292c149e55e26eae771b0a",
+                "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
+                "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
                 "shasum": ""
             },
             "require": {
                 "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": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com"
                 "singularize",
                 "string"
             ],
-            "time": "2018-01-09T20:05:19+00:00"
+            "time": "2019-10-30T19:59:35+00:00"
         },
         {
             "name": "doctrine/instantiator",
-            "version": "1.2.0",
+            "version": "1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/instantiator.git",
-                "reference": "a2c590166b2133a4633738648b6b064edae0814a"
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a",
-                "reference": "a2c590166b2133a4633738648b6b064edae0814a",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1",
+                "reference": "ae466f726242e637cebdd526a7d991b9433bacf1",
                 "shasum": ""
             },
             "require": {
                 "constructor",
                 "instantiate"
             ],
-            "time": "2019-03-17T17:37:11+00:00"
+            "time": "2019-10-21T16:45:58+00:00"
         },
         {
             "name": "doctrine/lexer",
         },
         {
             "name": "doctrine/orm",
-            "version": "v2.6.4",
+            "version": "v2.6.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/orm.git",
-                "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43"
+                "reference": "2d9b9351831d1230881c52f006011cbf72fe944e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/orm/zipball/b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43",
-                "reference": "b52ef5a1002f99ab506a5a2d6dba5a2c236c5f43",
+                "url": "https://api.github.com/repos/doctrine/orm/zipball/2d9b9351831d1230881c52f006011cbf72fe944e",
+                "reference": "2d9b9351831d1230881c52f006011cbf72fe944e",
                 "shasum": ""
             },
             "require": {
                 "database",
                 "orm"
             ],
-            "time": "2019-09-20T14:30:26+00:00"
+            "time": "2019-11-18T22:01:21+00:00"
         },
         {
             "name": "doctrine/persistence",
-            "version": "1.1.1",
+            "version": "1.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/persistence.git",
-                "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48"
+                "reference": "43526ae63312942e5316100bb3ed589ba1aba491"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/persistence/zipball/3da7c9d125591ca83944f477e65ed3d7b4617c48",
-                "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48",
+                "url": "https://api.github.com/repos/doctrine/persistence/zipball/43526ae63312942e5316100bb3ed589ba1aba491",
+                "reference": "43526ae63312942e5316100bb3ed589ba1aba491",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
                 "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": "Guilherme Blanco",
-                    "email": "guilhermeblanco@gmail.com"
-                },
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com"
                 "orm",
                 "persistence"
             ],
-            "time": "2019-04-23T08:28:24+00:00"
+            "time": "2019-04-23T12:39:21+00:00"
         },
         {
             "name": "doctrine/reflection",
         },
         {
             "name": "friendsofsymfony/rest-bundle",
-            "version": "2.5.0",
+            "version": "2.6.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git",
-                "reference": "a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3"
+                "reference": "54758949bff9fc520997415341323eebf3f54892"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3",
-                "reference": "a5fc73b84bdb2f0fdf58a717b322ceb6997f7bf3",
+                "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/54758949bff9fc520997415341323eebf3f54892",
+                "reference": "54758949bff9fc520997415341323eebf3f54892",
                 "shasum": ""
             },
             "require": {
                 "doctrine/inflector": "^1.0",
-                "php": "^5.5.9|~7.0",
+                "php": "^7.1",
                 "psr/log": "^1.0",
-                "symfony/config": "^3.4|^4.0",
-                "symfony/debug": "^3.4|^4.0",
-                "symfony/dependency-injection": "^3.4|^4.0",
-                "symfony/event-dispatcher": "^3.4|^4.0",
-                "symfony/finder": "^3.4|^4.0",
-                "symfony/framework-bundle": "^3.4|^4.0",
-                "symfony/http-foundation": "^3.4|^4.0",
-                "symfony/http-kernel": "^3.4|^4.0",
-                "symfony/routing": "^3.4|^4.0",
-                "symfony/security-core": "^3.4|^4.0",
-                "symfony/templating": "^3.4|^4.0",
+                "symfony/config": "^3.4|^4.3",
+                "symfony/debug": "^3.4|^4.3",
+                "symfony/dependency-injection": "^3.4|^4.3",
+                "symfony/event-dispatcher": "^3.4|^4.3",
+                "symfony/finder": "^3.4|^4.3",
+                "symfony/framework-bundle": "^3.4|^4.3",
+                "symfony/http-foundation": "^3.4|^4.3",
+                "symfony/http-kernel": "^3.4|^4.3",
+                "symfony/routing": "^3.4|^4.3",
+                "symfony/security-core": "^3.4|^4.3",
                 "willdurand/jsonp-callback-validator": "^1.0",
                 "willdurand/negotiation": "^2.0"
             },
                 "phpoption/phpoption": "^1.1",
                 "psr/http-message": "^1.0",
                 "sensio/framework-extra-bundle": "^3.0.13|^4.0|^5.0",
-                "symfony/asset": "^3.4|^4.0",
-                "symfony/browser-kit": "^3.4|^4.0",
-                "symfony/css-selector": "^3.4|^4.0",
-                "symfony/dependency-injection": "^2.7.20|^3.0|^4.0",
-                "symfony/expression-language": "~2.7|^3.0|^4.0",
-                "symfony/form": "^3.4|^4.0",
+                "symfony/asset": "^3.4|^4.3",
+                "symfony/browser-kit": "^3.4|^4.3",
+                "symfony/css-selector": "^3.4|^4.3",
+                "symfony/expression-language": "^3.4|^4.3",
+                "symfony/form": "^3.4|^4.3",
                 "symfony/phpunit-bridge": "^4.1.8",
-                "symfony/security-bundle": "^3.4|^4.0",
-                "symfony/serializer": "^2.7.11|^3.0.4|^4.0",
-                "symfony/twig-bundle": "^3.4|^4.0",
-                "symfony/validator": "^3.4|^4.0",
-                "symfony/web-profiler-bundle": "^3.4|^4.0",
-                "symfony/yaml": "^3.4|^4.0"
+                "symfony/security-bundle": "^3.4|^4.3",
+                "symfony/serializer": "^3.4|^4.3",
+                "symfony/templating": "^3.4|^4.3",
+                "symfony/twig-bundle": "^3.4|^4.3",
+                "symfony/validator": "^3.4|^4.3",
+                "symfony/web-profiler-bundle": "^3.4|^4.3",
+                "symfony/yaml": "^3.4|^4.3"
             },
             "suggest": {
                 "jms/serializer-bundle": "Add support for advanced serialization capabilities, recommended, requires ^2.0|^3.0",
             "type": "symfony-bundle",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.5-dev"
+                    "dev-master": "2.6-dev"
                 }
             },
             "autoload": {
                     "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"
+                },
+                {
+                    "name": "FriendsOfSymfony Community",
+                    "homepage": "https://github.com/friendsofsymfony/FOSRestBundle/contributors"
                 }
             ],
             "description": "This Bundle provides various tools to rapidly develop RESTful API's with Symfony",
             "keywords": [
                 "rest"
             ],
-            "time": "2019-01-03T13:05:12+00:00"
+            "time": "2019-10-21T08:22:30+00:00"
         },
         {
             "name": "friendsofsymfony/user-bundle",
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "5.3.3",
+            "version": "5.3.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9"
+                "reference": "b87eda7a7162f95574032da17e9323c9899cb6b2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/93bbdb30d59be6cd9839495306c65f2907370eb9",
-                "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b87eda7a7162f95574032da17e9323c9899cb6b2",
+                "reference": "b87eda7a7162f95574032da17e9323c9899cb6b2",
                 "shasum": ""
             },
             "require": {
                 "rest",
                 "web service"
             ],
-            "time": "2018-07-31T13:33:10+00:00"
+            "time": "2019-10-30T09:32:00+00:00"
         },
         {
             "name": "guzzlehttp/promises",
         },
         {
             "name": "j0k3r/graby",
-            "version": "2.0.2",
+            "version": "2.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/j0k3r/graby.git",
-                "reference": "5ed35e8959be03cb36335605a70e05571eb8157a"
+                "reference": "8dcacf79bd2bc18438dc3c93cdee1fa59f9a848b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/j0k3r/graby/zipball/5ed35e8959be03cb36335605a70e05571eb8157a",
-                "reference": "5ed35e8959be03cb36335605a70e05571eb8157a",
+                "url": "https://api.github.com/repos/j0k3r/graby/zipball/8dcacf79bd2bc18438dc3c93cdee1fa59f9a848b",
+                "reference": "8dcacf79bd2bc18438dc3c93cdee1fa59f9a848b",
                 "shasum": ""
             },
             "require": {
                 }
             ],
             "description": "Graby helps you extract article content from web pages",
-            "time": "2019-07-22T07:05:28+00:00"
+            "time": "2019-11-12T13:10:23+00:00"
         },
         {
             "name": "j0k3r/graby-site-config",
-            "version": "1.0.91",
+            "version": "1.0.94",
             "source": {
                 "type": "git",
                 "url": "https://github.com/j0k3r/graby-site-config.git",
-                "reference": "2f21c86f0b25911c413d94957a326b812ddbd54d"
+                "reference": "429ee12aa7d9dd95596b15ec0889bd7202d5723a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/2f21c86f0b25911c413d94957a326b812ddbd54d",
-                "reference": "2f21c86f0b25911c413d94957a326b812ddbd54d",
+                "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/429ee12aa7d9dd95596b15ec0889bd7202d5723a",
+                "reference": "429ee12aa7d9dd95596b15ec0889bd7202d5723a",
                 "shasum": ""
             },
             "require": {
                 }
             ],
             "description": "Graby site config files",
-            "time": "2019-09-04T07:11:32+00:00"
+            "time": "2019-11-12T06:56:59+00:00"
         },
         {
             "name": "j0k3r/httplug-ssrf-plugin",
         },
         {
             "name": "monolog/monolog",
-            "version": "1.24.0",
+            "version": "1.25.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/Seldaek/monolog.git",
-                "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
+                "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
-                "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
+                "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287",
                 "shasum": ""
             },
             "require": {
                 "logging",
                 "psr-3"
             ],
-            "time": "2018-11-05T09:00:11+00:00"
+            "time": "2019-11-13T10:00:05+00:00"
         },
         {
             "name": "nelmio/api-doc-bundle",
         },
         {
             "name": "paragonie/constant_time_encoding",
-            "version": "v2.2.3",
+            "version": "v2.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/paragonie/constant_time_encoding.git",
-                "reference": "55af0dc01992b4d0da7f6372e2eac097bbbaffdb"
+                "reference": "47a1cedd2e4d52688eb8c96469c05ebc8fd28fa2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/55af0dc01992b4d0da7f6372e2eac097bbbaffdb",
-                "reference": "55af0dc01992b4d0da7f6372e2eac097bbbaffdb",
+                "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/47a1cedd2e4d52688eb8c96469c05ebc8fd28fa2",
+                "reference": "47a1cedd2e4d52688eb8c96469c05ebc8fd28fa2",
                 "shasum": ""
             },
             "require": {
-                "php": "^7"
+                "php": "^7|^8"
             },
             "require-dev": {
                 "phpunit/phpunit": "^6|^7",
-                "vimeo/psalm": "^1|^2"
+                "vimeo/psalm": "^1|^2|^3"
             },
             "type": "library",
             "autoload": {
                 "hex2bin",
                 "rfc4648"
             ],
-            "time": "2019-01-03T20:26:31+00:00"
+            "time": "2019-11-06T19:20:29+00:00"
         },
         {
             "name": "paragonie/random_compat",
         },
         {
             "name": "php-amqplib/php-amqplib",
-            "version": "v2.10.0",
+            "version": "v2.10.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-amqplib/php-amqplib.git",
-                "reference": "04e5366f032906d5f716890427e425e71307d3a8"
+                "reference": "6e2b2501e021e994fb64429e5a78118f83b5c200"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/04e5366f032906d5f716890427e425e71307d3a8",
-                "reference": "04e5366f032906d5f716890427e425e71307d3a8",
+                "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/6e2b2501e021e994fb64429e5a78118f83b5c200",
+                "reference": "6e2b2501e021e994fb64429e5a78118f83b5c200",
                 "shasum": ""
             },
             "require": {
             "require-dev": {
                 "ext-curl": "*",
                 "nategood/httpful": "^0.2.20",
-                "phpdocumentor/phpdocumentor": "dev-master",
                 "phpunit/phpunit": "^5.7|^6.5|^7.0",
                 "squizlabs/php_codesniffer": "^2.5"
             },
                 "queue",
                 "rabbitmq"
             ],
-            "time": "2019-08-08T18:28:18+00:00"
+            "time": "2019-10-10T13:23:40+00:00"
         },
         {
             "name": "php-amqplib/rabbitmq-bundle",
         },
         {
             "name": "phpoption/phpoption",
-            "version": "1.5.0",
+            "version": "1.5.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/schmittjoh/php-option.git",
-                "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
+                "reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
-                "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
+                "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/2ba2586380f8d2b44ad1b9feb61c371020b27793",
+                "reference": "2ba2586380f8d2b44ad1b9feb61c371020b27793",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "4.7.*"
+                "phpunit/phpunit": "^4.7|^5.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.3-dev"
+                    "dev-master": "1.5-dev"
                 }
             },
             "autoload": {
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
-                "Apache2"
+                "Apache-2.0"
             ],
             "authors": [
                 {
                 "php",
                 "type"
             ],
-            "time": "2015-07-25T16:39:46+00:00"
+            "time": "2019-11-06T22:27:00+00:00"
         },
         {
             "name": "phpzip/phpzip",
         },
         {
             "name": "psr/log",
-            "version": "1.1.0",
+            "version": "1.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/php-fig/log.git",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
+                "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
-                "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
+                "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
                 "shasum": ""
             },
             "require": {
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.0.x-dev"
+                    "dev-master": "1.1.x-dev"
                 }
             },
             "autoload": {
                 "psr",
                 "psr-3"
             ],
-            "time": "2018-11-20T15:27:04+00:00"
+            "time": "2019-11-01T11:05:21+00:00"
         },
         {
             "name": "psr/simple-cache",
         },
         {
             "name": "scheb/two-factor-bundle",
-            "version": "v4.7.1",
+            "version": "v4.8.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/scheb/two-factor-bundle.git",
-                "reference": "170895e91bdbe2c21983f195271d42e2fcfb3d62"
+                "reference": "2864c770fedb723ac05aa56ff2761e4a8e1537ca"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/scheb/two-factor-bundle/zipball/170895e91bdbe2c21983f195271d42e2fcfb3d62",
-                "reference": "170895e91bdbe2c21983f195271d42e2fcfb3d62",
+                "url": "https://api.github.com/repos/scheb/two-factor-bundle/zipball/2864c770fedb723ac05aa56ff2761e4a8e1537ca",
+                "reference": "2864c770fedb723ac05aa56ff2761e4a8e1537ca",
                 "shasum": ""
             },
             "require": {
             "require-dev": {
                 "doctrine/lexer": "^1.0.1",
                 "doctrine/orm": "^2.6",
+                "escapestudios/symfony2-coding-standard": "^3.9",
                 "phpunit/phpunit": "^7.0|^8.0",
+                "squizlabs/php_codesniffer": "^3.5",
                 "swiftmailer/swiftmailer": "^6.0",
                 "symfony/yaml": "^3.4|^4.0"
             },
             "autoload": {
                 "psr-4": {
                     "Scheb\\TwoFactorBundle\\": ""
-                }
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "two-factor",
                 "two-step"
             ],
-            "time": "2019-09-02T18:36:37+00:00"
+            "time": "2019-11-07T19:29:43+00:00"
         },
         {
             "name": "sensio/distribution-bundle",
         },
         {
             "name": "sensiolabs/security-checker",
-            "version": "v6.0.2",
+            "version": "v6.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sensiolabs/security-checker.git",
-                "reference": "ce8d0552dcb8d3677ab9adb6d19a5837949bfec4"
+                "reference": "a576c01520d9761901f269c4934ba55448be4a54"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/ce8d0552dcb8d3677ab9adb6d19a5837949bfec4",
-                "reference": "ce8d0552dcb8d3677ab9adb6d19a5837949bfec4",
+                "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/a576c01520d9761901f269c4934ba55448be4a54",
+                "reference": "a576c01520d9761901f269c4934ba55448be4a54",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.1.3",
-                "symfony/console": "^2.8|^3.4|^4.2",
-                "symfony/http-client": "^4.3",
-                "symfony/mime": "^4.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": [
                 }
             ],
             "description": "A security checker for your composer.lock",
-            "time": "2019-06-08T06:46:26+00:00"
+            "time": "2019-11-01T13:20:14+00:00"
         },
         {
             "name": "sentry/sdk",
         },
         {
             "name": "sentry/sentry",
-            "version": "2.2.1",
+            "version": "2.2.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/getsentry/sentry-php.git",
-                "reference": "5896f9f0a00a7525797764ba42091dfbde22a746"
+                "reference": "a74999536b9119257cb1a4b1aa038e4a08439f67"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/5896f9f0a00a7525797764ba42091dfbde22a746",
-                "reference": "5896f9f0a00a7525797764ba42091dfbde22a746",
+                "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/a74999536b9119257cb1a4b1aa038e4a08439f67",
+                "reference": "a74999536b9119257cb1a4b1aa038e4a08439f67",
                 "shasum": ""
             },
             "require": {
                 "symfony/phpunit-bridge": "^4.3",
                 "vimeo/psalm": "^3.4"
             },
+            "suggest": {
+                "monolog/monolog": "Allow sending log messages to Sentry by using the included Monolog handler."
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
                 "logging",
                 "sentry"
             ],
-            "time": "2019-09-23T11:52:12+00:00"
+            "time": "2019-11-04T10:30:51+00:00"
         },
         {
             "name": "sentry/sentry-symfony",
         },
         {
             "name": "simplepie/simplepie",
-            "version": "1.5.2",
+            "version": "1.5.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/simplepie/simplepie.git",
-                "reference": "0e8fe72132dad765d25db4cabc69a91139af1263"
+                "reference": "173663382a9346acd53df60c7ffb20689c9cf1f6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/simplepie/simplepie/zipball/0e8fe72132dad765d25db4cabc69a91139af1263",
-                "reference": "0e8fe72132dad765d25db4cabc69a91139af1263",
+                "url": "https://api.github.com/repos/simplepie/simplepie/zipball/173663382a9346acd53df60c7ffb20689c9cf1f6",
+                "reference": "173663382a9346acd53df60c7ffb20689c9cf1f6",
                 "shasum": ""
             },
             "require": {
                 "feeds",
                 "rss"
             ],
-            "time": "2018-08-02T05:43:58+00:00"
+            "time": "2019-09-22T23:21:30+00:00"
         },
         {
             "name": "smalot/pdfparser",
         },
         {
             "name": "swiftmailer/swiftmailer",
-            "version": "v6.2.1",
+            "version": "v6.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/swiftmailer/swiftmailer.git",
-                "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a"
+                "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
-                "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a",
+                "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
+                "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9",
                 "shasum": ""
             },
             "require": {
                 "mail",
                 "mailer"
             ],
-            "time": "2019-04-21T09:21:45+00:00"
+            "time": "2019-11-12T09:31:26+00:00"
         },
         {
             "name": "symfony/http-client",
-            "version": "v4.3.4",
+            "version": "v4.3.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client.git",
-                "reference": "9a4fa769269ed730196a5c52c742b30600cf1e87"
+                "reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client/zipball/9a4fa769269ed730196a5c52c742b30600cf1e87",
-                "reference": "9a4fa769269ed730196a5c52c742b30600cf1e87",
+                "url": "https://api.github.com/repos/symfony/http-client/zipball/ae3a9cd491f1aadb5583f34a6bda5cca34081ce8",
+                "reference": "ae3a9cd491f1aadb5583f34a6bda5cca34081ce8",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.1.3",
                 "psr/log": "^1.0",
-                "symfony/http-client-contracts": "^1.1.6",
+                "symfony/http-client-contracts": "^1.1.7",
                 "symfony/polyfill-php73": "^1.11"
             },
             "provide": {
             ],
             "description": "Symfony HttpClient component",
             "homepage": "https://symfony.com",
-            "time": "2019-08-20T14:27:59+00:00"
+            "time": "2019-11-08T08:23:45+00:00"
         },
         {
             "name": "symfony/http-client-contracts",
-            "version": "v1.1.6",
+            "version": "v1.1.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/http-client-contracts.git",
-                "reference": "6005fe61a33724405d56eb5b055d5d370192a1bd"
+                "reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/6005fe61a33724405d56eb5b055d5d370192a1bd",
-                "reference": "6005fe61a33724405d56eb5b055d5d370192a1bd",
+                "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/088bae75cfa2ec5eb6d33dce17dbd8613150ce6e",
+                "reference": "088bae75cfa2ec5eb6d33dce17dbd8613150ce6e",
                 "shasum": ""
             },
             "require": {
                 "interoperability",
                 "standards"
             ],
-            "time": "2019-08-08T10:05:21+00:00"
+            "time": "2019-11-07T12:44:51+00:00"
         },
         {
             "name": "symfony/mime",
-            "version": "v4.3.4",
+            "version": "v4.3.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/mime.git",
-                "reference": "987a05df1c6ac259b34008b932551353f4f408df"
+                "reference": "22aecf6b11638ef378fab25d6c5a2da8a31a1448"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df",
-                "reference": "987a05df1c6ac259b34008b932551353f4f408df",
+                "url": "https://api.github.com/repos/symfony/mime/zipball/22aecf6b11638ef378fab25d6c5a2da8a31a1448",
+                "reference": "22aecf6b11638ef378fab25d6c5a2da8a31a1448",
                 "shasum": ""
             },
             "require": {
                 "mime",
                 "mime-type"
             ],
-            "time": "2019-08-22T08:16:11+00:00"
+            "time": "2019-11-12T13:10:02+00:00"
         },
         {
             "name": "symfony/monolog-bundle",
-            "version": "v3.4.0",
+            "version": "v3.5.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/monolog-bundle.git",
-                "reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d"
+                "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
-                "reference": "7fbecb371c1c614642c93c6b2cbcdf723ae8809d",
+                "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
+                "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd",
                 "shasum": ""
             },
             "require": {
-                "monolog/monolog": "~1.22",
+                "monolog/monolog": "~1.22 || ~2.0",
                 "php": ">=5.6",
-                "symfony/config": "~3.4|~4.0",
-                "symfony/dependency-injection": "~3.4.10|^4.0.10",
-                "symfony/http-kernel": "~3.4|~4.0",
-                "symfony/monolog-bridge": "~3.4|~4.0"
+                "symfony/config": "~3.4 || ~4.0 || ^5.0",
+                "symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0",
+                "symfony/http-kernel": "~3.4 || ~4.0 || ^5.0",
+                "symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0"
             },
             "require-dev": {
-                "symfony/console": "~3.4|~4.0",
-                "symfony/phpunit-bridge": "^3.4.19|^4.0",
-                "symfony/yaml": "~3.4|~4.0"
+                "symfony/console": "~3.4 || ~4.0 || ^5.0",
+                "symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0",
+                "symfony/yaml": "~3.4 || ~4.0 || ^5.0"
             },
             "type": "symfony-bundle",
             "extra": {
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                },
                 {
                     "name": "Fabien Potencier",
                     "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
                 }
             ],
             "description": "Symfony MonologBundle",
                 "log",
                 "logging"
             ],
-            "time": "2019-06-20T12:18:19+00:00"
+            "time": "2019-11-13T13:11:14+00:00"
         },
         {
             "name": "symfony/polyfill-apcu",
         },
         {
             "name": "symfony/swiftmailer-bundle",
-            "version": "v3.2.8",
+            "version": "v3.3.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/swiftmailer-bundle.git",
-                "reference": "cb125b3648f132fb8070b55393f20cb310907d3b"
+                "reference": "defa9bdfc0191ed70b389cb93c550c6c82cf1745"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/cb125b3648f132fb8070b55393f20cb310907d3b",
-                "reference": "cb125b3648f132fb8070b55393f20cb310907d3b",
+                "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/defa9bdfc0191ed70b389cb93c550c6c82cf1745",
+                "reference": "defa9bdfc0191ed70b389cb93c550c6c82cf1745",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.0.0",
                 "swiftmailer/swiftmailer": "^6.1.3",
-                "symfony/config": "~2.8|~3.3|~4.0",
-                "symfony/dependency-injection": "~2.7|~3.3|~4.0",
-                "symfony/http-kernel": "~2.7|~3.3|~4.0"
+                "symfony/config": "^3.4|^4.0|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+                "symfony/http-kernel": "^3.4|^4.0|^5.0"
             },
             "conflict": {
                 "twig/twig": "<1.41|<2.10"
             },
             "require-dev": {
-                "symfony/console": "~2.7|~3.3|~4.0",
-                "symfony/framework-bundle": "~2.7|~3.3|~4.0",
-                "symfony/phpunit-bridge": "~3.3|~4.0",
-                "symfony/yaml": "~2.7|~3.3|~4.0"
+                "symfony/console": "^3.4|^4.0|^5.0",
+                "symfony/framework-bundle": "^3.4|^4.0|^5.0",
+                "symfony/phpunit-bridge": "^3.4.32|^4.3.5|^5.0",
+                "symfony/yaml": "^3.4|^4.0|^5.0"
             },
             "suggest": {
                 "psr/log": "Allows logging"
             "type": "symfony-bundle",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.2-dev"
+                    "dev-master": "3.3-dev"
                 }
             },
             "autoload": {
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
-                },
                 {
                     "name": "Fabien Potencier",
                     "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
                 }
             ],
             "description": "Symfony SwiftmailerBundle",
             "homepage": "http://symfony.com",
-            "time": "2019-06-18T15:27:04+00:00"
+            "time": "2019-11-07T21:01:35+00:00"
         },
         {
             "name": "symfony/symfony",
-            "version": "v3.4.32",
+            "version": "v3.4.35",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/symfony.git",
-                "reference": "2815d1fa34d417b8b87450667f166edbefff3177"
+                "reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/symfony/zipball/2815d1fa34d417b8b87450667f166edbefff3177",
-                "reference": "2815d1fa34d417b8b87450667f166edbefff3177",
+                "url": "https://api.github.com/repos/symfony/symfony/zipball/2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
+                "reference": "2adc85d49cbe14e346068fa7e9c2e1f08ab31de6",
                 "shasum": ""
             },
             "require": {
             "keywords": [
                 "framework"
             ],
-            "time": "2019-10-07T14:42:16+00:00"
+            "time": "2019-11-13T08:45:05+00:00"
         },
         {
             "name": "true/punycode",
         },
         {
             "name": "twig/twig",
-            "version": "v2.12.0",
+            "version": "v2.12.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/twigphp/Twig.git",
-                "reference": "c7a85fd08348ca04b4d8f234f49583d9910906aa"
+                "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/twigphp/Twig/zipball/c7a85fd08348ca04b4d8f234f49583d9910906aa",
-                "reference": "c7a85fd08348ca04b4d8f234f49583d9910906aa",
+                "url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
+                "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed",
                 "shasum": ""
             },
             "require": {
             "keywords": [
                 "templating"
             ],
-            "time": "2019-10-05T16:42:38+00:00"
+            "time": "2019-11-11T16:52:09+00:00"
         },
         {
             "name": "wallabag/php-mobi",
         },
         {
             "name": "zendframework/zend-code",
-            "version": "3.3.2",
+            "version": "3.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-code.git",
-                "reference": "936fa7ad4d53897ea3e3eb41b5b760828246a20b"
+                "reference": "46feaeecea14161734b56c1ace74f28cb329f194"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-code/zipball/936fa7ad4d53897ea3e3eb41b5b760828246a20b",
-                "reference": "936fa7ad4d53897ea3e3eb41b5b760828246a20b",
+                "url": "https://api.github.com/repos/zendframework/zend-code/zipball/46feaeecea14161734b56c1ace74f28cb329f194",
+                "reference": "46feaeecea14161734b56c1ace74f28cb329f194",
                 "shasum": ""
             },
             "require": {
             "require-dev": {
                 "doctrine/annotations": "^1.0",
                 "ext-phar": "*",
-                "phpunit/phpunit": "^7.5.15",
+                "phpunit/phpunit": "^7.5.16 || ^8.4",
                 "zendframework/zend-coding-standard": "^1.0",
                 "zendframework/zend-stdlib": "^2.7 || ^3.0"
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.3.x-dev",
-                    "dev-develop": "3.4.x-dev"
+                    "dev-master": "3.4.x-dev",
+                    "dev-develop": "3.5.x-dev"
                 }
             },
             "autoload": {
                 "code",
                 "zf"
             ],
-            "time": "2019-08-31T14:14:34+00:00"
+            "time": "2019-10-05T23:18:22+00:00"
         },
         {
             "name": "zendframework/zend-diactoros",
-            "version": "2.1.3",
+            "version": "2.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-diactoros.git",
-                "reference": "279723778c40164bcf984a2df12ff2c6ec5e61c1"
+                "reference": "66eded992a75bfe75a829005a2884aae5ca86daa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/279723778c40164bcf984a2df12ff2c6ec5e61c1",
-                "reference": "279723778c40164bcf984a2df12ff2c6ec5e61c1",
+                "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/66eded992a75bfe75a829005a2884aae5ca86daa",
+                "reference": "66eded992a75bfe75a829005a2884aae5ca86daa",
                 "shasum": ""
             },
             "require": {
                 "psr/http-message-implementation": "1.0"
             },
             "require-dev": {
+                "ext-curl": "*",
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "http-interop/http-factory-tests": "^0.5.0",
                 "psr",
                 "psr-7"
             ],
-            "time": "2019-07-10T16:13:25+00:00"
+            "time": "2019-11-12T17:26:16+00:00"
         },
         {
             "name": "zendframework/zend-eventmanager",
         },
         {
             "name": "composer/xdebug-handler",
-            "version": "1.3.3",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/xdebug-handler.git",
-                "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f"
+                "reference": "cbe23383749496fe0f373345208b79568e4bc248"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f",
-                "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248",
+                "reference": "cbe23383749496fe0f373345208b79568e4bc248",
                 "shasum": ""
             },
             "require": {
-                "php": "^5.3.2 || ^7.0",
+                "php": "^5.3.2 || ^7.0 || ^8.0",
                 "psr/log": "^1.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8"
             },
             "type": "library",
             "autoload": {
                     "email": "john-stevenson@blueyonder.co.uk"
                 }
             ],
-            "description": "Restarts a process without xdebug.",
+            "description": "Restarts a process without Xdebug.",
             "keywords": [
                 "Xdebug",
                 "performance"
             ],
-            "time": "2019-05-27T17:52:04+00:00"
+            "time": "2019-11-06T16:40:04+00:00"
         },
         {
             "name": "dama/doctrine-test-bundle",
         },
         {
             "name": "doctrine/data-fixtures",
-            "version": "v1.3.2",
+            "version": "1.3.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/data-fixtures.git",
-                "reference": "09b16943b27f3d80d63988d100ff256148c2f78b"
+                "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/09b16943b27f3d80d63988d100ff256148c2f78b",
-                "reference": "09b16943b27f3d80d63988d100ff256148c2f78b",
+                "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f0ee99c64922fc3f863715232b615c478a61b0a3",
+                "reference": "f0ee99c64922fc3f863715232b615c478a61b0a3",
                 "shasum": ""
             },
             "require": {
                 "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": "^7.0"
             },
             "keywords": [
                 "database"
             ],
-            "time": "2019-07-10T18:30:35+00:00"
+            "time": "2019-10-24T04:52:28+00:00"
         },
         {
             "name": "doctrine/doctrine-fixtures-bundle",
-            "version": "3.2.2",
+            "version": "3.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
-                "reference": "90e4a4f968b2dae40e290a6ee516957af043f16c"
+                "reference": "8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/90e4a4f968b2dae40e290a6ee516957af043f16c",
-                "reference": "90e4a4f968b2dae40e290a6ee516957af043f16c",
+                "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70",
+                "reference": "8f07fcfdac7f3591f3c4bf13a50cbae05f65ed70",
                 "shasum": ""
             },
             "require": {
                 "doctrine/data-fixtures": "^1.3",
-                "doctrine/doctrine-bundle": "^1.6",
+                "doctrine/doctrine-bundle": "^1.11|^2.0",
                 "doctrine/orm": "^2.6.0",
                 "php": "^7.1",
-                "symfony/doctrine-bridge": "~3.4|^4.1",
-                "symfony/framework-bundle": "^3.4|^4.1"
+                "symfony/config": "^3.4|^4.3|^5.0",
+                "symfony/console": "^3.4|^4.3|^5.0",
+                "symfony/dependency-injection": "^3.4|^4.3|^5.0",
+                "symfony/doctrine-bridge": "^3.4|^4.1|^5.0",
+                "symfony/http-kernel": "^3.4|^4.3|^5.0"
             },
             "require-dev": {
                 "doctrine/coding-standard": "^6.0",
                 "phpunit/phpunit": "^7.4",
-                "symfony/phpunit-bridge": "^4.1"
+                "symfony/phpunit-bridge": "^4.1|^5.0"
             },
             "type": "symfony-bundle",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.2.x-dev"
+                    "dev-master": "3.3.x-dev"
                 }
             },
             "autoload": {
             ],
             "authors": [
                 {
-                    "name": "Symfony Community",
-                    "homepage": "http://symfony.com/contributors"
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 },
                 {
                     "name": "Doctrine Project",
                     "homepage": "http://www.doctrine-project.org"
                 },
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "name": "Symfony Community",
+                    "homepage": "http://symfony.com/contributors"
                 }
             ],
             "description": "Symfony DoctrineFixturesBundle",
                 "Fixture",
                 "persistence"
             ],
-            "time": "2019-06-12T12:03:37+00:00"
+            "time": "2019-11-13T15:46:58+00:00"
         },
         {
             "name": "friendsofphp/php-cs-fixer",
-            "version": "v2.15.3",
+            "version": "v2.16.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
-                "reference": "705490b0f282f21017d73561e9498d2b622ee34c"
+                "reference": "ceaff36bee1ed3f1bbbedca36d2528c0826c336d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/705490b0f282f21017d73561e9498d2b622ee34c",
-                "reference": "705490b0f282f21017d73561e9498d2b622ee34c",
+                "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/ceaff36bee1ed3f1bbbedca36d2528c0826c336d",
+                "reference": "ceaff36bee1ed3f1bbbedca36d2528c0826c336d",
                 "shasum": ""
             },
             "require": {
                 }
             ],
             "description": "A tool to automatically fix PHP code style",
-            "time": "2019-08-31T12:51:54+00:00"
+            "time": "2019-11-03T13:31:09+00:00"
         },
         {
             "name": "m6web/redis-mock",
-            "version": "v4.6.1",
+            "version": "v4.7.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/M6Web/RedisMock.git",
-                "reference": "5f8821e8a39055ca4ef0d4b51dbc063aa000a2dc"
+                "reference": "057ad8e1bea903aee54642e310d900bdb794372c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/M6Web/RedisMock/zipball/5f8821e8a39055ca4ef0d4b51dbc063aa000a2dc",
-                "reference": "5f8821e8a39055ca4ef0d4b51dbc063aa000a2dc",
+                "url": "https://api.github.com/repos/M6Web/RedisMock/zipball/057ad8e1bea903aee54642e310d900bdb794372c",
+                "reference": "057ad8e1bea903aee54642e310d900bdb794372c",
                 "shasum": ""
             },
             "require": {
                 "mock",
                 "redis"
             ],
-            "time": "2019-08-20T13:03:26+00:00"
+            "time": "2019-11-04T09:03:23+00:00"
         },
         {
             "name": "nette/bootstrap",
-            "version": "v3.0.0",
+            "version": "v3.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nette/bootstrap.git",
-                "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3"
+                "reference": "b45a1e33b6a44beb307756522396551e5a9ff249"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nette/bootstrap/zipball/e1075af05c211915e03e0c86542f3ba5433df4a3",
-                "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3",
+                "url": "https://api.github.com/repos/nette/bootstrap/zipball/b45a1e33b6a44beb307756522396551e5a9ff249",
+                "reference": "b45a1e33b6a44beb307756522396551e5a9ff249",
                 "shasum": ""
             },
             "require": {
                 "nette/utils": "^3.0",
                 "php": ">=7.1"
             },
+            "conflict": {
+                "tracy/tracy": "<2.6"
+            },
             "require-dev": {
                 "latte/latte": "^2.2",
                 "nette/application": "^3.0",
                 "configurator",
                 "nette"
             ],
-            "time": "2019-03-26T12:59:07+00:00"
+            "time": "2019-09-30T08:19:38+00:00"
         },
         {
             "name": "nette/di",
         },
         {
             "name": "nette/schema",
-            "version": "v1.0.0",
+            "version": "v1.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nette/schema.git",
-                "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d"
+                "reference": "337117df1dade22e2ba1fdc4a4b832c1e9b06b76"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nette/schema/zipball/6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d",
-                "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d",
+                "url": "https://api.github.com/repos/nette/schema/zipball/337117df1dade22e2ba1fdc4a4b832c1e9b06b76",
+                "reference": "337117df1dade22e2ba1fdc4a4b832c1e9b06b76",
                 "shasum": ""
             },
             "require": {
                 "config",
                 "nette"
             ],
-            "time": "2019-04-03T15:53:25+00:00"
+            "time": "2019-10-31T20:52:19+00:00"
         },
         {
             "name": "nette/utils",
-            "version": "v3.0.1",
+            "version": "v3.0.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nette/utils.git",
-                "reference": "bd961f49b211997202bda1d0fbc410905be370d4"
+                "reference": "c133e18c922dcf3ad07673077d92d92cef25a148"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nette/utils/zipball/bd961f49b211997202bda1d0fbc410905be370d4",
-                "reference": "bd961f49b211997202bda1d0fbc410905be370d4",
+                "url": "https://api.github.com/repos/nette/utils/zipball/c133e18c922dcf3ad07673077d92d92cef25a148",
+                "reference": "c133e18c922dcf3ad07673077d92d92cef25a148",
                 "shasum": ""
             },
             "require": {
                 "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
                 "ext-json": "to use Nette\\Utils\\Json",
                 "ext-mbstring": "to use Strings::lower() etc...",
+                "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()",
                 "ext-xml": "to use Strings::length() etc. when mbstring is not available"
             },
             "type": "library",
                 "utility",
                 "validation"
             ],
-            "time": "2019-03-22T01:00:30+00:00"
+            "time": "2019-10-21T20:40:16+00:00"
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.2.4",
+            "version": "v4.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4"
+                "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/97e59c7a16464196a8b9c77c47df68e4a39a45c4",
-                "reference": "97e59c7a16464196a8b9c77c47df68e4a39a45c4",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc",
+                "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.0"
             },
             "require-dev": {
+                "ircmaxell/php-yacc": "0.0.5",
                 "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0"
             },
             "bin": [
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "4.2-dev"
+                    "dev-master": "4.3-dev"
                 }
             },
             "autoload": {
                 "parser",
                 "php"
             ],
-            "time": "2019-09-01T07:51:21+00:00"
+            "time": "2019-11-08T13:50:10+00:00"
         },
         {
             "name": "php-cs-fixer/diff",
         },
         {
             "name": "phpstan/phpstan",
-            "version": "0.11.16",
+            "version": "0.11.19",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "635cf20f3b92ce34ee94a8d2f282d62eb9dc6e1b"
+                "reference": "63cc502f6957b7f74efbac444b4cf219dcadffd7"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/635cf20f3b92ce34ee94a8d2f282d62eb9dc6e1b",
-                "reference": "635cf20f3b92ce34ee94a8d2f282d62eb9dc6e1b",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/63cc502f6957b7f74efbac444b4cf219dcadffd7",
+                "reference": "63cc502f6957b7f74efbac444b4cf219dcadffd7",
                 "shasum": ""
             },
             "require": {
                 "jean85/pretty-package-versions": "^1.0.3",
                 "nette/bootstrap": "^2.4 || ^3.0",
                 "nette/di": "^2.4.7 || ^3.0",
+                "nette/neon": "^2.4.3 || ^3.0",
                 "nette/robot-loader": "^3.0.1",
                 "nette/schema": "^1.0",
                 "nette/utils": "^2.4.5 || ^3.0",
                 "MIT"
             ],
             "description": "PHPStan - PHP Static Analysis Tool",
-            "time": "2019-09-17T11:19:51+00:00"
+            "time": "2019-10-22T20:20:22+00:00"
         },
         {
             "name": "phpstan/phpstan-doctrine",
         },
         {
             "name": "symfony/phpunit-bridge",
-            "version": "v4.3.5",
+            "version": "v4.3.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/phpunit-bridge.git",
-                "reference": "a7fd9e742c31ac2b607b166c9016bab51a36c574"
+                "reference": "c216b32261358a820bb4217eb3a20e3f437a484e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a7fd9e742c31ac2b607b166c9016bab51a36c574",
-                "reference": "a7fd9e742c31ac2b607b166c9016bab51a36c574",
+                "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/c216b32261358a820bb4217eb3a20e3f437a484e",
+                "reference": "c216b32261358a820bb4217eb3a20e3f437a484e",
                 "shasum": ""
             },
             "require": {
             ],
             "description": "Symfony PHPUnit Bridge",
             "homepage": "https://symfony.com",
-            "time": "2019-10-02T08:36:26+00:00"
+            "time": "2019-10-30T12:58:49+00:00"
         }
     ],
     "aliases": [],
index ffdf33c96a508e1cac6f1ea61418d31aa799e093..171e12fc979e0d4ee3777e54a653cfc5bfb12418 100644 (file)
@@ -2,6 +2,7 @@ FROM php:7.2-fpm
 
 # Default timezone. To change it, use the argument in the docker-compose.yml file
 ARG timezone='Europe/Paris'
+ARG memorylimit='512M'
 
 RUN apt-get update && apt-get install -y \
         libmcrypt-dev \
@@ -13,20 +14,26 @@ RUN apt-get update && apt-get install -y \
         libsqlite3-dev \
         imagemagick \
         libmagickwand-dev \
-        libtidy-dev
+        libtidy-dev \
+        git
 RUN docker-php-ext-install \
         iconv \
         mbstring \
+        gd \
         intl \
         pdo \
         pdo_mysql \
         pdo_pgsql \
         pdo_sqlite \
-        tidy
+        sockets \
+        tidy \
+        bcmath \
+        zip
 
 RUN printf "\n" | pecl install imagick && docker-php-ext-enable imagick
 
 RUN echo "date.timezone="$timezone > /usr/local/etc/php/conf.d/date_timezone.ini
+RUN echo "memory_limit ="$memorylimit > /usr/local/etc/php/conf.d/memory_limit.ini
 
 RUN usermod -u 1000 www-data
 
index 28453be0d63cadeefbdd0e086e68b7c55bfe810b..cc465cf9877aac24a10997ff52af1c0339df0766 100755 (executable)
@@ -13,5 +13,8 @@ fi
 . "$REQUIRE_FILE"
 
 $COMPOSER_COMMAND install
-php bin/console wallabag:install
-php bin/console server:run
+if [ -z "$SKIP_WALLABAG_INITIALIZATION" ]
+then
+    php bin/console wallabag:install
+fi
+php bin/console server:run $HOST
index 3a7421c74ddc6fcf7225b2ef98d828a7e445ff5d..883ce4a89a3c039f7f91fec3405376bf54d963c7 100644 (file)
@@ -16,8 +16,6 @@ class WallabagAnnotationController extends FOSRestController
     /**
      * Retrieve annotations for an entry.
      *
-     * @param Entry $entry
-     *
      * @see Wallabag\ApiBundle\Controller\WallabagRestController
      *
      * @return JsonResponse
@@ -39,9 +37,6 @@ class WallabagAnnotationController extends FOSRestController
     /**
      * Creates a new annotation.
      *
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @return JsonResponse
      *
      * @see Wallabag\ApiBundle\Controller\WallabagRestController
@@ -79,9 +74,6 @@ class WallabagAnnotationController extends FOSRestController
      *
      * @ParamConverter("annotation", class="WallabagAnnotationBundle:Annotation")
      *
-     * @param Annotation $annotation
-     * @param Request    $request
-     *
      * @return JsonResponse
      */
     public function putAnnotationAction(Annotation $annotation, Request $request)
@@ -114,8 +106,6 @@ class WallabagAnnotationController extends FOSRestController
      *
      * @ParamConverter("annotation", class="WallabagAnnotationBundle:Annotation")
      *
-     * @param Annotation $annotation
-     *
      * @return JsonResponse
      */
     public function deleteAnnotationAction(Annotation $annotation)
index 28d55ba90295e0728c557a6b5dcce6378d1e8b5a..f59431e470bbff03d5e31710aca8f75ecfe472a2 100644 (file)
@@ -20,8 +20,6 @@ class AnnotationRestController extends WallabagRestController
      *      }
      * )
      *
-     * @param Entry $entry
-     *
      * @return JsonResponse
      */
     public function getAnnotationsAction(Entry $entry)
@@ -44,9 +42,6 @@ class AnnotationRestController extends WallabagRestController
      *      }
      * )
      *
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @return JsonResponse
      */
     public function postAnnotationAction(Request $request, Entry $entry)
@@ -70,9 +65,6 @@ class AnnotationRestController extends WallabagRestController
      *
      * @ParamConverter("annotation", class="WallabagAnnotationBundle:Annotation")
      *
-     * @param Annotation $annotation
-     * @param Request    $request
-     *
      * @return JsonResponse
      */
     public function putAnnotationAction(Annotation $annotation, Request $request)
@@ -96,8 +88,6 @@ class AnnotationRestController extends WallabagRestController
      *
      * @ParamConverter("annotation", class="WallabagAnnotationBundle:Annotation")
      *
-     * @param Annotation $annotation
-     *
      * @return JsonResponse
      */
     public function deleteAnnotationAction(Annotation $annotation)
index ae7e83daf2086974b1764b60a00f96fd90d08f64..3224d7893c1d26dfdbee88a0b25794e5026aa2ef 100644 (file)
@@ -29,8 +29,6 @@ class DeveloperController extends Controller
     /**
      * Create a client (an app).
      *
-     * @param Request $request
-     *
      * @Route("/developer/client/create", name="developer_create_client")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -67,8 +65,6 @@ class DeveloperController extends Controller
     /**
      * Remove a client.
      *
-     * @param Client $client
-     *
      * @Route("/developer/client/delete/{id}", requirements={"id" = "\d+"}, name="developer_delete_client")
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
index 9f933adb7cef298ef90f43ccabfc09f1471ddaef..c09fdaebb5c6af02e154cea956db941ec5bb25b6 100644 (file)
@@ -822,8 +822,6 @@ class EntryRestController extends WallabagRestController
      * Retrieve value from the request.
      * Used for POST & PATCH on a an entry.
      *
-     * @param Request $request
-     *
      * @return array
      */
     private function retrieveValueFromRequest(Request $request)
index 1b10a076da87f56d24163154d3b979e4595bbfb2..922ab7bbb261eb7dd026e6ca2ed1fceaccfb1d00 100644 (file)
@@ -119,7 +119,6 @@ class UserRestController extends WallabagRestController
     /**
      * Send user response.
      *
-     * @param User   $user
      * @param string $group  Used to define with serialized group might be used
      * @param int    $status HTTP Status code to send
      *
index 99170967018af889b1cf1e13d5beb5cb110308c5..64b91520a6f91c8149fee3d46f811c0e74e9f098 100644 (file)
@@ -63,9 +63,6 @@ class CleanDuplicatesCommand extends ContainerAwareCommand
         return 0;
     }
 
-    /**
-     * @param User $user
-     */
     private function cleanDuplicates(User $user)
     {
         $em = $this->getContainer()->get('doctrine.orm.entity_manager');
index 8f2bff114096d4a6ba24578d96d38636bb1f1fb2..a0e9221e33d5ae673ac54618ad6c5d151f7902b7 100644 (file)
@@ -54,9 +54,6 @@ class GenerateUrlHashesCommand extends ContainerAwareCommand
         return 0;
     }
 
-    /**
-     * @param User $user
-     */
     private function generateHashedUrls(User $user)
     {
         $em = $this->getContainer()->get('doctrine.orm.entity_manager');
index f73e069661cf1559962e6e878255c1ae502f0947..3aa332f131597a292ab830f80932afb24cc4ceab 100644 (file)
@@ -326,9 +326,7 @@ class InstallCommand extends ContainerAwareCommand
         if (0 !== $exitCode) {
             $this->getApplication()->setAutoExit(true);
 
-            throw new \RuntimeException(
-                'The command "' . $command . "\" generates some errors: \n\n"
-                . $output->fetch());
+            throw new \RuntimeException('The command "' . $command . "\" generates some errors: \n\n" . $output->fetch());
         }
 
         return $this;
index c95efbf3acb10ba3964267c2344d8e0393058ac6..87bccf7180eef4aa0a427cb690f02810cc4f4d4b 100644 (file)
@@ -46,9 +46,6 @@ class ShowUserCommand extends ContainerAwareCommand
         return 0;
     }
 
-    /**
-     * @param User $user
-     */
     private function showUser(User $user)
     {
         $this->io->listing([
index 0db90ba4bcfc291abe0d945abaf633e5372c2bc0..6655ef93da56781438fb769cd437adbf2e349ae0 100644 (file)
@@ -26,8 +26,6 @@ use Wallabag\CoreBundle\Tools\Utils;
 class ConfigController extends Controller
 {
     /**
-     * @param Request $request
-     *
      * @Route("/config", name="config")
      */
     public function indexAction(Request $request)
@@ -279,8 +277,6 @@ class ConfigController extends Controller
     /**
      * Validate OTP code.
      *
-     * @param Request $request
-     *
      * @Route("/config/otp/app/check", name="config_otp_app_check")
      */
     public function otpAppCheckAction(Request $request)
@@ -308,8 +304,6 @@ class ConfigController extends Controller
     }
 
     /**
-     * @param Request $request
-     *
      * @Route("/generate-token", name="generate_token")
      *
      * @return RedirectResponse|JsonResponse
@@ -336,8 +330,6 @@ class ConfigController extends Controller
     }
 
     /**
-     * @param Request $request
-     *
      * @Route("/revoke-token", name="revoke_token")
      *
      * @return RedirectResponse|JsonResponse
@@ -366,8 +358,6 @@ class ConfigController extends Controller
     /**
      * Deletes a tagging rule and redirect to the config homepage.
      *
-     * @param TaggingRule $rule
-     *
      * @Route("/tagging-rule/delete/{id}", requirements={"id" = "\d+"}, name="delete_tagging_rule")
      *
      * @return RedirectResponse
@@ -391,8 +381,6 @@ class ConfigController extends Controller
     /**
      * Edit a tagging rule.
      *
-     * @param TaggingRule $rule
-     *
      * @Route("/tagging-rule/edit/{id}", requirements={"id" = "\d+"}, name="edit_tagging_rule")
      *
      * @return RedirectResponse
@@ -459,8 +447,6 @@ class ConfigController extends Controller
      *
      * @Route("/account/delete", name="delete_account")
      *
-     * @param Request $request
-     *
      * @throws AccessDeniedHttpException
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
@@ -491,8 +477,6 @@ class ConfigController extends Controller
      *
      * @Route("/config/view-mode", name="switch_view_mode")
      *
-     * @param Request $request
-     *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
      */
     public function changeViewModeAction(Request $request)
@@ -510,8 +494,7 @@ class ConfigController extends Controller
     /**
      * Change the locale for the current user.
      *
-     * @param Request $request
-     * @param string  $language
+     * @param string $language
      *
      * @Route("/locale/{language}", name="changeLocale")
      *
@@ -620,8 +603,6 @@ class ConfigController extends Controller
 
     /**
      * Validate that a rule can be edited/deleted by the current user.
-     *
-     * @param TaggingRule $rule
      */
     private function validateRuleAction(TaggingRule $rule)
     {
index 5c8ecb402f661c31bcabcaaf4dd57070f06dc1da..ba5bfbe2916540ca7f2564d2f06891b6acd96ead 100644 (file)
@@ -21,8 +21,7 @@ use Wallabag\CoreBundle\Form\Type\SearchEntryType;
 class EntryController extends Controller
 {
     /**
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/search/{page}", name="search", defaults={"page" = 1})
      *
@@ -53,8 +52,6 @@ class EntryController extends Controller
     }
 
     /**
-     * @param Request $request
-     *
      * @Route("/new-entry", name="new_entry")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -97,8 +94,6 @@ class EntryController extends Controller
     }
 
     /**
-     * @param Request $request
-     *
      * @Route("/bookmarklet", name="bookmarklet")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -135,9 +130,6 @@ class EntryController extends Controller
     /**
      * Edit an entry content.
      *
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @Route("/edit/{id}", requirements={"id" = "\d+"}, name="edit")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -171,8 +163,7 @@ class EntryController extends Controller
     /**
      * Shows all entries for current user.
      *
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/all/list/{page}", name="all", defaults={"page" = "1"})
      *
@@ -186,8 +177,7 @@ class EntryController extends Controller
     /**
      * Shows unread entries for current user.
      *
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/unread/list/{page}", name="unread", defaults={"page" = "1"})
      *
@@ -206,8 +196,7 @@ class EntryController extends Controller
     /**
      * Shows read entries for current user.
      *
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/archive/list/{page}", name="archive", defaults={"page" = "1"})
      *
@@ -221,8 +210,7 @@ class EntryController extends Controller
     /**
      * Shows starred entries for current user.
      *
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/starred/list/{page}", name="starred", defaults={"page" = "1"})
      *
@@ -236,8 +224,7 @@ class EntryController extends Controller
     /**
      * Shows untagged articles for current user.
      *
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/untagged/list/{page}", name="untagged", defaults={"page" = "1"})
      *
@@ -276,8 +263,6 @@ class EntryController extends Controller
     /**
      * Shows entry content.
      *
-     * @param Entry $entry
-     *
      * @Route("/view/{id}", requirements={"id" = "\d+"}, name="view")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -296,8 +281,6 @@ class EntryController extends Controller
      * Reload an entry.
      * Refetch content from the website and make it readable again.
      *
-     * @param Entry $entry
-     *
      * @Route("/reload/{id}", requirements={"id" = "\d+"}, name="reload_entry")
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
@@ -330,9 +313,6 @@ class EntryController extends Controller
     /**
      * Changes read status for an entry.
      *
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @Route("/archive/{id}", requirements={"id" = "\d+"}, name="archive_entry")
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
@@ -362,9 +342,6 @@ class EntryController extends Controller
     /**
      * Changes starred status for an entry.
      *
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @Route("/star/{id}", requirements={"id" = "\d+"}, name="star_entry")
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
@@ -395,8 +372,6 @@ class EntryController extends Controller
     /**
      * Deletes entry and redirect to the homepage or the last viewed page.
      *
-     * @param Entry $entry
-     *
      * @Route("/delete/{id}", requirements={"id" = "\d+"}, name="delete_entry")
      *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
@@ -437,8 +412,6 @@ class EntryController extends Controller
     /**
      * Get public URL for entry (and generate it if necessary).
      *
-     * @param Entry $entry
-     *
      * @Route("/share/{id}", requirements={"id" = "\d+"}, name="share")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -463,8 +436,6 @@ class EntryController extends Controller
     /**
      * Disable public sharing for an entry.
      *
-     * @param Entry $entry
-     *
      * @Route("/share/delete/{id}", requirements={"id" = "\d+"}, name="delete_share")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -487,8 +458,6 @@ class EntryController extends Controller
     /**
      * Ability to view a content publicly.
      *
-     * @param Entry $entry
-     *
      * @Route("/share/{uid}", requirements={"uid" = ".+"}, name="share_entry")
      * @Cache(maxage="25200", smaxage="25200", public=true)
      *
@@ -510,9 +479,8 @@ class EntryController extends Controller
      * Global method to retrieve entries depending on the given type
      * It returns the response to be send.
      *
-     * @param string  $type    Entries type: unread, starred or archive
-     * @param Request $request
-     * @param int     $page
+     * @param string $type Entries type: unread, starred or archive
+     * @param int    $page
      *
      * @return \Symfony\Component\HttpFoundation\Response
      */
@@ -567,6 +535,9 @@ class EntryController extends Controller
             }
         }
 
+        $nbEntriesUntagged = $this->get('wallabag_core.entry_repository')
+            ->countUntaggedEntriesByUser($this->getUser()->getId());
+
         return $this->render(
             'WallabagCoreBundle:Entry:entries.html.twig', [
                 'form' => $form->createView(),
@@ -574,6 +545,7 @@ class EntryController extends Controller
                 'currentPage' => $page,
                 'searchTerm' => $searchTerm,
                 'isFiltered' => $form->isSubmitted(),
+                'nbEntriesUntagged' => $nbEntriesUntagged,
             ]
         );
     }
@@ -582,7 +554,6 @@ class EntryController extends Controller
      * Fetch content and update entry.
      * In case it fails, $entry->getContent will return an error message.
      *
-     * @param Entry  $entry
      * @param string $prefixMessage Should be the translation key: entry_saved or entry_reloaded
      */
     private function updateEntry(Entry $entry, $prefixMessage = 'entry_saved')
@@ -613,8 +584,6 @@ class EntryController extends Controller
 
     /**
      * Check if the logged user can manage the given entry.
-     *
-     * @param Entry $entry
      */
     private function checkUserAction(Entry $entry)
     {
@@ -626,8 +595,6 @@ class EntryController extends Controller
     /**
      * Check for existing entry, if it exists, redirect to it with a message.
      *
-     * @param Entry $entry
-     *
      * @return Entry|bool
      */
     private function checkIfEntryAlreadyExists(Entry $entry)
index 9ff35ff5f403148c0e082a47263a07cd00fb9b96..282fd733b63d5e1b0d03a704611d5f5be38b0aca 100644 (file)
@@ -17,7 +17,6 @@ class ExportController extends Controller
     /**
      * Gets one entry content.
      *
-     * @param Entry  $entry
      * @param string $format
      *
      * @Route("/export/{id}.{format}", name="export_entry", requirements={
index 9f671735aa5c1de1c3da1cc38ffbf54cb29fead6..95c3427b87f282c2d81a5439c931f1cb64419e79 100644 (file)
@@ -23,7 +23,6 @@ class FeedController extends Controller
      *
      * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
      *
-     * @param User $user
      * @param $page
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -40,7 +39,6 @@ class FeedController extends Controller
      *
      * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
      *
-     * @param User $user
      * @param $page
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -57,7 +55,6 @@ class FeedController extends Controller
      *
      * @ParamConverter("user", class="WallabagUserBundle:User", converter="username_feed_token_converter")
      *
-     * @param User $user
      * @param $page
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -147,7 +144,6 @@ class FeedController extends Controller
      * It returns the response to be send.
      *
      * @param string $type Entries type: unread, starred or archive
-     * @param User   $user
      * @param int    $page
      *
      * @return \Symfony\Component\HttpFoundation\Response
index 51bc1d94ae13dc9d897baaaf17683c50175bc927..4320c5ffe35d1e43872cf27128c585f044e53a67 100644 (file)
@@ -36,8 +36,6 @@ class SiteCredentialController extends Controller
      *
      * @Route("/new", name="site_credentials_new", methods={"GET", "POST"})
      *
-     * @param Request $request
-     *
      * @return \Symfony\Component\HttpFoundation\Response
      */
     public function newAction(Request $request)
@@ -76,9 +74,6 @@ class SiteCredentialController extends Controller
      *
      * @Route("/{id}/edit", name="site_credentials_edit", methods={"GET", "POST"})
      *
-     * @param Request        $request
-     * @param SiteCredential $siteCredential
-     *
      * @return \Symfony\Component\HttpFoundation\Response
      */
     public function editAction(Request $request, SiteCredential $siteCredential)
@@ -119,9 +114,6 @@ class SiteCredentialController extends Controller
      *
      * @Route("/{id}", name="site_credentials_delete", methods={"DELETE"})
      *
-     * @param Request        $request
-     * @param SiteCredential $siteCredential
-     *
      * @return \Symfony\Component\HttpFoundation\RedirectResponse
      */
     public function deleteAction(Request $request, SiteCredential $siteCredential)
index 90d36d71ae28da3f43ea6795e28f556396626003..a6ad131ff569a3dd431cbd226d60d0a90648bc83 100644 (file)
@@ -16,9 +16,6 @@ use Wallabag\CoreBundle\Form\Type\RenameTagType;
 class TagController extends Controller
 {
     /**
-     * @param Request $request
-     * @param Entry   $entry
-     *
      * @Route("/new-tag/{entry}", requirements={"entry" = "\d+"}, name="new_tag")
      *
      * @return \Symfony\Component\HttpFoundation\Response
@@ -103,7 +100,6 @@ class TagController extends Controller
     }
 
     /**
-     * @param Tag $tag
      * @param int $page
      *
      * @Route("/tag/list/{slug}/{page}", name="tag_entries", defaults={"page" = "1"})
@@ -145,9 +141,6 @@ class TagController extends Controller
      * Rename a given tag with a new label
      * Create a new tag with the new name and drop the old one.
      *
-     * @param Tag     $tag
-     * @param Request $request
-     *
      * @Route("/tag/rename/{slug}", name="tag_rename")
      * @ParamConverter("tag", options={"mapping": {"slug": "slug"}})
      *
index 35be9655d9622ce5a284e9ecd3e36cd877441cfb..fe7942ee261bca550ff3ef2ece24634124c37599 100644 (file)
@@ -371,8 +371,6 @@ class Config
     }
 
     /**
-     * @param TaggingRule $rule
-     *
      * @return Config
      */
     public function addTaggingRule(TaggingRule $rule)
index 4acec2618eb5f3e457d55f7bbc67f3b6eb144cc3..beda581af2ee214abb96c11a6fd48eb6af30908b 100644 (file)
@@ -550,8 +550,6 @@ class Entry
      * Set created_at.
      * Only used when importing data from an other service.
      *
-     * @param \DateTime $createdAt
-     *
      * @return Entry
      */
     public function setCreatedAt(\DateTime $createdAt)
@@ -623,9 +621,6 @@ class Entry
         return $this->annotations;
     }
 
-    /**
-     * @param Annotation $annotation
-     */
     public function setAnnotation(Annotation $annotation)
     {
         $this->annotations[] = $annotation;
@@ -702,9 +697,6 @@ class Entry
         return $data;
     }
 
-    /**
-     * @param Tag $tag
-     */
     public function addTag(Tag $tag)
     {
         if ($this->tags->contains($tag)) {
@@ -725,8 +717,6 @@ class Entry
 
     /**
      * Remove the given tag from the entry (if the tag is associated).
-     *
-     * @param Tag $tag
      */
     public function removeTag(Tag $tag)
     {
@@ -874,8 +864,6 @@ class Entry
     }
 
     /**
-     * @param \Datetime $publishedAt
-     *
      * @return Entry
      */
     public function setPublishedAt(\Datetime $publishedAt)
index 3ccb20a5c57012cd848df8f705f3bb1f644448f5..9fb2f94fddcf8216e879f80d6e27e5064315d198 100644 (file)
@@ -104,9 +104,6 @@ class Tag
         return $this->slug;
     }
 
-    /**
-     * @param Entry $entry
-     */
     public function addEntry(Entry $entry)
     {
         if ($this->entries->contains($entry)) {
@@ -117,9 +114,6 @@ class Tag
         $entry->addTag($this);
     }
 
-    /**
-     * @param Entry $entry
-     */
     public function removeEntry(Entry $entry)
     {
         if (!$this->entries->contains($entry)) {
index eac53fa32c2e01ab971123ea4583a4ca926bac9c..f716608716f1dbde4cc82cf24ff5d4ef03a5bbab 100644 (file)
@@ -121,8 +121,6 @@ class TaggingRule
     /**
      * Set config.
      *
-     * @param Config $config
-     *
      * @return TaggingRule
      */
     public function setConfig(Config $config)
index dc1db5c7a009d03cbb78b54f577a4514e8bb008d..1b5d61adaf5635a773f1b8f1b8c9dab3513fbab2 100644 (file)
@@ -25,9 +25,6 @@ class UserLocaleListener
         $this->session = $session;
     }
 
-    /**
-     * @param InteractiveLoginEvent $event
-     */
     public function onInteractiveLogin(InteractiveLoginEvent $event)
     {
         $user = $event->getAuthenticationToken()->getUser();
index cabb3eca3678170cf7acd5456419f928066d20a8..b8f6e1d6cecd6fc24d989c6eab2569702946f546 100644 (file)
@@ -12,9 +12,6 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  */
 class CustomDoctrineORMSubscriber extends DoctrineORMSubscriber implements EventSubscriberInterface
 {
-    /**
-     * @param GetFilterConditionEvent $event
-     */
     public function filterDateRange(GetFilterConditionEvent $event)
     {
         $expr = $event->getFilterQuery()->getExpressionBuilder();
index 1dd0a1a42ed56d7c510daa211c4c7cee4bc1c238..ef8d7d3bcf9bd9361947d2ac745969e2e11d37da 100644 (file)
@@ -35,8 +35,6 @@ class DownloadImagesSubscriber implements EventSubscriberInterface
 
     /**
      * Download images and updated the data into the entry.
-     *
-     * @param EntrySavedEvent $event
      */
     public function onEntrySaved(EntrySavedEvent $event)
     {
@@ -69,8 +67,6 @@ class DownloadImagesSubscriber implements EventSubscriberInterface
 
     /**
      * Remove images related to the entry.
-     *
-     * @param EntryDeletedEvent $event
      */
     public function onEntryDeleted(EntryDeletedEvent $event)
     {
@@ -88,8 +84,6 @@ class DownloadImagesSubscriber implements EventSubscriberInterface
      *
      * @todo If we want to add async download, it should be done in that method
      *
-     * @param Entry $entry
-     *
      * @return string|false False in case of async
      */
     private function downloadImages(Entry $entry)
@@ -106,8 +100,6 @@ class DownloadImagesSubscriber implements EventSubscriberInterface
      *
      * @todo If we want to add async download, it should be done in that method
      *
-     * @param Entry $entry
-     *
      * @return string|false False in case of async
      */
     private function downloadPreviewImage(Entry $entry)
index 9c1d8a1dadc342795cd13c91c0c37e17c4a3cb31..dcadeedfc484a794b115fd652718dbb54a569b80 100644 (file)
@@ -18,9 +18,6 @@ class SQLiteCascadeDeleteSubscriber implements EventSubscriber
 {
     private $doctrine;
 
-    /**
-     * @param \Doctrine\Bundle\DoctrineBundle\Registry $doctrine
-     */
     public function __construct(Registry $doctrine)
     {
         $this->doctrine = $doctrine;
@@ -39,8 +36,6 @@ class SQLiteCascadeDeleteSubscriber implements EventSubscriber
     /**
      * We removed everything related to the upcoming removed entry because SQLite can't handle it on it own.
      * We do it in the preRemove, because we can't retrieve tags in the postRemove (because the entry id is gone).
-     *
-     * @param LifecycleEventArgs $args
      */
     public function preRemove(LifecycleEventArgs $args)
     {
index 8a575b68058fbdb799f7321b65d659987e417232..17070c5981e874a19f7d54be899f7383ba09ff64 100644 (file)
@@ -23,9 +23,6 @@ class EntryFilterType extends AbstractType
 
     /**
      * Repository & user are used to get a list of language entries for this user.
-     *
-     * @param EntityRepository      $entryRepository
-     * @param TokenStorageInterface $tokenStorage
      */
     public function __construct(EntityRepository $entryRepository, TokenStorageInterface $tokenStorage)
     {
index c7502baccdb6a996597bc5502b8502307d42509c..b0be21763c4db127bfd6e08ccfc26c832f5de365 100644 (file)
@@ -34,11 +34,6 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
 
     /**
      * GrabySiteConfigBuilder constructor.
-     *
-     * @param ConfigBuilder            $grabyConfigBuilder
-     * @param TokenStorage             $token
-     * @param SiteCredentialRepository $credentialRepository
-     * @param LoggerInterface          $logger
      */
     public function __construct(ConfigBuilder $grabyConfigBuilder, TokenStorage $token, SiteCredentialRepository $credentialRepository, LoggerInterface $logger)
     {
index 5901df8bdc0a456d8cf6c5ae1ac5c605cacb0027..9c6fa8db142a9a9bd3a75a981e833a450ad31010 100644 (file)
@@ -86,7 +86,6 @@ class ContentProxy
     /**
      * Use a Symfony validator to ensure the language is well formatted.
      *
-     * @param Entry  $entry
      * @param string $value Language to validate and save
      */
     public function updateLanguage(Entry $entry, $value)
@@ -112,7 +111,6 @@ class ContentProxy
     /**
      * Use a Symfony validator to ensure the preview picture is a real url.
      *
-     * @param Entry  $entry
      * @param string $value URL to validate and save
      */
     public function updatePreviewPicture(Entry $entry, $value)
@@ -134,7 +132,6 @@ class ContentProxy
     /**
      * Update date.
      *
-     * @param Entry  $entry
      * @param string $value Date to validate and save
      */
     public function updatePublishedAt(Entry $entry, $value)
@@ -161,8 +158,6 @@ class ContentProxy
 
     /**
      * Helper to extract and save host from entry url.
-     *
-     * @param Entry $entry
      */
     public function setEntryDomainName(Entry $entry)
     {
@@ -176,8 +171,6 @@ class ContentProxy
      * Helper to set a default title using:
      * - url basename, if applicable
      * - hostname.
-     *
-     * @param Entry $entry
      */
     public function setDefaultEntryTitle(Entry $entry)
     {
@@ -333,7 +326,6 @@ class ContentProxy
      * Update the origin_url field when a redirection occurs
      * This field is set if it is empty and new url does not match ignore list.
      *
-     * @param Entry  $entry
      * @param string $url
      */
     private function updateOriginUrl(Entry $entry, $url)
@@ -441,8 +433,6 @@ class ContentProxy
     /**
      * Validate that the given content has at least a title, an html and a url.
      *
-     * @param array $content
-     *
      * @return bool true if valid otherwise false
      */
     private function validateContent(array $content)
index 1d361d6daeaa3a6da615a6cc52400d63256981ee..1d98fd1a93135dbca275a721558749fda3bdd4c6 100644 (file)
@@ -213,8 +213,6 @@ class DownloadImages
     /**
      * Get images urls from the srcset image attribute.
      *
-     * @param Crawler $imagesCrawler
-     *
      * @return array An array of urls
      */
     private static function getSrcsetUrls(Crawler $imagesCrawler)
index b8e95381d1476d3c147fe5594e3e66f162e6fc43..ea864acbbf6a7471947e4a2e9b7689be6fdcb700 100644 (file)
@@ -27,9 +27,7 @@ class HttpClientFactory implements ClientFactory
     /**
      * HttpClientFactory constructor.
      *
-     * @param \GuzzleHttp\Cookie\CookieJar $cookieJar
-     * @param string                       $restrictedAccess This param is a kind of boolean. Values: 0 or 1
-     * @param LoggerInterface              $logger
+     * @param string $restrictedAccess This param is a kind of boolean. Values: 0 or 1
      */
     public function __construct(CookieJar $cookieJar, $restrictedAccess, LoggerInterface $logger)
     {
@@ -40,8 +38,6 @@ class HttpClientFactory implements ClientFactory
 
     /**
      * Adds a subscriber to the HTTP client.
-     *
-     * @param SubscriberInterface $subscriber
      */
     public function addSubscriber(SubscriberInterface $subscriber)
     {
@@ -51,8 +47,6 @@ class HttpClientFactory implements ClientFactory
     /**
      * Input an array of configuration to be able to create a HttpClient.
      *
-     * @param array $config
-     *
      * @return HttpClient
      */
     public function createClient(array $config = [])
index 04abc6d08acfe0e643531421d8e59cd2648b1ec4..3d56a6d8e3232ed2f943a2d63634288f6edccfcd 100644 (file)
@@ -20,8 +20,7 @@ class PreparePagerForEntries
     }
 
     /**
-     * @param AdapterInterface $adapter
-     * @param User             $user    If user isn't logged in, we can force it (like for feed)
+     * @param User $user If user isn't logged in, we can force it (like for feed)
      *
      * @return Pagerfanta|null
      */
index fbdf2ac7a706bdcb0d862f8fb719ab279b5a72fb..d48e2469a01885b904eecb53a52779a55ff89d90 100644 (file)
@@ -56,8 +56,6 @@ class RuleBasedTagger
     /**
      * Apply all the tagging rules defined by a user on its entries.
      *
-     * @param User $user
-     *
      * @return array<Entry> A list of modified entries
      */
     public function tagAllForUser(User $user)
@@ -109,8 +107,6 @@ class RuleBasedTagger
     /**
      * Retrieves the tagging rules for a given user.
      *
-     * @param User $user
-     *
      * @return array<TaggingRule>
      */
     private function getRulesForUser(User $user)
index e6b4989f8d64ba638b30e6bd7554bb96d8aa799e..433b09feffc90753093c005d4b92a41eeb67cfa2 100644 (file)
@@ -21,7 +21,6 @@ class TagsAssigner
     /**
      * Assign some tags to an entry.
      *
-     * @param Entry        $entry
      * @param array|string $tags          An array of tag or a string coma separated of tag
      * @param array        $entitiesReady Entities from the EntityManager which are persisted but not yet flushed
      *                                    It is mostly to fix duplicate tag on import @see http://stackoverflow.com/a/7879164/569101
index d123eaba34902099f4f5ca28f129a3cfb2015a85..6753745f74dcec0d9368416acc755414da39b06a 100644 (file)
@@ -11,7 +11,6 @@ class UrlHasher
      * Hash the given url using the given algorithm.
      * Hashed url are faster to be retrieved in the database than the real url.
      *
-     * @param string $url
      * @param string $algorithm
      *
      * @return string
index d967598263c5e1237f7d7e2a2ea6f1a89df3a4ae..bfd079377ac783bdd4c2e0e2f84cb3f2e9d0496b 100644 (file)
@@ -306,7 +306,6 @@ class EntryRepository extends EntityRepository
      * DELETE et FROM entry_tag et WHERE et.entry_id IN ( SELECT e.id FROM entry e WHERE e.user_id = :userId ) AND et.tag_id = :tagId
      *
      * @param int $userId
-     * @param Tag $tag
      */
     public function removeTag($userId, Tag $tag)
     {
@@ -565,9 +564,8 @@ class EntryRepository extends EntityRepository
     /**
      * Return the given QueryBuilder with an orderBy() call.
      *
-     * @param QueryBuilder $qb
-     * @param string       $sortBy
-     * @param string       $direction
+     * @param string $sortBy
+     * @param string $direction
      *
      * @return QueryBuilder
      */
index 6f381408b586baaa7f4e458c63215a23af169efe..8573ba72ec837275c0b6250e58d80bb42608aa86 100644 (file)
@@ -465,6 +465,9 @@ import:
     # wallabag_v2:
     #     page_title: 'Import > Wallabag v2'
     #     description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     # readability:
     #     page_title: 'Import > Readability'
     #     description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
index 7efb18aa3e5c7721b7a883a92b21c04ccf8a6bd2..50e67d47bc019231b3d85688f0bd27b4b4abbd27 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Aus wallabag v2 importieren'
         description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Aus Readability importieren'
         description: 'Dieser Import wird all deine Artikel aus Readability importieren. Auf der Tools Seite (https://www.readability.com/tools/) klickst du auf "Exportiere deine Daten" in dem Abschnitt "Datenexport". Du wirst eine E-Mail mit einem Downloadlink zu einer json Datei, die aber nicht auf .json endet, erhalten'
index cf98e408738cdc9a42d8a404096d991987e84a13..206d35627e338325c6a4300f59cb39b58c2e8584 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Import > Wallabag v2'
         description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
+    elcurator:
+        page_title: 'Import > elCurator'
+        description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Import > Readability'
         description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
index b7cdd261e511a5caaf3de3ccf715a42726f1024f..10f5e79a85962d3475b5e36c845bd07e5bc6d35d 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Importar > Wallabag v2'
         description: 'Importa todos tus artículos de wallabag v2. En la sección Todos los artículos, en la barra lateral, haga clic en "JSON". Obtendrás un archivo llamado "All articles.json".'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Importar > Readability'
         description: 'Importa todos tus artículos de Readability. En la página de herramientas (https://www.readability.com/tools/), haga clic en "Exportar tus datos" en la sección "Exportar datos". Recibirás un correo electrónico para descargar un JSON (que no tiene extensión .json).'
index 66e83e16a7d856b9fec9b4b1016b3552888983d7..730b7e68f901dd6cc43509787cc77acc2088885c 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'درون‌ریزی > Wallabag v2'
         description: 'این برنامه همهٔ داده‌های شما را در نسخهٔ ۲ wallabag درون‌ریزی می‌کند. به بخش «همهٔ مقاله‌ها» بروید و در بخش «برون‌ریزی» روی "JSON" کلیک کنید. با این کار شما پرونده‌ای به شکل "All articles.json" دریافت خواهید کرد.'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'درون‌ریزی > Readability'
         # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
index 6fb856f2d714b7d862391aa5e2328452ad93b907..1eecd111aa6dcf5154271aeb1fe583a0f38205a5 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: "Importer > wallabag v2"
         description: "Cet outil va importer tous vos articles d’une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur « JSON ». Vous allez récupérer un fichier « All articles.json »"
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: "Importer > Readability"
         description: "Cet outil va importer toutes vos données de Readability. Sur la page des outils (https://www.readability.com/tools/), cliquez sur « Export your data » dans la section « Data Export ». Vous allez recevoir un courriel avec un lien pour télécharger le json."
index 3640e0a0b87efe5315dce8b7b614720a3a773d91..f1a8e3b15493ff909fa048a816592e2b1187d273 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Importa da > Wallabag v2'
         description: 'Questo importatore copierà tutti i tuoi dati da un wallabag v2. Vai in "Tutti i contenuti", e, nella barra laterale di esportazione, clicca su "JSON". Otterrai un file "Tutti i contenuti.json'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Importa da > Readability'
         description: 'Questo importatore copierà tutti i tuoi articoli da Readability. Nella pagina strumenti (https://www.readability.com/tools/), clicca su "Export your data" nella sezione "Data Export". Riceverai una E-mail per scaricare un file json (che tuttavia non termina con .json).'
index cd60566a1ebfa7ccfcfcfa3369d5e478111463dc..89bf8b16c0dfd0d6fabf9a9249008095da1aaad6 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Importar > Wallabag v2'
         description: "Aquesta aisina importarà totas vòstras donadas d'una instància mai de wallabag v2. Anatz dins totes vòstres articles, puèi, sus la barra laterala, clicatz sus \"JSON\". Traparetz un fichièr \"All articles.json\"."
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Importar > Readability'
         description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)."
index 909f70583c4c99979c38c2f9afc1a2320f4b82fa..0118ad218188d99832c0ddde19e61a34145ae2a8 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Import > Wallabag v2'
         description: 'Ten importer, zaimportuje wszystkie twoje artykułu z wallabag v2. Idź do wszystkich artykułów, a następnie na panelu exportu kliknij na "JSON". Otrzymasz plik "All articles.json".'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Import > Readability'
         description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Readability. Na stronie narzędzi (https://www.readability.com/tools/), kliknij na "Export your data" w sekcji "Data Export". Otrzymach email z plikiem JSON (plik nie będzie zawierał rozszerzenia .json).'
index 47e7b4db8853cc1c3cf8dae32052c748fe8262b4..d0082cdac123d937ca0b9dcc31df6f8376878445 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Importar > Wallabag v2'
         description: 'Com este importador você importa todos os seus artigos do wallabag v2. Vá em Todos os artigos e então, na barra lateral de exportação, clique em "JSON". Você irá criar um arquivo "All articles.json".'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Importar > Readability'
         description: 'Este importador pode importar todos os artigos do Readability. Nas página ferramentas (https://www.readability.com/tools/), clique em "Export your data" na seção "Data Export". Você receberá um e-mail para fazer o download de um json (que de fato não termina com .json).'
index 380b52337773c14f6bbcafcbfe9ae7fb29d28937..c8e2dfb40af40769eca7302b53a8538f8d715d2d 100644 (file)
@@ -465,6 +465,9 @@ import:
     # wallabag_v2:
     #     page_title: 'Import > Wallabag v2'
     #     description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     # readability:
     #     page_title: 'Import > Readability'
     #     description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
index a47525c6505c050462007c91a54448f03263f499..41379f90fdcc8d89eae196135e763981f126c7e2 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'Импорт > Wallabag v2'
         description: 'Функция импорта добавит все ваши записи wallabag v2. Перейдите ко всем статьям, затем на боковой панели экспорта нажмите "JSON". У вас появится файл со всеми записями "All articles.json".'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'Импорт > Readability'
         description: 'Функция импорта добавит все ваши записи для чтения. На странице инструментов (https://www.readability.com/tools/) нажмите "Экспорт ваших данных" в разделе "Экспорт данных". Вы получите электронное письмо для загрузки json (что не заканчивается только .json файлом).'
index 5879c48fb33f3794540f7c12dd575051801ffeea..b5a3bcb6129bd6e5c5852a8dfa360a86132fe03c 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'นำเข้าข้อมูล > Wallabag v2'
         description: 'สำหรับผู้นำเข้าข้อมูลจะ import บทความ wallabag v2 ทั้งหมดของคุณ ไปยังบทความทั้งหมด, ดังนั้น, บน export sidebar, click ที่ "JSON" คุณจะมีไฟล์ "All articles.json"'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'นำเข้าข้อมูล > Readability'
         description: 'สำหรับผู้นำเข้าข้อมูลจะ import บทความ Readability ทั้งหมดของคุณ ไปที่เครื่องมือ (https://www.readability.com/tools/) ของหน้านั้น, click ที่ "Export your data" ในส่วน "Data Export" คุณจะได้รับ email ไป download json (which does not end with .json in fact).'
index d023e3686377ad8f59b1a5e6397f3b12358a121c..4aaef78183c4911a3a0ee6f2c2042044dd520a70 100644 (file)
@@ -465,6 +465,9 @@ import:
     wallabag_v2:
         page_title: 'İçe Aktar > Wallabag v2'
         # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.'
+    # elcurator:
+    #     page_title: 'Import > elCurator'
+    #     description: 'This importer will import all your elCurator articles. Go to your preferences in your elCurator account and then, export your content. You will have a JSON file.'
     readability:
         page_title: 'İçe Aktar > Readability'
         # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).'
index d8b39160016dd8311cbcd95923c2a7b0ade83d60..b747ed84a9f590b9414d89a862b50b93c6fe91b8 100644 (file)
             <a href="javascript: void(null);" id="filter-form-close" class="close-button--popup close-button">&times;</a>
 
             <div id="filter-status" class="filter-group">
+                {% if currentRoute != 'untagged' and nbEntriesUntagged != 0 %}
+                    <div class="">
+                        <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{nbEntriesUntagged}})</a>
+                    </div>
+                {% endif %}
+
                 <div class="">
                     <label>{{ 'entry.filters.status_label'|trans }}</label>
                 </div>
index 476d7403b863ba38469e652cb94fd0f670ef643b..3906e1e0ebda871dad40b0cf1385635b0f398156 100644 (file)
             <h4 class="center">{{ 'entry.filters.title'|trans }}</h4>
 
             <div class="row">
+                {% if currentRoute != 'untagged' and nbEntriesUntagged != 0 %}
+                    <div class="col s12 center-align">
+                        <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }} ({{nbEntriesUntagged}})</a>
+                    </div>
+                {% endif %}
+
                 <div class="col s12">
                     <label>{{ 'entry.filters.status_label'|trans }}</label>
                 </div>
index e0d5e7940147957855b985129ae960a7cffe351b..4cf8116746485ae6594baf21e5d0ce901ad9f3e5 100644 (file)
@@ -2,14 +2,14 @@
     {% if form_errors(form) %}
         <span class="black-text">{{ form_errors(form) }}</span>
     {% endif %}
-    <button type="submit" class="nav-form-button"><i class="material-icons add">add</i></button>
+    <button type="submit" class="nav-form-button" aria-label="add"><i class="material-icons add" aria-hidden="true"></i></button>
 
     {% if form_errors(form.url) %}
         <span class="black-text">{{ form_errors(form.url) }}</span>
     {% endif %}
 
     {{ form_widget(form.url, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.new.placeholder'} }) }}
-    <i class="material-icons close">clear</i>
+    <i class="material-icons close" aria-label="clear" role="button"></i>
 
     {{ form_rest(form) }}
 </form>
index ba1b3aac5542bdfa4904d710a3284cd4a0506e08..0ae8b0b333899a0647a996479f2c3e0ee6a1c6b1 100644 (file)
@@ -2,7 +2,7 @@
     {% if form_errors(form) %}
         <span class="black-text">{{ form_errors(form) }}</span>
     {% endif %}
-    <button type="submit" class="nav-form-button"><i class="material-icons search">search</i></button>
+    <button type="submit" class="nav-form-button" aria-label="search"><i class="material-icons search" aria-hidden="true"></i></button>
 
     {% if form_errors(form.term) %}
         <span class="black-text">{{ form_errors(form.term) }}</span>
@@ -11,7 +11,7 @@
     <input type="hidden" name="currentRoute" value="{{ currentRoute }}" />
 
     {{ form_widget(form.term, { 'attr': {'autocomplete': 'off', 'placeholder': 'entry.search.placeholder'} }) }}
-    <i class="material-icons close">clear</i>
+    <i class="material-icons close" aria-label="clear" role="button"></i>
 
     {{ form_rest(form) }}
 </form>
index 58d2a7303c5dbc1c7c0273df4cf7db4313e9ea85..8c2bdfe584fc6b2754597e4048c9d6cc8b2bf235 100644 (file)
@@ -13,8 +13,6 @@ abstract class BrowserController extends Controller
     /**
      * @Route("/browser", name="import_browser")
      *
-     * @param Request $request
-     *
      * @return Response
      */
     public function indexAction(Request $request)
diff --git a/src/Wallabag/ImportBundle/Controller/ElcuratorController.php b/src/Wallabag/ImportBundle/Controller/ElcuratorController.php
new file mode 100644 (file)
index 0000000..174c2c9
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+namespace Wallabag\ImportBundle\Controller;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\Routing\Annotation\Route;
+
+class ElcuratorController extends WallabagController
+{
+    /**
+     * @Route("/elcurator", name="import_elcurator")
+     */
+    public function indexAction(Request $request)
+    {
+        return parent::indexAction($request);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getImportService()
+    {
+        $service = $this->get('wallabag_import.elcurator.import');
+
+        if ($this->get('craue_config')->get('import_with_rabbitmq')) {
+            $service->setProducer($this->get('old_sound_rabbit_mq.import_elcurator_producer'));
+        } elseif ($this->get('craue_config')->get('import_with_redis')) {
+            $service->setProducer($this->get('wallabag_import.producer.redis.elcurator'));
+        }
+
+        return $service;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getImportTemplate()
+    {
+        return 'WallabagImportBundle:Elcurator:index.html.twig';
+    }
+}
index d182dd2ca23b3b46fb9e48406a8884ee67559cc0..5180006d3e784d17cef11897eadef81f6eb227a7 100644 (file)
@@ -16,8 +16,6 @@ abstract class WallabagController extends Controller
     /**
      * Handle import request.
      *
-     * @param Request $request
-     *
      * @return Response|RedirectResponse
      */
     public function indexAction(Request $request)
index d39d71b6caf1e3b7def2c0b352b4ceeccdef0840..1b073e99ae3be65395e88d01ea8966f350ca745f 100644 (file)
@@ -46,8 +46,6 @@ abstract class AbstractImport implements ImportInterface
     /**
      * Set RabbitMQ/Redis Producer to send each entry to a queue.
      * This method should be called when user has enabled RabbitMQ.
-     *
-     * @param ProducerInterface $producer
      */
     public function setProducer(ProducerInterface $producer)
     {
@@ -57,8 +55,6 @@ abstract class AbstractImport implements ImportInterface
     /**
      * Set current user.
      * Could the current *connected* user or one retrieve by the consumer.
-     *
-     * @param User $user
      */
     public function setUser(User $user)
     {
@@ -112,8 +108,6 @@ abstract class AbstractImport implements ImportInterface
     /**
      * Parse one entry.
      *
-     * @param array $importedEntry
-     *
      * @return Entry
      */
     abstract public function parseEntry(array $importedEntry);
@@ -121,8 +115,6 @@ abstract class AbstractImport implements ImportInterface
     /**
      * Validate that an entry is valid (like has some required keys, etc.).
      *
-     * @param array $importedEntry
-     *
      * @return bool
      */
     abstract public function validateEntry(array $importedEntry);
@@ -149,8 +141,6 @@ abstract class AbstractImport implements ImportInterface
 
     /**
      * Parse and insert all given entries.
-     *
-     * @param array $entries
      */
     protected function parseEntries(array $entries)
     {
@@ -210,8 +200,6 @@ abstract class AbstractImport implements ImportInterface
      *
      * Faster parse entries for Producer.
      * We don't care to make check at this time. They'll be done by the consumer.
-     *
-     * @param array $entries
      */
     protected function parseEntriesForProducer(array $entries)
     {
@@ -233,8 +221,6 @@ abstract class AbstractImport implements ImportInterface
      * Set current imported entry to archived / read.
      * Implementation is different accross all imports.
      *
-     * @param array $importedEntry
-     *
      * @return array
      */
     abstract protected function setEntryAsRead(array $importedEntry);
index 3987e80f0722856df2067fcbcc380554aea6eaf5..ea7afd3ddfbb1bfa28ab2ef7af7b95a46d972575 100644 (file)
@@ -148,8 +148,6 @@ abstract class BrowserImport extends AbstractImport
 
     /**
      * Parse and insert all given entries.
-     *
-     * @param array $entries
      */
     protected function parseEntries(array $entries)
     {
@@ -199,8 +197,6 @@ abstract class BrowserImport extends AbstractImport
      *
      * Faster parse entries for Producer.
      * We don't care to make check at this time. They'll be done by the consumer.
-     *
-     * @param array $entries
      */
     protected function parseEntriesForProducer(array $entries)
     {
diff --git a/src/Wallabag/ImportBundle/Import/ElcuratorImport.php b/src/Wallabag/ImportBundle/Import/ElcuratorImport.php
new file mode 100644 (file)
index 0000000..d128161
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+namespace Wallabag\ImportBundle\Import;
+
+class ElcuratorImport extends WallabagImport
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function getName()
+    {
+        return 'elcurator';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getUrl()
+    {
+        return 'import_elcurator';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDescription()
+    {
+        return 'import.elcurator.description';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function prepareEntry($entry = [])
+    {
+        return [
+            'url' => $entry['url'],
+            'title' => $entry['title'],
+            'created_at' => $entry['created_at'],
+            'is_archived' => 0,
+            'is_starred' => $entry['is_saved'],
+        ] + $entry;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function setEntryAsRead(array $importedEntry)
+    {
+        $importedEntry['is_archived'] = 1;
+
+        return $importedEntry;
+    }
+}
index 9dd779569790cf15517c3857c004a9f5187dd95f..e1b5867ded20854ac64cdb1793a15751663988c9 100644 (file)
@@ -14,8 +14,7 @@ class ImportChain
     /**
      * Add an import to the chain.
      *
-     * @param ImportInterface $import
-     * @param string          $alias
+     * @param string $alias
      */
     public function addImport(ImportInterface $import, $alias)
     {
index 746120af17a19d9e5123f0104f92b1904132845a..24fdaa2b83f6efd7f863a366ffd3fd51a3e8ff60 100644 (file)
@@ -151,9 +151,6 @@ class PocketImport extends AbstractImport
 
     /**
      * Set the Http client.
-     *
-     * @param HttpClient          $client
-     * @param MessageFactory|null $messageFactory
      */
     public function setClient(HttpClient $client, MessageFactory $messageFactory = null)
     {
index e9ecb8467dd4d4a6f3a13c3f6d15d627d40440ac..0bf0e761c1f69881d3c8b71497bd8945dcdcec51 100644 (file)
@@ -48,6 +48,14 @@ services:
             - "@wallabag_import.wallabag_v2.import"
             - "@event_dispatcher"
             - "@logger"
+    wallabag_import.consumer.amqp.elcurator:
+        class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer
+        arguments:
+            - "@doctrine.orm.entity_manager"
+            - "@wallabag_user.user_repository"
+            - "@wallabag_import.elcurator.import"
+            - "@event_dispatcher"
+            - "@logger"
     wallabag_import.consumer.amqp.firefox:
         class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer
         arguments:
index 091cdba002a9e22b472c9b1ad9e980fc7404efe6..40a6e22406c5e5249d2caf052f5924f78110ba45 100644 (file)
@@ -126,6 +126,27 @@ services:
             - "@event_dispatcher"
             - "@logger"
 
+    # elcurator
+    wallabag_import.queue.redis.elcurator:
+        class: Simpleue\Queue\RedisQueue
+        arguments:
+            - "@wallabag_core.redis.client"
+            - "wallabag.import.elcurator"
+
+    wallabag_import.producer.redis.elcurator:
+        class: Wallabag\ImportBundle\Redis\Producer
+        arguments:
+            - "@wallabag_import.queue.redis.elcurator"
+
+    wallabag_import.consumer.redis.elcurator:
+        class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer
+        arguments:
+            - "@doctrine.orm.entity_manager"
+            - "@wallabag_user.user_repository"
+            - "@wallabag_import.elcurator.import"
+            - "@event_dispatcher"
+            - "@logger"
+
     # firefox
     wallabag_import.queue.redis.firefox:
         class: Simpleue\Queue\RedisQueue
index 973c0d03ebb2963e930b39d5535858ea1187b9f5..d824da4ab113bbf908f16594ae3081e51afa866f 100644 (file)
@@ -48,6 +48,18 @@ services:
         tags:
             -  { name: wallabag_import.import, alias: wallabag_v2 }
 
+    wallabag_import.elcurator.import:
+        class: Wallabag\ImportBundle\Import\ElcuratorImport
+        arguments:
+            - "@doctrine.orm.entity_manager"
+            - "@wallabag_core.content_proxy"
+            - "@wallabag_core.tags_assigner"
+            - "@event_dispatcher"
+        calls:
+            - [ setLogger, [ "@logger" ]]
+        tags:
+            -  { name: wallabag_import.import, alias: elcurator }
+
     wallabag_import.readability.import:
         class: Wallabag\ImportBundle\Import\ReadabilityImport
         arguments:
diff --git a/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig
new file mode 100644 (file)
index 0000000..e3a0d70
--- /dev/null
@@ -0,0 +1,3 @@
+{% extends "WallabagImportBundle:WallabagV1:index.html.twig" %}
+
+{% block title %}{{ 'import.elcurator.page_title'|trans }}{% endblock %}
index 63a06206150d6cba59766a6adeaec345847e4f1a..1122f8f0787237bf95ab934af10778661b7eebca 100644 (file)
@@ -127,8 +127,7 @@ class ManageController extends Controller
     }
 
     /**
-     * @param Request $request
-     * @param int     $page
+     * @param int $page
      *
      * @Route("/list/{page}", name="user_index", defaults={"page" = 1})
      *
index 43fa6a80fc2bb47b40970b936a21a2612de0a59a..aeab761db4df1a53e94649b0d2996bcecea98e28 100644 (file)
@@ -188,8 +188,6 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
     }
 
     /**
-     * @param Entry $entry
-     *
      * @return User
      */
     public function addEntry(Entry $entry)
@@ -355,8 +353,6 @@ class User extends BaseUser implements EmailTwoFactorInterface, GoogleTwoFactorI
     }
 
     /**
-     * @param Client $client
-     *
      * @return User
      */
     public function addClient(Client $client)
index 026db9a2c23bf65988ae21ae6bcb2c3f436ba347..03fad9717f626978a7831c46f0e66a296ec1e579 100644 (file)
@@ -12,10 +12,6 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
 
 class UserType extends AbstractType
 {
-    /**
-     * @param FormBuilderInterface $builder
-     * @param array                $options
-     */
     public function buildForm(FormBuilderInterface $builder, array $options)
     {
         $builder
@@ -50,9 +46,6 @@ class UserType extends AbstractType
         ;
     }
 
-    /**
-     * @param OptionsResolver $resolver
-     */
     public function configureOptions(OptionsResolver $resolver)
     {
         $resolver->setDefaults([
index b25ba685ba259b2c543106ce4168090699ccc230..4eea444f249ed685bbe0cd78ca27dd5e9587315d 100644 (file)
@@ -57,12 +57,10 @@ class AuthCodeMailer implements AuthCodeMailerInterface
     /**
      * Initialize the auth code mailer with the SwiftMailer object.
      *
-     * @param \Swift_Mailer $mailer
-     * @param Environment   $twig
-     * @param string        $senderEmail
-     * @param string        $senderName
-     * @param string        $supportUrl  wallabag support url
-     * @param string        $wallabagUrl wallabag instance url
+     * @param string $senderEmail
+     * @param string $senderName
+     * @param string $supportUrl  wallabag support url
+     * @param string $wallabagUrl wallabag instance url
      */
     public function __construct(\Swift_Mailer $mailer, Environment $twig, $senderEmail, $senderName, $supportUrl, $wallabagUrl)
     {
@@ -76,8 +74,6 @@ class AuthCodeMailer implements AuthCodeMailerInterface
 
     /**
      * Send the auth code to the user via email.
-     *
-     * @param TwoFactorInterface $user
      */
     public function sendAuthCode(TwoFactorInterface $user): void
     {
index 8fd497788a70cab6838b24368791b9edcd8b2e44..3a8f92e7c4d86bc88d9dad55caff96b511486776 100644 (file)
@@ -199,8 +199,8 @@ class EntryControllerTest extends WallabagCoreTestCase
         $authors = $content->getPublishedBy();
         $this->assertSame('2017-04-05 19:26:13', $content->getPublishedAt()->format('Y-m-d H:i:s'));
         $this->assertSame('fr', $content->getLanguage());
-        $this->assertSame('Raphaël Balenieri, correspondant à Pékin', $authors[0]);
-        $this->assertSame('Frédéric Autran, correspondant à New York', $authors[1]);
+        $this->assertSame('Raphaël Balenieri', $authors[0]);
+        $this->assertSame('Frédéric Autran', $authors[1]);
     }
 
     public function testPostNewOkUrlExist()
@@ -1377,7 +1377,7 @@ class EntryControllerTest extends WallabagCoreTestCase
             ],
             'es-ES' => [
                 'https://www.20minutos.es/noticia/3360685/0/gobierno-sanchez-primero-historia-mas-mujeres-que-hombres/',
-                'es',
+                'es_ES',
             ],
         ];
     }
diff --git a/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ElcuratorControllerTest.php
new file mode 100644 (file)
index 0000000..b9919f8
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+namespace Tests\Wallabag\ImportBundle\Controller;
+
+use Symfony\Component\HttpFoundation\File\UploadedFile;
+use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+
+class ElcuratorControllerTest extends WallabagCoreTestCase
+{
+    public function testImportElcurator()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/import/elcurator');
+
+        $this->assertSame(200, $client->getResponse()->getStatusCode());
+        $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
+        $this->assertSame(1, $crawler->filter('input[type=file]')->count());
+    }
+
+    public function testImportElcuratorWithRabbitEnabled()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1);
+
+        $crawler = $client->request('GET', '/import/elcurator');
+
+        $this->assertSame(200, $client->getResponse()->getStatusCode());
+        $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
+        $this->assertSame(1, $crawler->filter('input[type=file]')->count());
+
+        $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0);
+    }
+
+    public function testImportElcuratorBadFile()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/import/elcurator');
+        $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
+
+        $data = [
+            'upload_import_file[file]' => '',
+        ];
+
+        $client->submit($form, $data);
+
+        $this->assertSame(200, $client->getResponse()->getStatusCode());
+    }
+
+    public function testImportElcuratorWithRedisEnabled()
+    {
+        $this->checkRedis();
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $client->getContainer()->get('craue_config')->set('import_with_redis', 1);
+
+        $crawler = $client->request('GET', '/import/elcurator');
+
+        $this->assertSame(200, $client->getResponse()->getStatusCode());
+        $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
+        $this->assertSame(1, $crawler->filter('input[type=file]')->count());
+
+        $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
+
+        $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json');
+
+        $data = [
+            'upload_import_file[file]' => $file,
+        ];
+
+        $client->submit($form, $data);
+
+        $this->assertSame(302, $client->getResponse()->getStatusCode());
+
+        $crawler = $client->followRedirect();
+
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
+        $this->assertContains('flashes.import.notice.summary', $body[0]);
+
+        $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.elcurator'));
+
+        $client->getContainer()->get('craue_config')->set('import_with_redis', 0);
+    }
+
+    public function testImportElcuratorWithFile()
+    {
+        $this->logInAs('admin');
+        $client = $this->getClient();
+
+        $crawler = $client->request('GET', '/import/elcurator');
+        $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
+
+        $file = new UploadedFile(__DIR__ . '/../fixtures/elcurator.json', 'elcurator.json');
+
+        $data = [
+            'upload_import_file[file]' => $file,
+        ];
+
+        $client->submit($form, $data);
+
+        $this->assertSame(302, $client->getResponse()->getStatusCode());
+
+        $crawler = $client->followRedirect();
+
+        $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
+        $this->assertContains('flashes.import.notice.summary', $body[0]);
+
+        $content = $client->getContainer()
+            ->get('doctrine.orm.entity_manager')
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findByUrlAndUserId(
+                'https://devblog.lexik.fr/git/qualite-de-code-integration-de-php-git-hooks-dans-symfony2-2842',
+                $this->getLoggedInUserId()
+            );
+
+        $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
+
+        $this->assertSame('Qualité de code - Intégration de php-git-hooks dans Symfony2 - Experts Symfony et Drupal - Lexik', $content->getTitle());
+        $this->assertSame('2015-09-09', $content->getCreatedAt()->format('Y-m-d'));
+        $this->assertTrue($content->isStarred(), 'Entry is starred');
+
+        $tags = $content->getTags();
+        $this->assertContains('tag1', $tags, 'It includes the "tag1" tag');
+        $this->assertContains('tag2', $tags, 'It includes the "tag2" tag');
+    }
+}
index e1ec7c657dacbc18059a0f6a75a49e1bd54e0e83..f0edb78de7137ec5e7c423445ca1681b80ccc6a4 100644 (file)
@@ -24,6 +24,6 @@ class ImportControllerTest extends WallabagCoreTestCase
         $crawler = $client->request('GET', '/import/');
 
         $this->assertSame(200, $client->getResponse()->getStatusCode());
-        $this->assertSame(8, $crawler->filter('blockquote')->count());
+        $this->assertSame(9, $crawler->filter('blockquote')->count());
     }
 }
index 15646d55bad84fab1bf79f1107150426bae2fce9..963759b1e76829a0da9e267342ccf95308f19530 100644 (file)
@@ -121,7 +121,7 @@ class PinboardControllerTest extends WallabagCoreTestCase
         $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
         $this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://ma.ttias.be is ok');
         $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://ma.ttias.be is ok');
-        $this->assertNotEmpty($content->getLanguage(), 'Language for https://ma.ttias.be is ok');
+        $this->assertNull($content->getLanguage(), 'Language for https://ma.ttias.be is null');
 
         $tags = $content->getTags();
         $this->assertContains('foot', $tags, 'It includes the "foot" tag');
diff --git a/tests/Wallabag/ImportBundle/fixtures/elcurator.json b/tests/Wallabag/ImportBundle/fixtures/elcurator.json
new file mode 100644 (file)
index 0000000..f6fb2df
--- /dev/null
@@ -0,0 +1,13 @@
+[
+    {
+        "created_at": "2015-09-09 11:10:32 UTC",
+        "title": "Qualité de code - Intégration de php-git-hooks dans Symfony2 - Experts Symfony et Drupal - Lexik",
+        "url": "https://devblog.lexik.fr/git/qualite-de-code-integration-de-php-git-hooks-dans-symfony2-2842",
+        "description": null,
+        "tags": [
+            "tag1",
+            "tag2"
+        ],
+        "is_saved": true
+    }
+]