diff --git a/src/Plugin/aggregator/fetcher/DefaultFetcher.php b/src/Plugin/aggregator/fetcher/DefaultFetcher.php index f306b9b4f05dcef5db08a267b46e7d7276daa5fa..79eea04081da371e54cbfb7ab70d840fb2e44556 100644 --- a/src/Plugin/aggregator/fetcher/DefaultFetcher.php +++ b/src/Plugin/aggregator/fetcher/DefaultFetcher.php @@ -8,6 +8,7 @@ use Drupal\Component\Datetime\DateTimePlus; use Drupal\Core\Http\ClientFactory; use Drupal\Core\Messenger\MessengerInterface; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\Core\StringTranslation\TranslatableMarkup; use GuzzleHttp\Exception\TransferException; use GuzzleHttp\Psr7\Request; use Psr\Http\Message\RequestInterface; @@ -126,8 +127,14 @@ class DefaultFetcher implements FetcherInterface, ContainerFactoryPluginInterfac return TRUE; } catch (TransferException $e) { - $this->logger->warning('The feed from %site seems to be broken because of error "%error".', ['%site' => $feed->label(), '%error' => $e->getMessage()]); - $this->messenger->addWarning(t('The feed from %site seems to be broken because of error "%error".', ['%site' => $feed->label(), '%error' => $e->getMessage()])); + $this->logger->warning('The feed from %url seems to be broken because of error "%error".', [ + '%url' => $feed->getUrl(), + '%error' => $e->getMessage(), + ]); + $this->messenger->addWarning(new TranslatableMarkup('The feed from %url seems to be broken because of error "%error".', [ + '%url' => $feed->getUrl(), + '%error' => $e->getMessage(), + ])); return FALSE; } } diff --git a/src/Plugin/aggregator/parser/DefaultParser.php b/src/Plugin/aggregator/parser/DefaultParser.php index 66448fa5a6fce047592ce19fcb2fe180cf4e83c4..ff9e92310577b59edf897e8dce8ef765133742e1 100644 --- a/src/Plugin/aggregator/parser/DefaultParser.php +++ b/src/Plugin/aggregator/parser/DefaultParser.php @@ -5,6 +5,7 @@ namespace Drupal\aggregator\Plugin\aggregator\parser; use Drupal\aggregator\Plugin\ParserInterface; use Drupal\aggregator\FeedInterface; use Drupal\Core\Messenger\MessengerTrait; +use Drupal\Core\StringTranslation\TranslatableMarkup; use Laminas\Feed\Reader\Reader; use Laminas\Feed\Reader\Exception\ExceptionInterface; @@ -34,7 +35,10 @@ class DefaultParser implements ParserInterface { } catch (ExceptionInterface $e) { watchdog_exception('aggregator', $e); - $this->messenger()->addError(t('The feed from %site seems to be broken because of error "%error".', ['%site' => $feed->label(), '%error' => $e->getMessage()])); + $this->messenger()->addError(new TranslatableMarkup('The feed from %url seems to be broken because of error "%error".', [ + '%url' => $feed->getUrl(), + '%error' => $e->getMessage(), + ])); return FALSE; } diff --git a/tests/src/Functional/FeedParserTest.php b/tests/src/Functional/FeedParserTest.php index 916510b706b315829af3ba9ccfd9e22081a32914..d8ed13223f2f4b94d54917689fa77a78cd77d19f 100644 --- a/tests/src/Functional/FeedParserTest.php +++ b/tests/src/Functional/FeedParserTest.php @@ -112,14 +112,14 @@ class FeedParserTest extends AggregatorTestBase { */ public function testInvalidFeed() { // Simulate a typo in the URL to force a curl exception. - $invalid_url = 'http:/www.drupal.org'; + $invalid_url = 'https:/www.drupal.org'; $feed = Feed::create(['url' => $invalid_url, 'title' => $this->randomMachineName()]); $feed->save(); // Update the feed. Use the UI to be able to check the message easily. $this->drupalGet('admin/config/services/aggregator'); $this->clickLink('Update items'); - $this->assertSession()->pageTextContains('The feed from ' . $feed->label() . ' seems to be broken because of error'); + $this->assertSession()->pageTextContains('The feed from ' . $feed->getUrl() . ' seems to be broken because of error'); } }