for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php declare(strict_types=1);
namespace Shopware\Storefront\Theme;
use Shopware\Core\Framework\Plugin\Exception\DecorationPatternException;
use Shopware\Core\System\SystemConfig\SystemConfigService;
/**
* @package storefront
*/
class SeedingThemePathBuilder extends AbstractThemePathBuilder
{
private const SYSTEM_CONFIG_KEY = 'storefront.themeSeed';
* @internal
public function __construct(
private readonly SystemConfigService $systemConfigService,
) {
}
public function assemblePath(string $salesChannelId, string $themeId): string
return $this->generateNewPath($salesChannelId, $themeId, $this->getSeed($salesChannelId));
public function generateNewPath(string $salesChannelId, string $themeId, string $seed): string
return md5($themeId . $salesChannelId . $seed);
public function saveSeed(string $salesChannelId, string $themeId, string $seed): void
$this->systemConfigService->set(self::SYSTEM_CONFIG_KEY, $seed, $salesChannelId);
public function getDecorated(): AbstractThemePathBuilder
throw new DecorationPatternException(self::class);
private function getSeed(string $salesChannelId): string
/** @var string|null $seed */
$seed = $this->systemConfigService->get(self::SYSTEM_CONFIG_KEY, $salesChannelId);
if (!$seed) {
return '';
return $seed;