‪TYPO3CMS  ‪main
TYPO3\CMS\Core\Resource\ResourceCompressor Class Reference

Public Member Functions

array concatenateCssFiles (array $cssFiles)
 
array concatenateJsFiles (array $jsFiles)
 
array compressCssFiles (array $cssFiles)
 
string compressCssFile ($filename)
 
array compressJsFiles (array $jsFiles)
 
string compressJsFile ($filename)
 
 compressJavaScriptSource (string $javaScriptSourceCode)
 

Protected Member Functions

 initialize ()
 
mixed createMergedCssFile (array $filesToInclude)
 
mixed createMergedJsFile (array $filesToInclude)
 
mixed createMergedFile (array $filesToInclude, $type='css')
 
string getFilenameFromMainDir ($filename)
 
bool checkBaseDirectory ($filename, array $baseDirectories)
 
 cssFixRelativeUrlPaths (string $contents, string $filename)
 
string cssFixStatements ($contents)
 
 writeFileAndCompressed ($filename, $contents)
 
string returnFileReference ($filename)
 
string retrieveExternalFile ($url)
 
string compressCssString ($contents)
 
 getJavaScriptFileType ()
 
 getPathFixer ()
 

Protected Attributes

string $targetDirectory = 'typo3temp/assets/compressed/'
 
string $rootPath = ''
 
bool $createGzipped = false
 
string $gzipFileExtension = '.gz'
 
int $gzipCompressionLevel = -1
 
string $htaccessTemplate
 
bool $initialized = false
 

Detailed Description

This class merges and compresses CSS and JavaScript files of the TYPO3 Frontend. It should never be used for TYPO3 Backend.

Definition at line 30 of file ResourceCompressor.php.

Member Function Documentation

◆ checkBaseDirectory()

bool TYPO3\CMS\Core\Resource\ResourceCompressor::checkBaseDirectory (   $filename,
array  $baseDirectories 
)
protected

Decides whether a file comes from one of the baseDirectories

Parameters
string$filename‪Filename
array$baseDirectories‪Base directories
Returns
‪bool File belongs to a base directory or not

Definition at line 476 of file ResourceCompressor.php.

References $baseDirectory.

◆ compressCssFile()

◆ compressCssFiles()

array TYPO3\CMS\Core\Resource\ResourceCompressor::compressCssFiles ( array  $cssFiles)

Compress multiple css files

Parameters
array$cssFiles‪The files to compress (array key = filename), relative to requested page
Returns
‪array The CSS files after compression (array key = new filename), relative to requested page

Definition at line 302 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\compressCssFile(), and TYPO3\CMS\Core\Resource\ResourceCompressor\initialize().

◆ compressCssString()

string TYPO3\CMS\Core\Resource\ResourceCompressor::compressCssString (   $contents)
protected

Compress a CSS string by removing comments and whitespace characters

Parameters
string$contents
Returns
‪string

Definition at line 622 of file ResourceCompressor.php.

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\compressCssFile().

◆ compressJavaScriptSource()

TYPO3\CMS\Core\Resource\ResourceCompressor::compressJavaScriptSource ( string  $javaScriptSourceCode)

◆ compressJsFile()

string TYPO3\CMS\Core\Resource\ResourceCompressor::compressJsFile (   $filename)

◆ compressJsFiles()

array TYPO3\CMS\Core\Resource\ResourceCompressor::compressJsFiles ( array  $jsFiles)

Compress multiple javascript files

Parameters
array$jsFiles‪The files to compress (array key = filename), relative to requested page
Returns
‪array The js files after compression (array key = new filename), relative to requested page

Definition at line 365 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\compressJsFile(), and TYPO3\CMS\Core\Resource\ResourceCompressor\initialize().

◆ concatenateCssFiles()

array TYPO3\CMS\Core\Resource\ResourceCompressor::concatenateCssFiles ( array  $cssFiles)

Concatenates the Stylesheet files

Parameters
array$cssFiles‪CSS files to process
Returns
‪array CSS files

Definition at line 101 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\createMergedCssFile(), TYPO3\CMS\Core\Resource\ResourceCompressor\getFilenameFromMainDir(), and TYPO3\CMS\Core\Resource\ResourceCompressor\initialize().

◆ concatenateJsFiles()

array TYPO3\CMS\Core\Resource\ResourceCompressor::concatenateJsFiles ( array  $jsFiles)

◆ createMergedCssFile()

mixed TYPO3\CMS\Core\Resource\ResourceCompressor::createMergedCssFile ( array  $filesToInclude)
protected

Creates a merged CSS file

Parameters
array$filesToInclude‪Files which should be merged, paths relative to root path
Returns
‪mixed Filename of the merged file

Definition at line 204 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\createMergedFile().

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\concatenateCssFiles().

◆ createMergedFile()

◆ createMergedJsFile()

mixed TYPO3\CMS\Core\Resource\ResourceCompressor::createMergedJsFile ( array  $filesToInclude)
protected

Creates a merged JS file

Parameters
array$filesToInclude‪Files which should be merged, paths relative to root path
Returns
‪mixed Filename of the merged file

Definition at line 215 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\createMergedFile().

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\concatenateJsFiles().

◆ cssFixRelativeUrlPaths()

TYPO3\CMS\Core\Resource\ResourceCompressor::cssFixRelativeUrlPaths ( string  $contents,
string  $filename 
)
protected

◆ cssFixStatements()

string TYPO3\CMS\Core\Resource\ResourceCompressor::cssFixStatements (   $contents)
protected

◆ getFilenameFromMainDir()

◆ getJavaScriptFileType()

TYPO3\CMS\Core\Resource\ResourceCompressor::getJavaScriptFileType ( )
protected

Whenever HTML5 is used, do not use the "text/javascript" type attribute.

Definition at line 669 of file ResourceCompressor.php.

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\concatenateJsFiles().

◆ getPathFixer()

TYPO3\CMS\Core\Resource\ResourceCompressor::getPathFixer ( )
protected

◆ initialize()

◆ retrieveExternalFile()

string TYPO3\CMS\Core\Resource\ResourceCompressor::retrieveExternalFile (   $url)
protected

Retrieves an external file and stores it locally.

Parameters
string$url
Returns
‪string Temporary local filename for the externally-retrieved file

Definition at line 584 of file ResourceCompressor.php.

References TYPO3\CMS\Webhooks\Message\$url, TYPO3\CMS\Core\Core\Environment\getPublicPath(), TYPO3\CMS\Core\Utility\GeneralUtility\getUrl(), and TYPO3\CMS\Core\Utility\GeneralUtility\writeFile().

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\createMergedFile().

◆ returnFileReference()

string TYPO3\CMS\Core\Resource\ResourceCompressor::returnFileReference (   $filename)
protected

Decides whether a client can deal with gzipped content or not and returns the according file name, based on HTTP_ACCEPT_ENCODING

Parameters
string$filenameFile name
Returns
‪string $filename suffixed with '.gz' or not - dependent on HTTP_ACCEPT_ENCODING

Definition at line 569 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\$gzipFileExtension, TYPO3\CMS\Core\Core\Environment\getPublicPath(), and TYPO3\CMS\Core\Utility\PathUtility\getRelativePath().

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\compressCssFile(), and TYPO3\CMS\Core\Resource\ResourceCompressor\compressJsFile().

◆ writeFileAndCompressed()

TYPO3\CMS\Core\Resource\ResourceCompressor::writeFileAndCompressed (   $filename,
  $contents 
)
protected

Writes $contents into file $filename together with a gzipped version into $filename.gz (gzipFileExtension)

Parameters
string$filename‪Target filename
string$contentsFile contents

Definition at line 552 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Core\Environment\getPublicPath(), and TYPO3\CMS\Core\Utility\GeneralUtility\writeFile().

Referenced by TYPO3\CMS\Core\Resource\ResourceCompressor\compressCssFile(), and TYPO3\CMS\Core\Resource\ResourceCompressor\compressJsFile().

Member Data Documentation

◆ $createGzipped

bool TYPO3\CMS\Core\Resource\ResourceCompressor::$createGzipped = false
protected

gzipped versions are only created if $TYPO3_CONF_VARS['BE' or 'FE']['compressionLevel'] is set

Definition at line 44 of file ResourceCompressor.php.

◆ $gzipCompressionLevel

int TYPO3\CMS\Core\Resource\ResourceCompressor::$gzipCompressionLevel = -1
protected

Definition at line 50 of file ResourceCompressor.php.

◆ $gzipFileExtension

string TYPO3\CMS\Core\Resource\ResourceCompressor::$gzipFileExtension = '.gz'
protected

◆ $htaccessTemplate

string TYPO3\CMS\Core\Resource\ResourceCompressor::$htaccessTemplate
protected
Initial value:
= '<FilesMatch "\\.(js|css)(\\.gz)?$">
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 7 days"
</IfModule>
FileETag MTime Size
</FilesMatch>'

Definition at line 54 of file ResourceCompressor.php.

◆ $initialized

bool TYPO3\CMS\Core\Resource\ResourceCompressor::$initialized = false
protected

Definition at line 62 of file ResourceCompressor.php.

◆ $rootPath

string TYPO3\CMS\Core\Resource\ResourceCompressor::$rootPath = ''
protected

Definition at line 38 of file ResourceCompressor.php.

◆ $targetDirectory

string TYPO3\CMS\Core\Resource\ResourceCompressor::$targetDirectory = 'typo3temp/assets/compressed/'
protected

Definition at line 34 of file ResourceCompressor.php.