‪TYPO3CMS  11.5
TYPO3\CMS\Core\Resource\ResourceCompressor Class Reference
Inheritance diagram for TYPO3\CMS\Core\Resource\ResourceCompressor:
TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorTest\Fixtures\TestableResourceCompressor

Public Member Functions

 __construct ()
 
 setRootPath ($rootPath)
 
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

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

Protected Attributes

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

Detailed Description

Compressor This merges and compresses CSS and JavaScript files of the TYPO3 Backend.

Definition at line 31 of file ResourceCompressor.php.

Constructor & Destructor Documentation

◆ __construct()

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 489 of file ResourceCompressor.php.

◆ compressCssFile()

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

◆ 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 313 of file ResourceCompressor.php.

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

◆ 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 639 of file ResourceCompressor.php.

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

◆ compressJavaScriptSource()

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

Definition at line 615 of file ResourceCompressor.php.

References $GLOBALS.

◆ compressJsFile()

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

Compresses a javascript file

Parameters
string$filename‪Source filename, relative to requested page
Returns
‪string Filename of the compressed file, relative to requested page

Definition at line 397 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\getFilenameFromMainDir(), TYPO3\CMS\Core\Core\Environment\getPublicPath(), TYPO3\CMS\Core\Utility\PathUtility\pathinfo(), TYPO3\CMS\Core\Resource\ResourceCompressor\returnFileReference(), and TYPO3\CMS\Core\Resource\ResourceCompressor\writeFileAndCompressed().

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

◆ 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 374 of file ResourceCompressor.php.

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

◆ 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 114 of file ResourceCompressor.php.

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

◆ concatenateJsFiles()

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

Concatenates the JavaScript files

Parameters
array$jsFiles‪JavaScript files to process
Returns
‪array JS files

Definition at line 161 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\createMergedJsFile(), TYPO3\CMS\Core\Resource\ResourceCompressor\getFilenameFromMainDir(), and TYPO3\CMS\Core\Resource\ResourceCompressor\getJavaScriptFileType().

◆ 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 215 of file ResourceCompressor.php.

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

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

◆ createMergedFile()

mixed TYPO3\CMS\Core\Resource\ResourceCompressor::createMergedFile ( array  $filesToInclude,
  $type = 'css' 
)
protected

◆ 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 226 of file ResourceCompressor.php.

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

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

◆ cssFixRelativeUrlPaths()

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

◆ cssFixStatements()

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

◆ getFilenameFromMainDir()

◆ getJavaScriptFileType()

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

Determines the the JavaScript mime type

The <script> tag only needs the type if the page is not rendered as HTML5. In TYPO3 Backend or when TSFE is not available we always use HTML5. For TYPO3 Frontend the configured config.doctype is evaluated.

Returns
‪string

Definition at line 692 of file ResourceCompressor.php.

References $GLOBALS.

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

◆ getPathFixer()

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

◆ 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 602 of file ResourceCompressor.php.

References 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 '.gzip' or not - dependent on HTTP_ACCEPT_ENCODING

Definition at line 587 of file ResourceCompressor.php.

References 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().

◆ setRootPath()

◆ writeFileAndCompressed()

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

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

Parameters
string$filename‪Target filename
string$contentsFile contents

Definition at line 570 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 45 of file ResourceCompressor.php.

◆ $gzipCompressionLevel

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

Definition at line 49 of file ResourceCompressor.php.

◆ $htaccessTemplate

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

Definition at line 53 of file ResourceCompressor.php.

Referenced by TYPO3\CMS\Core\Tests\Unit\Resource\ResourceCompressorTest\Fixtures\TestableResourceCompressor\getHtaccessTemplate().

◆ $rootPath

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

◆ $targetDirectory

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

Definition at line 35 of file ResourceCompressor.php.