FluidTYPO3\Vhs\Service\AssetService::writeCachedMergedFileAndReturnTag PHP Method

writeCachedMergedFileAndReturnTag() protected method

protected writeCachedMergedFileAndReturnTag ( FluidTYPO3\Vhs\ViewHelpers\Asset\AssetInterface[] $assets, string $type ) : string
$assets FluidTYPO3\Vhs\ViewHelpers\Asset\AssetInterface[]
$type string
return string
    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);
    }