Skip to content

Commit

Permalink
Merge pull request #77 from delyriand/fix/avoid-error-during-warmup
Browse files Browse the repository at this point in the history
Fix: avoid error during warmup e.g. new properties on channel
  • Loading branch information
delyriand authored Nov 6, 2024
2 parents d11d38a + 5dc8c85 commit 0cbcc2a
Showing 1 changed file with 21 additions and 15 deletions.
36 changes: 21 additions & 15 deletions src/CacheWarmer/SettingsCacheWarmer.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
namespace MonsieurBiz\SyliusSettingsPlugin\CacheWarmer;

use Doctrine\ORM\EntityManagerInterface;
use Exception;
use MonsieurBiz\SyliusSettingsPlugin\Settings\RegistryInterface;
use Sylius\Component\Channel\Repository\ChannelRepositoryInterface;
use Sylius\Component\Core\Model\ChannelInterface;
Expand Down Expand Up @@ -46,26 +47,31 @@ public function warmUp(string $cacheDir): array
return [];
}

$settings = $this->registry->getAllSettings();
foreach ($settings as $setting) {
$setting->getSettingsByChannelAndLocale();
$setting->getSettingsByChannelAndLocale(null, null, true);
try {
$settings = $this->registry->getAllSettings();
foreach ($settings as $setting) {
$setting->getSettingsByChannelAndLocale();
$setting->getSettingsByChannelAndLocale(null, null, true);

/** @var ChannelInterface $channel */
foreach ($this->channelRepository->findAll() as $channel) {
if (null === $channel->getCode()) {
continue;
}
/** @var ChannelInterface $channel */
foreach ($this->channelRepository->findAll() as $channel) {
if (null === $channel->getCode()) {
continue;
}

$setting->getSettingsByChannelAndLocale($channel);
$setting->getSettingsByChannelAndLocale($channel, null, true);
$setting->getSettingsByChannelAndLocale($channel);
$setting->getSettingsByChannelAndLocale($channel, null, true);

/** @var LocaleInterface $locale */
foreach ($channel->getLocales() as $locale) {
$setting->getSettingsByChannelAndLocale($channel, $locale->getCode());
$setting->getSettingsByChannelAndLocale($channel, $locale->getCode(), true);
/** @var LocaleInterface $locale */
foreach ($channel->getLocales() as $locale) {
$setting->getSettingsByChannelAndLocale($channel, $locale->getCode());
$setting->getSettingsByChannelAndLocale($channel, $locale->getCode(), true);
}
}
}
} catch (Exception) {
// If an exception is thrown, we just ignore it and return an empty array
// e.g. if upgrade Sylius and a new channel property is added to the ChannelInterface
}

return [];
Expand Down

0 comments on commit 0cbcc2a

Please sign in to comment.