‪TYPO3CMS  9.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 $options=[])
 
array concatenateJsFiles (array $jsFiles)
 
array compressCssFiles (array $cssFiles)
 
string compressCssFile ($filename)
 
array compressJsFiles (array $jsFiles)
 
string compressJsFile ($filename)
 

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 ($contents, $oldDir)
 
string findAndReplaceUrlPathsByRegex ($contents, $regex, $newDir, $wrap='|')
 
string cssFixStatements ($contents)
 
 writeFileAndCompressed ($filename, $contents)
 
string returnFileReference ($filename)
 
string retrieveExternalFile ($url)
 
string compressCssString ($contents)
 

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

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

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

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

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

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

◆ concatenateCssFiles()

array TYPO3\CMS\Core\Resource\ResourceCompressor::concatenateCssFiles ( array  $cssFiles,
array  $options = [] 
)

Concatenates the Stylesheet files

Options: baseDirectories If set, only include files below one of the base directories

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

Definition at line 108 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\checkBaseDirectory(), 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 166 of file ResourceCompressor.php.

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

◆ 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 219 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 230 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 (   $contents,
  $oldDir 
)
protected

Fixes the relative paths inside of url() references in CSS files

Parameters
string$contents‪Data to process
string$oldDir‪Directory of the original file, relative to TYPO3_mainDir
Returns
‪string Processed data

Definition at line 510 of file ResourceCompressor.php.

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

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

◆ cssFixStatements()

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

◆ findAndReplaceUrlPathsByRegex()

string TYPO3\CMS\Core\Resource\ResourceCompressor::findAndReplaceUrlPathsByRegex (   $contents,
  $regex,
  $newDir,
  $wrap = '|' 
)
protected

Finds and replaces all URLs by using a given regex

Parameters
string$contents‪Data to process
string$regex‪Regex used to find URLs in content
string$newDir‪Path to prepend to the original file
string$wrap‪Wrap around replaced values
Returns
‪string Processed data

Definition at line 535 of file ResourceCompressor.php.

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

◆ getFilenameFromMainDir()

string TYPO3\CMS\Core\Resource\ResourceCompressor::getFilenameFromMainDir (   $filename)
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 648 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Core\Environment\getPublicPath().

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

References TYPO3\CMS\Core\Core\Environment\getPublicPath().

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[TYPO3_MODE]['compressionLevel'] is set

Definition at line 40 of file ResourceCompressor.php.

◆ $gzipCompressionLevel

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

Definition at line 44 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 48 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 30 of file ResourceCompressor.php.