/** * Resolves main theme dependencies if they aren't resolved yet. */ protected function ensureDependenciesAreResolved() { if (false === $this->areDependenciesResolved) { $this->themes = array_merge($this->themes, $this->themeDependenciesResolver->getDependencies($this->themes[0])); $this->areDependenciesResolved = true; } }
function it_adds_theme_parents_to_context_while_setting_theme(ThemeDependenciesResolverInterface $themeDependenciesResolver, ThemeInterface $firstTheme, ThemeInterface $secondTheme) { $firstTheme->getLogicalName()->willReturn("foo/bar1"); $firstTheme->getParentsNames()->willReturn(["foo/bar2"]); $secondTheme->getLogicalName()->willReturn("foo/bar2"); $secondTheme->getParentsNames()->willReturn([]); $themeDependenciesResolver->getDependencies($firstTheme)->shouldBeCalled()->willReturn([$secondTheme]); $this->setTheme($firstTheme); $this->getThemes()->shouldHaveCount(2); $this->getThemes()->shouldReturn([$firstTheme, $secondTheme]); }
/** * {@inheritdoc} */ public function installBundleAssets(BundleInterface $bundle, $targetDir, $symlinkMask) { $targetDir .= preg_replace('/bundle$/', '', strtolower($bundle->getName())); $this->filesystem->remove($targetDir); $effectiveSymlinkMask = $symlinkMask; foreach ($this->findAssetsPaths($bundle) as $originDir) { $effectiveSymlinkMask = min($effectiveSymlinkMask, $this->installVanillaBundleAssets($originDir, $targetDir, $symlinkMask)); } foreach ($this->themeRepository->findAll() as $theme) { $themes = array_merge([$theme], $this->themeDependenciesResolver->getDependencies($theme)); foreach ($this->findAssetsPaths($bundle, $themes) as $originDir) { $effectiveSymlinkMask = min($effectiveSymlinkMask, $this->installThemedBundleAssets($theme, $originDir, $targetDir, $symlinkMask)); } } return $effectiveSymlinkMask; }