protected function writeCachedMergedFileAndReturnTag($assets, $type)
{
$source = '';
$keys = array_keys($assets);
sort($keys);
$assetName = implode('-', $keys);
unset($keys);
if (isset($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_vhs.']['assets.']['mergedAssetsUseHashedFilename'])) {
if ($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_vhs.']['assets.']['mergedAssetsUseHashedFilename']) {
$assetName = md5($assetName);
}
}
$fileRelativePathAndFilename = 'typo3temp/vhs-assets-' . $assetName . '.' . $type;
$fileAbsolutePathAndFilename = GeneralUtility::getFileAbsFileName($fileRelativePathAndFilename);
if (false === file_exists($fileAbsolutePathAndFilename) || 0 === filemtime($fileAbsolutePathAndFilename) || true === isset($GLOBALS['BE_USER']) || true === (bool) $GLOBALS['TSFE']->no_cache || true === (bool) $GLOBALS['TSFE']->page['no_cache']) {
foreach ($assets as $name => $asset) {
$assetSettings = $this->extractAssetSettings($asset);
if (isset($assetSettings['namedChunks']) && 0 < $assetSettings['namedChunks'] || !isset($assetSettings['namedChunks'])) {
$source .= '/* ' . $name . ' */' . LF;
}
$source .= $this->extractAssetContent($asset) . LF;
// Put a return carriage between assets preventing broken content.
$source .= "\n";
}
$this->writeFile($fileAbsolutePathAndFilename, $source);
}
if (false === empty($GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename'])) {
$timestampMode = $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename'];
if (true === file_exists($fileRelativePathAndFilename)) {
$lastModificationTime = filemtime($fileRelativePathAndFilename);
if ('querystring' === $timestampMode) {
$fileRelativePathAndFilename .= '?' . $lastModificationTime;
} elseif ('embed' === $timestampMode) {
$fileRelativePathAndFilename = substr_replace($fileRelativePathAndFilename, '.' . $lastModificationTime, strrpos($fileRelativePathAndFilename, '.'), 0);
}
}
}
$fileRelativePathAndFilename = $this->prefixPath($fileRelativePathAndFilename);
$integrity = $this->getFileIntegrity($fileAbsolutePathAndFilename);
return $this->generateTagForAssetType($type, null, $fileRelativePathAndFilename, $integrity);
}