TYPO3 CMS  TYPO3_8-7
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)
 
 concatenateCssFiles (array $cssFiles, array $options=[])
 
 concatenateJsFiles (array $jsFiles)
 
 compressCssFiles (array $cssFiles)
 
 compressCssFile ($filename)
 
 compressJsFiles (array $jsFiles)
 
 compressJsFile ($filename)
 

Protected Member Functions

 createMergedCssFile (array $filesToInclude)
 
 createMergedJsFile (array $filesToInclude)
 
 createMergedFile (array $filesToInclude, $type='css')
 
 getFilenameFromMainDir ($filename)
 
 checkBaseDirectory ($filename, array $baseDirectories)
 
 cssFixRelativeUrlPaths ($contents, $oldDir)
 
 findAndReplaceUrlPathsByRegex ($contents, $regex, $newDir, $wrap='|')
 
 cssFixStatements ($contents)
 
 writeFileAndCompressed ($filename, $contents)
 
 returnFileReference ($filename)
 
 retrieveExternalFile ($url)
 
 compressCssString ($contents)
 

Protected Attributes

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

Detailed Description

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

Definition at line 25 of file ResourceCompressor.php.

Constructor & Destructor Documentation

◆ __construct()

Member Function Documentation

◆ checkBaseDirectory()

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

Decides whether a file comes from one of the baseDirectories

Parameters
string$filenameFilename
array$baseDirectoriesBase directories
Returns
bool File belongs to a base directory or not

Definition at line 483 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Utility\GeneralUtility\isFirstPartOfStr().

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

◆ compressCssFile()

◆ compressCssFiles()

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

Compress multiple css files

Parameters
array$cssFilesThe 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()

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

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

◆ compressJsFile()

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

◆ compressJsFiles()

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

Compress multiple javascript files

Parameters
array$jsFilesThe 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()

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$cssFilesCSS files to process
array$optionsAdditional options
Returns
array CSS files

Definition at line 112 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()

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

Concatenates the JavaScript files

Parameters
array$jsFilesJavaScript files to process
Returns
array JS files

Definition at line 170 of file ResourceCompressor.php.

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

◆ createMergedCssFile()

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

Creates a merged CSS file

Parameters
array$filesToIncludeFiles 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()

◆ createMergedJsFile()

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

Creates a merged JS file

Parameters
array$filesToIncludeFiles 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()

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

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

Parameters
string$contentsData to process
string$oldDirDirectory of the original file, relative to TYPO3_mainDir
Returns
string Processed data

Definition at line 501 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()

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

◆ findAndReplaceUrlPathsByRegex()

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

Finds and replaces all URLs by using a given regex

Parameters
string$contentsData to process
string$regexRegex used to find URLs in content
string$newDirPath to prepend to the original file
string$wrapWrap around replaced values
Returns
string Processed data

Definition at line 526 of file ResourceCompressor.php.

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

◆ getFilenameFromMainDir()

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

◆ retrieveExternalFile()

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

References TYPO3\CMS\Core\Utility\GeneralUtility\writeFile().

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

◆ returnFileReference()

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

References TYPO3\CMS\Core\Utility\GeneralUtility\getIndpEnv(), and TYPO3\CMS\Core\Utility\PathUtility\getRelativePath().

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

◆ setRootPath()

TYPO3\CMS\Core\Resource\ResourceCompressor::setRootPath (   $rootPath)

Sets absolute path to working directory

Parameters
string$rootPathAbsolute path

Definition at line 95 of file ResourceCompressor.php.

References TYPO3\CMS\Core\Resource\ResourceCompressor\$rootPath.

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

◆ 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$filenameTarget filename
string$contentsFile contents

Definition at line 607 of file ResourceCompressor.php.

References 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

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

Definition at line 42 of file ResourceCompressor.php.

◆ $gzipCompressionLevel

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

Definition at line 47 of file ResourceCompressor.php.

◆ $htaccessTemplate

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

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

◆ $rootPath

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

◆ $targetDirectory

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

Definition at line 30 of file ResourceCompressor.php.