public function testFiles() { $timestamp = '200000'; $templateId = 5; $shopId = 4; $templateMock = $this->createTemplateMock($templateId); $shopMock = $this->createShopMock($shopId, $templateMock); $filenameHash = $timestamp . '_' . md5($timestamp . $templateId . $shopId . \Shopware::REVISION); $expected = '/my/root/dir/web/cache/' . $filenameHash . '.css'; $this->assertEquals($expected, $this->pathResolver->getCssFilePath($shopMock, $timestamp)); $expected = '/my/root/dir/web/cache/' . $filenameHash . '.js'; $this->assertEquals($expected, $this->pathResolver->getJsFilePath($shopMock, $timestamp)); }
/** * Compiles the javascript files for the passed shop template. * * @param $timestamp * @param Shop\Template $template * @param Shop\Shop $shop */ public function compileJavascript($timestamp, Shop\Template $template, Shop\Shop $shop) { if ($shop->getMain()) { $shop = $shop->getMain(); } $file = $this->pathResolver->getJsFilePath($shop, $timestamp); $file = new \SplFileObject($file, "a"); if (!$file->flock(LOCK_EX)) { return; } $file->ftruncate(0); $settings = $this->service->getSystemConfiguration(AbstractQuery::HYDRATE_OBJECT); $javascriptFiles = $this->collectJavascriptFiles($template, $shop); $content = ''; foreach ($javascriptFiles as $jsFile) { $content .= file_get_contents($jsFile) . "\n"; } if ($settings->getCompressJs()) { $content = $this->jsCompressor->compress($content); } $file->fwrite($content); $file->flock(LOCK_UN); // release the lock }