From c50265c1ebc28720a61629247351feb6976a2572 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:07:49 +0200 Subject: [PATCH 01/12] Replace setMethods by onlyMethods --- .../Api/EntryRestControllerTest.php | 2 +- tests/Controller/EntryControllerTest.php | 2 +- tests/Helper/ContentProxyTest.php | 38 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/Controller/Api/EntryRestControllerTest.php b/tests/Controller/Api/EntryRestControllerTest.php index 342f4424c..4719a746b 100644 --- a/tests/Controller/Api/EntryRestControllerTest.php +++ b/tests/Controller/Api/EntryRestControllerTest.php @@ -691,7 +691,7 @@ class EntryRestControllerTest extends WallabagApiTestCase $container = $this->client->getContainer(); $contentProxy = $this->getMockBuilder(ContentProxy::class) ->disableOriginalConstructor() - ->setMethods(['updateEntry']) + ->onlyMethods(['updateEntry']) ->getMock(); $contentProxy->expects($this->any()) ->method('updateEntry') diff --git a/tests/Controller/EntryControllerTest.php b/tests/Controller/EntryControllerTest.php index b84c3917c..dd1a33c3f 100644 --- a/tests/Controller/EntryControllerTest.php +++ b/tests/Controller/EntryControllerTest.php @@ -1721,7 +1721,7 @@ class EntryControllerTest extends WallabagTestCase $container = $client->getContainer(); $contentProxy = $this->getMockBuilder(ContentProxy::class) ->disableOriginalConstructor() - ->setMethods(['updateEntry']) + ->onlyMethods(['updateEntry']) ->getMock(); $contentProxy->expects($this->any()) ->method('updateEntry') diff --git a/tests/Helper/ContentProxyTest.php b/tests/Helper/ContentProxyTest.php index c9ee0eddb..18e349135 100644 --- a/tests/Helper/ContentProxyTest.php +++ b/tests/Helper/ContentProxyTest.php @@ -29,7 +29,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -69,7 +69,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -109,7 +109,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -154,7 +154,7 @@ class ContentProxyTest extends TestCase ->method('process'); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -200,7 +200,7 @@ class ContentProxyTest extends TestCase ->method('process'); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -246,7 +246,7 @@ class ContentProxyTest extends TestCase ->method('process'); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -291,7 +291,7 @@ class ContentProxyTest extends TestCase ->method('process'); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -341,7 +341,7 @@ class ContentProxyTest extends TestCase ->willReturn(new ConstraintViolationList([new ConstraintViolation('oops', 'oops', [], 'oops', 'language', 'dontexist')])); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -392,7 +392,7 @@ class ContentProxyTest extends TestCase )); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -649,7 +649,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -693,7 +693,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -732,7 +732,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -770,7 +770,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -808,7 +808,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -846,7 +846,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -895,7 +895,7 @@ class ContentProxyTest extends TestCase $ruleBasedIgnoreOriginProcessor = $this->getRuleBasedIgnoreOriginProcessorMock(); $graby = $this->getMockBuilder(Graby::class) - ->setMethods(['fetchContent']) + ->onlyMethods(['fetchContent']) ->disableOriginalConstructor() ->getMock(); @@ -1103,7 +1103,7 @@ class ContentProxyTest extends TestCase private function getTaggerMock() { return $this->getMockBuilder(RuleBasedTagger::class) - ->setMethods(['tag']) + ->onlyMethods(['tag']) ->disableOriginalConstructor() ->getMock(); } @@ -1111,7 +1111,7 @@ class ContentProxyTest extends TestCase private function getRuleBasedIgnoreOriginProcessorMock() { return $this->getMockBuilder(RuleBasedIgnoreOriginProcessor::class) - ->setMethods(['process']) + ->onlyMethods(['process']) ->disableOriginalConstructor() ->getMock(); } @@ -1124,7 +1124,7 @@ class ContentProxyTest extends TestCase private function getValidator($withDefaultMock = true) { $mock = $this->getMockBuilder(RecursiveValidator::class) - ->setMethods(['validate']) + ->onlyMethods(['validate']) ->disableOriginalConstructor() ->getMock(); From 1127b147c0cfe599226d3a9c53bce390430a43d1 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:35:40 +0200 Subject: [PATCH 02/12] Replace AuthenticationEvents::AUTHENTICATION_FAILURE by LoginFailureEvent --- .../Listener/AuthenticationFailureListener.php | 4 ++-- .../AuthenticationFailureListenerTest.php | 17 +++++------------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/Event/Listener/AuthenticationFailureListener.php b/src/Event/Listener/AuthenticationFailureListener.php index 060325400..e1e2acc2e 100644 --- a/src/Event/Listener/AuthenticationFailureListener.php +++ b/src/Event/Listener/AuthenticationFailureListener.php @@ -5,7 +5,7 @@ namespace Wallabag\Event\Listener; use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Security\Core\AuthenticationEvents; +use Symfony\Component\Security\Http\Event\LoginFailureEvent; class AuthenticationFailureListener implements EventSubscriberInterface { @@ -21,7 +21,7 @@ class AuthenticationFailureListener implements EventSubscriberInterface public static function getSubscribedEvents(): array { return [ - AuthenticationEvents::AUTHENTICATION_FAILURE => 'onAuthenticationFailure', + LoginFailureEvent::class => 'onAuthenticationFailure', ]; } diff --git a/tests/Event/Listener/AuthenticationFailureListenerTest.php b/tests/Event/Listener/AuthenticationFailureListenerTest.php index dd746817e..4ae4d9002 100644 --- a/tests/Event/Listener/AuthenticationFailureListenerTest.php +++ b/tests/Event/Listener/AuthenticationFailureListenerTest.php @@ -8,10 +8,9 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; -use Symfony\Component\Security\Core\AuthenticationEvents; -use Symfony\Component\Security\Core\Event\AuthenticationFailureEvent; use Symfony\Component\Security\Core\Exception\AuthenticationException; +use Symfony\Component\Security\Http\Authenticator\AuthenticatorInterface; +use Symfony\Component\Security\Http\Event\LoginFailureEvent; use Wallabag\Event\Listener\AuthenticationFailureListener; class AuthenticationFailureListenerTest extends TestCase @@ -43,7 +42,7 @@ class AuthenticationFailureListenerTest extends TestCase public function testOnAuthenticationFailure() { - $token = $this->getMockBuilder(TokenInterface::class) + $authenticator = $this->getMockBuilder(AuthenticatorInterface::class) ->disableOriginalConstructor() ->getMock(); @@ -51,15 +50,9 @@ class AuthenticationFailureListenerTest extends TestCase ->disableOriginalConstructor() ->getMock(); - $event = new AuthenticationFailureEvent( - $token, - $exception - ); + $event = new LoginFailureEvent($exception, $authenticator, $this->requestStack->getMainRequest(), null, 'main', null); - $this->dispatcher->dispatch( - $event, - AuthenticationEvents::AUTHENTICATION_FAILURE - ); + $this->dispatcher->dispatch($event); $records = $this->logHandler->getRecords(); From 069c09d8d916873e5336b2cd47f7ce43d082c588 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:36:56 +0200 Subject: [PATCH 03/12] Replace query by executeQuery --- migrations/Version20161001072726.php | 8 ++++---- migrations/Version20170719231144.php | 4 ++-- src/Command/InstallCommand.php | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/migrations/Version20161001072726.php b/migrations/Version20161001072726.php index c90604bb3..65e196146 100644 --- a/migrations/Version20161001072726.php +++ b/migrations/Version20161001072726.php @@ -27,7 +27,7 @@ class Version20161001072726 extends WallabagMigration // remove all FK from entry_tag switch (true) { case $platform instanceof MySQLPlatform: - $query = $this->connection->query(" + $query = $this->connection->executeQuery(" SELECT CONSTRAINT_NAME FROM information_schema.key_column_usage WHERE TABLE_NAME = '" . $this->getTable('entry_tag', WallabagMigration::UN_ESCAPED_TABLE) . "' AND CONSTRAINT_NAME LIKE 'FK_%' @@ -40,7 +40,7 @@ class Version20161001072726 extends WallabagMigration break; case $platform instanceof PostgreSQLPlatform: // http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk - $query = $this->connection->query(" + $query = $this->connection->executeQuery(" SELECT conrelid::regclass AS table_from ,conname ,pg_get_constraintdef(c.oid) @@ -64,7 +64,7 @@ class Version20161001072726 extends WallabagMigration switch (true) { case $platform instanceof MySQLPlatform: - $query = $this->connection->query(" + $query = $this->connection->executeQuery(" SELECT CONSTRAINT_NAME FROM information_schema.key_column_usage WHERE TABLE_NAME = '" . $this->getTable('annotation', WallabagMigration::UN_ESCAPED_TABLE) . "' @@ -79,7 +79,7 @@ class Version20161001072726 extends WallabagMigration break; case $platform instanceof PostgreSQLPlatform: // http://dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk - $query = $this->connection->query(" + $query = $this->connection->executeQuery(" SELECT conrelid::regclass AS table_from ,conname ,pg_get_constraintdef(c.oid) diff --git a/migrations/Version20170719231144.php b/migrations/Version20170719231144.php index 3e8afcf09..91db5d1ea 100644 --- a/migrations/Version20170719231144.php +++ b/migrations/Version20170719231144.php @@ -20,7 +20,7 @@ class Version20170719231144 extends WallabagMigration } // Find tags which need to be merged - $dupTags = $this->connection->query(' + $dupTags = $this->connection->executeQuery(' SELECT LOWER(label) AS lower_label FROM ' . $this->getTable('tag') . ' GROUP BY LOWER(label) @@ -31,7 +31,7 @@ class Version20170719231144 extends WallabagMigration $label = $duplicates['lower_label']; // Retrieve all duplicate tags for a given tag - $tags = $this->connection->query(' + $tags = $this->connection->executeQuery(' SELECT id FROM ' . $this->getTable('tag') . ' WHERE LOWER(label) = :label diff --git a/src/Command/InstallCommand.php b/src/Command/InstallCommand.php index b9a2590dc..4c23d598d 100644 --- a/src/Command/InstallCommand.php +++ b/src/Command/InstallCommand.php @@ -138,7 +138,7 @@ class InstallCommand extends Command // now check if MySQL isn't too old to handle utf8mb4 if ($conn->isConnected() && $conn->getDatabasePlatform() instanceof MySQLPlatform) { - $version = $conn->query('select version()')->fetchOne(); + $version = $conn->executeQuery('select version()')->fetchOne(); $minimalVersion = '5.5.4'; if (false === version_compare($version, $minimalVersion, '>')) { @@ -151,7 +151,7 @@ class InstallCommand extends Command // testing if PostgreSQL > 9.1 if ($conn->isConnected() && $conn->getDatabasePlatform() instanceof PostgreSQLPlatform) { // return version should be like "PostgreSQL 9.5.4 on x86_64-apple-darwin15.6.0, compiled by Apple LLVM version 8.0.0 (clang-800.0.38), 64-bit" - $version = $conn->query('SELECT version();')->fetchOne(); + $version = $conn->executeQuery('SELECT version();')->fetchOne(); preg_match('/PostgreSQL ([0-9\.]+)/i', $version, $matches); From f7f5c714ac13ff3a8b11bb4b1596da42a3926b75 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:42:01 +0200 Subject: [PATCH 04/12] Replace get by constructor injection --- src/Controller/Import/ImportController.php | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Controller/Import/ImportController.php b/src/Controller/Import/ImportController.php index 8bbdb3628..5dc35418c 100644 --- a/src/Controller/Import/ImportController.php +++ b/src/Controller/Import/ImportController.php @@ -14,10 +14,12 @@ use Wallabag\Import\ImportChain; class ImportController extends AbstractController { private RabbitMQConsumerTotalProxy $rabbitMQConsumerTotalProxy; + private Client $redisClient; - public function __construct(RabbitMQConsumerTotalProxy $rabbitMQConsumerTotalProxy) + public function __construct(RabbitMQConsumerTotalProxy $rabbitMQConsumerTotalProxy, Client $redisClient) { $this->rabbitMQConsumerTotalProxy = $rabbitMQConsumerTotalProxy; + $this->redisClient = $redisClient; } /** @@ -67,22 +69,20 @@ class ImportController extends AbstractController $rabbitNotInstalled = true; } } elseif ($craueConfig->get('import_with_redis')) { - $redis = $this->get(Client::class); - try { - $nbRedisMessages = $redis->llen('wallabag.import.pocket') - + $redis->llen('wallabag.import.readability') - + $redis->llen('wallabag.import.wallabag_v1') - + $redis->llen('wallabag.import.wallabag_v2') - + $redis->llen('wallabag.import.firefox') - + $redis->llen('wallabag.import.chrome') - + $redis->llen('wallabag.import.instapaper') - + $redis->llen('wallabag.import.pinboard') - + $redis->llen('wallabag.import.delicious') - + $redis->llen('wallabag.import.elcurator') - + $redis->llen('wallabag.import.shaarli') - + $redis->llen('wallabag.import.pocket_html') - + $redis->llen('wallabag.import.omnivore') + $nbRedisMessages = $this->redisClient->llen('wallabag.import.pocket') + + $this->redisClient->llen('wallabag.import.readability') + + $this->redisClient->llen('wallabag.import.wallabag_v1') + + $this->redisClient->llen('wallabag.import.wallabag_v2') + + $this->redisClient->llen('wallabag.import.firefox') + + $this->redisClient->llen('wallabag.import.chrome') + + $this->redisClient->llen('wallabag.import.instapaper') + + $this->redisClient->llen('wallabag.import.pinboard') + + $this->redisClient->llen('wallabag.import.delicious') + + $this->redisClient->llen('wallabag.import.elcurator') + + $this->redisClient->llen('wallabag.import.shaarli') + + $this->redisClient->llen('wallabag.import.pocket_html') + + $this->redisClient->llen('wallabag.import.omnivore') ; } catch (\Exception $e) { $redisNotInstalled = true; From 47d3bd4b69911a542e52c82040dcc485607a8eee Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:42:55 +0200 Subject: [PATCH 05/12] Replace MASTER_REQUEST by MAIN_REQUEST --- tests/Event/Listener/LocaleListenerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Event/Listener/LocaleListenerTest.php b/tests/Event/Listener/LocaleListenerTest.php index fe8f6c569..eb31ea245 100644 --- a/tests/Event/Listener/LocaleListenerTest.php +++ b/tests/Event/Listener/LocaleListenerTest.php @@ -82,6 +82,6 @@ class LocaleListenerTest extends TestCase ->disableOriginalConstructor() ->getMock(); - return new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST); + return new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST); } } From c9301bd0b3f94dff77a6a3db7882e5b6d2e4defa Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Tue, 1 Apr 2025 23:49:29 +0200 Subject: [PATCH 06/12] Use built in FOSUserBundle mailer --- app/config/config.yml | 2 +- app/config/services.yml | 10 ----- phpstan-baseline.neon | 5 --- src/Mailer/UserMailer.php | 78 --------------------------------------- 4 files changed, 1 insertion(+), 94 deletions(-) delete mode 100644 src/Mailer/UserMailer.php diff --git a/app/config/config.yml b/app/config/config.yml index 5e53f992f..473246438 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -197,7 +197,7 @@ fos_user: address: "%from_email%" sender_name: wallabag service: - mailer: Wallabag\Mailer\UserMailer + mailer: fos_user.mailer.twig_symfony fos_oauth_server: db_driver: orm diff --git a/app/config/services.yml b/app/config/services.yml index 704c24295..3cca8b30f 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -260,16 +260,6 @@ services: $defaultSettings: '%wallabag.default_internal_settings%' $defaultIgnoreOriginInstanceRules: '%wallabag.default_ignore_origin_instance_rules%' - Wallabag\Mailer\UserMailer: - arguments: - $parameters: - template: - confirmation: '%fos_user.registration.confirmation.template%' - resetting: '%fos_user.resetting.email.template%' - from_email: - confirmation: '%fos_user.registration.confirmation.from_email%' - resetting: '%fos_user.resetting.email.from_email%' - Wallabag\Event\Listener\CreateConfigListener: arguments: $itemsOnPage: "%wallabag.items_on_page%" diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 8b8938125..e3bfe3f0a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -60,11 +60,6 @@ parameters: count: 2 path: src/Mailer/AuthCodeMailer.php - - - message: "#^PHPDoc type Symfony\\\\Component\\\\Mailer\\\\MailerInterface of property Wallabag\\\\Mailer\\\\UserMailer\\:\\:\\$mailer is not covariant with PHPDoc type Swift_Mailer of overridden property FOS\\\\UserBundle\\\\Mailer\\\\TwigSwiftMailer\\:\\:\\$mailer\\.$#" - count: 1 - path: src/Mailer/UserMailer.php - - message: "#^Call to an undefined method DOMNode\\:\\:getAttribute\\(\\)\\.$#" count: 1 diff --git a/src/Mailer/UserMailer.php b/src/Mailer/UserMailer.php deleted file mode 100644 index fa108c3e4..000000000 --- a/src/Mailer/UserMailer.php +++ /dev/null @@ -1,78 +0,0 @@ -|string, resetting: array|string}} - */ - protected $parameters; - - public function __construct(MailerInterface $mailer, UrlGeneratorInterface $router, Environment $twig, array $parameters) - { - $this->mailer = $mailer; - $this->router = $router; - $this->twig = $twig; - $this->parameters = $parameters; - } - - /** - * @param string $templateName - * @param array $context - * @param array $fromEmail - * @param string $toEmail - */ - protected function sendMessage($templateName, $context, $fromEmail, $toEmail) - { - $template = $this->twig->load($templateName); - $subject = $template->renderBlock('subject', $context); - $textBody = $template->renderBlock('body_text', $context); - - $htmlBody = ''; - - if ($template->hasBlock('body_html', $context)) { - $htmlBody = $template->renderBlock('body_html', $context); - } - - $email = (new Email()) - ->from(new Address(key($fromEmail), current($fromEmail))) - ->to($toEmail) - ->subject($subject); - - if (!empty($htmlBody)) { - $email - ->text($textBody) - ->html($htmlBody); - } else { - $email->text($textBody); - } - - $this->mailer->send($email); - } -} From 402d80cd30571e4cba78b500bd89b392712bf8dc Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 00:17:54 +0200 Subject: [PATCH 07/12] Replace LifecycleEventArgs by PreRemoveEventArgs --- src/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php b/src/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php index 56f68792e..08ae02f1d 100644 --- a/src/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php +++ b/src/Event/Subscriber/SQLiteCascadeDeleteSubscriber.php @@ -4,7 +4,7 @@ namespace Wallabag\Event\Subscriber; use Doctrine\Common\EventSubscriber; use Doctrine\DBAL\Platforms\SqlitePlatform; -use Doctrine\ORM\Event\LifecycleEventArgs; +use Doctrine\ORM\Event\PreRemoveEventArgs; use Doctrine\Persistence\ManagerRegistry; use Wallabag\Entity\Entry; @@ -38,7 +38,7 @@ 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). */ - public function preRemove(LifecycleEventArgs $args) + public function preRemove(PreRemoveEventArgs $args) { $entity = $args->getObject(); if (!$this->doctrine->getConnection()->getDatabasePlatform() instanceof SqlitePlatform From 95730754e85a5d55c90ced693a4d059119e47f6d Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 00:18:49 +0200 Subject: [PATCH 08/12] Replace property access by getters --- src/Consumer/AMQPEntryConsumer.php | 2 +- src/Consumer/RabbitMQConsumerTotalProxy.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Consumer/AMQPEntryConsumer.php b/src/Consumer/AMQPEntryConsumer.php index cd51b42f8..f74f78bd0 100644 --- a/src/Consumer/AMQPEntryConsumer.php +++ b/src/Consumer/AMQPEntryConsumer.php @@ -9,6 +9,6 @@ class AMQPEntryConsumer extends AbstractConsumer implements ConsumerInterface { public function execute(AMQPMessage $msg) { - return $this->handleMessage($msg->body); + return $this->handleMessage($msg->getBody()); } } diff --git a/src/Consumer/RabbitMQConsumerTotalProxy.php b/src/Consumer/RabbitMQConsumerTotalProxy.php index 4cce92c1b..41e4fd491 100644 --- a/src/Consumer/RabbitMQConsumerTotalProxy.php +++ b/src/Consumer/RabbitMQConsumerTotalProxy.php @@ -115,6 +115,6 @@ class RabbitMQConsumerTotalProxy return 0; } - return $message->delivery_info['message_count'] + 1; + return $message->getMessageCount() + 1; } } From a7f70222292cf9f3f6f86697f01818a7273f16b5 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 00:28:40 +0200 Subject: [PATCH 09/12] Replace getQuotedTableName by using DefaultQuoteStrategy --- tests/Event/Subscriber/TablePrefixSubscriberTest.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/Event/Subscriber/TablePrefixSubscriberTest.php b/tests/Event/Subscriber/TablePrefixSubscriberTest.php index da80c293a..fa0c37e38 100644 --- a/tests/Event/Subscriber/TablePrefixSubscriberTest.php +++ b/tests/Event/Subscriber/TablePrefixSubscriberTest.php @@ -9,6 +9,7 @@ use Doctrine\DBAL\Platforms\SqlitePlatform; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\ORM\Mapping\DefaultQuoteStrategy; use PHPUnit\Framework\TestCase; use Wallabag\Entity\User; use Wallabag\Event\Subscriber\TablePrefixSubscriber; @@ -57,7 +58,7 @@ class TablePrefixSubscriberTest extends TestCase $subscriber->loadClassMetadata($metaDataEvent); $this->assertSame($finalTableName, $metaDataEvent->getClassMetadata()->getTableName()); - $this->assertSame($finalTableNameQuoted, $metaDataEvent->getClassMetadata()->getQuotedTableName($platform)); + $this->assertSame($finalTableNameQuoted, (new DefaultQuoteStrategy())->getTableName($metaClass, $platform)); } /** @@ -82,7 +83,7 @@ class TablePrefixSubscriberTest extends TestCase $evm->dispatchEvent('loadClassMetadata', $metaDataEvent); $this->assertSame($finalTableName, $metaDataEvent->getClassMetadata()->getTableName()); - $this->assertSame($finalTableNameQuoted, $metaDataEvent->getClassMetadata()->getQuotedTableName($platform)); + $this->assertSame($finalTableNameQuoted, (new DefaultQuoteStrategy())->getTableName($metaClass, $platform)); } public function testPrefixManyToMany() @@ -115,6 +116,6 @@ class TablePrefixSubscriberTest extends TestCase $this->assertSame('yo_entry', $metaDataEvent->getClassMetadata()->getTableName()); $this->assertSame('yo_entry_tag', $metaDataEvent->getClassMetadata()->associationMappings['tags']['joinTable']['name']); - $this->assertSame('yo_entry', $metaDataEvent->getClassMetadata()->getQuotedTableName(new MySQLPlatform())); + $this->assertSame('yo_entry', (new DefaultQuoteStrategy())->getTableName($metaClass, new MySQLPlatform())); } } From 4ab26a19021ea4694794f1b5883496cc33331e41 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 00:42:31 +0200 Subject: [PATCH 10/12] Fix self deprecation notices --- src/Consumer/AMQPEntryConsumer.php | 2 +- src/Doctrine/JsonArrayType.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Consumer/AMQPEntryConsumer.php b/src/Consumer/AMQPEntryConsumer.php index f74f78bd0..659245167 100644 --- a/src/Consumer/AMQPEntryConsumer.php +++ b/src/Consumer/AMQPEntryConsumer.php @@ -7,7 +7,7 @@ use PhpAmqpLib\Message\AMQPMessage; class AMQPEntryConsumer extends AbstractConsumer implements ConsumerInterface { - public function execute(AMQPMessage $msg) + public function execute(AMQPMessage $msg): int|bool { return $this->handleMessage($msg->getBody()); } diff --git a/src/Doctrine/JsonArrayType.php b/src/Doctrine/JsonArrayType.php index 8e43cabe8..8925c1201 100644 --- a/src/Doctrine/JsonArrayType.php +++ b/src/Doctrine/JsonArrayType.php @@ -14,7 +14,7 @@ use Doctrine\DBAL\Types\JsonType; */ class JsonArrayType extends JsonType { - public function convertToPHPValue($value, AbstractPlatform $platform) + public function convertToPHPValue($value, AbstractPlatform $platform): mixed { if (null === $value || '' === $value) { return []; From 412352ff03307fea84e764c196e9b74b6c3c22d8 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 01:15:17 +0200 Subject: [PATCH 11/12] Fix direct deprecation notices --- src/Controller/EntryController.php | 2 +- src/Controller/ExportController.php | 2 +- src/Controller/UserController.php | 2 +- src/HttpClient/WallabagClient.php | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Controller/EntryController.php b/src/Controller/EntryController.php index 07e4af943..7f184d2b5 100644 --- a/src/Controller/EntryController.php +++ b/src/Controller/EntryController.php @@ -625,7 +625,7 @@ class EntryController extends AbstractController */ private function showEntries($type, Request $request, $page) { - $searchTerm = (isset($request->query->get('search_entry')['term']) ? trim($request->query->get('search_entry')['term']) : ''); + $searchTerm = (isset($request->query->all('search_entry')['term']) ? trim($request->query->all('search_entry')['term']) : ''); $currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : ''); $currentEntryId = $request->attributes->getInt('id'); diff --git a/src/Controller/ExportController.php b/src/Controller/ExportController.php index 1a65c7a9e..ce622a956 100644 --- a/src/Controller/ExportController.php +++ b/src/Controller/ExportController.php @@ -77,7 +77,7 @@ class ExportController extends AbstractController $title = 'Tag ' . $tag->getLabel(); } elseif ('search' === $category) { - $searchTerm = (isset($request->query->get('search_entry')['term']) ? $request->query->get('search_entry')['term'] : ''); + $searchTerm = (isset($request->query->all('search_entry')['term']) ? $request->query->all('search_entry')['term'] : ''); $currentRoute = (null !== $request->query->get('currentRoute') ? $request->query->get('currentRoute') : ''); $entries = $entryRepository->getBuilderForSearchByUser( diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 8209d46fb..5be29a6cc 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -161,7 +161,7 @@ class UserController extends AbstractController $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { - $searchTerm = (isset($request->query->get('search_user')['term']) ? $request->query->get('search_user')['term'] : ''); + $searchTerm = (isset($request->query->all('search_user')['term']) ? $request->query->all('search_user')['term'] : ''); $qb = $userRepository->getQueryBuilderForSearch($searchTerm); } diff --git a/src/HttpClient/WallabagClient.php b/src/HttpClient/WallabagClient.php index 1d3fcec6d..8b3f294bb 100644 --- a/src/HttpClient/WallabagClient.php +++ b/src/HttpClient/WallabagClient.php @@ -67,6 +67,11 @@ class WallabagClient implements HttpClientInterface return $this->httpClient->stream($responses, $timeout); } + public function withOptions(array $options): HttpClientInterface + { + return new self($this->restrictedAccess, $this->browser, $this->authenticator, $this->logger); + } + private function getCookieHeader(string $url): ?string { $cookies = []; From 3f2f57e0c0db24820f1ba84c1468f4148dd8afd6 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Wed, 2 Apr 2025 02:06:50 +0200 Subject: [PATCH 12/12] Fix some other deprecation notices --- app/config/config.yml | 1 + app/config/config_test.yml | 2 +- app/config/security.yml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/config/config.yml b/app/config/config.yml index 473246438..12260a8ca 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -29,6 +29,7 @@ framework: handler_id: session.handler.native_file save_path: "%kernel.project_dir%/var/sessions/%kernel.environment%" cookie_secure: auto + storage_factory_id: session.storage.factory.native fragments: ~ http_method_override: true assets: diff --git a/app/config/config_test.yml b/app/config/config_test.yml index 3ad233351..ad4a1f641 100644 --- a/app/config/config_test.yml +++ b/app/config/config_test.yml @@ -10,7 +10,7 @@ parameters: framework: test: ~ session: - storage_id: session.storage.mock_file + storage_factory_id: session.storage.factory.mock_file profiler: collect: false translator: diff --git a/app/config/security.yml b/app/config/security.yml index 118d82279..bced6bf20 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -1,5 +1,5 @@ security: - encoders: + password_hashers: FOS\UserBundle\Model\UserInterface: sha512 role_hierarchy: