b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / dev2.destoffenstraat.com / vendor / magento / framework / View /
Filename/home/dev2.destoffenstraat.com/vendor/magento/framework/View/FileSystem.php
Size7.91 kb
Permissionrw-r--r--
Ownerroot : root
Create time17-Aug-2025 10:26
Last modified07-Jan-2021 21:08
Last accessed23-Aug-2025 03:56
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\View;

/**
* Model that finds file paths by their fileId
*
* @api
* @since 100.0.2
*/
class FileSystem
{
/**
* @var \Magento\Framework\View\Design\FileResolution\Fallback\File
*/
protected $_fileResolution;

/**
* @var \Magento\Framework\View\Design\FileResolution\Fallback\TemplateFile
*/
protected $_templateFileResolution;

/**
* @var \Magento\Framework\View\Design\FileResolution\Fallback\LocaleFile
*/
protected $_localeFileResolution;

/**
* @var \Magento\Framework\View\Design\FileResolution\Fallback\StaticFile
*/
protected $_staticFileResolution;

/**
* @var \Magento\Framework\View\Design\FileResolution\Fallback\EmailTemplateFile
*/
protected $_emailTemplateFileResolution;

/**
* View service
*
* @var \Magento\Framework\View\Asset\Repository
*/
protected $_assetRepo;

/**
* Constructor
*
* @param \Magento\Framework\View\Design\FileResolution\Fallback\File $fallbackFile
* @param \Magento\Framework\View\Design\FileResolution\Fallback\TemplateFile $fallbackTemplateFile
* @param \Magento\Framework\View\Design\FileResolution\Fallback\LocaleFile $fallbackLocaleFile
* @param \Magento\Framework\View\Design\FileResolution\Fallback\StaticFile $fallbackStaticFile
* @param \Magento\Framework\View\Design\FileResolution\Fallback\EmailTemplateFile $fallbackEmailTemplateFile
* @param \Magento\Framework\View\Asset\Repository $assetRepo
*/
public function __construct(
\Magento\Framework\View\Design\FileResolution\Fallback\File $fallbackFile,
\Magento\Framework\View\Design\FileResolution\Fallback\TemplateFile $fallbackTemplateFile,
\Magento\Framework\View\Design\FileResolution\Fallback\LocaleFile $fallbackLocaleFile,
\Magento\Framework\View\Design\FileResolution\Fallback\StaticFile $fallbackStaticFile,
\Magento\Framework\View\Design\FileResolution\Fallback\EmailTemplateFile $fallbackEmailTemplateFile,
\Magento\Framework\View\Asset\Repository $assetRepo
) {
$this->_fileResolution = $fallbackFile;
$this->_templateFileResolution = $fallbackTemplateFile;
$this->_localeFileResolution = $fallbackLocaleFile;
$this->_staticFileResolution = $fallbackStaticFile;
$this->_emailTemplateFileResolution = $fallbackEmailTemplateFile;
$this->_assetRepo = $assetRepo;
}

/**
* Get existing file name with fallback to default
*
* @param string $fileId
* @param array $params
* @return string
*/
public function getFilename($fileId, array $params = [])
{
list($module, $filePath) = \Magento\Framework\View\Asset\Repository::extractModule(
$this->normalizePath($fileId)
);
if ($module) {
$params['module'] = $module;
}
$this->_assetRepo->updateDesignParams($params);
$file = $this->_fileResolution
->getFile($params['area'], $params['themeModel'], $filePath, $params['module']);
return $file;
}

/**
* Get a locale file
*
* @param string $file
* @param array $params
* @return string
*/
public function getLocaleFileName($file, array $params = [])
{
$this->_assetRepo->updateDesignParams($params);
return $this->_localeFileResolution
->getFile($params['area'], $params['themeModel'], $params['locale'], $file);
}

/**
* Get a template file
*
* @param string $fileId
* @param array $params
* @return string|bool
*/
public function getTemplateFileName($fileId, array $params = [])
{
list($module, $filePath) = \Magento\Framework\View\Asset\Repository::extractModule(
$this->normalizePath($fileId)
);
if ($module) {
$params['module'] = $module;
}
$this->_assetRepo->updateDesignParams($params);
return $this->_templateFileResolution
->getFile($params['area'], $params['themeModel'], $filePath, $params['module']);
}

/**
* Find a static view file using fallback mechanism
*
* @param string $fileId
* @param array $params
* @return string
*/
public function getStaticFileName($fileId, array $params = [])
{
list($module, $filePath) = \Magento\Framework\View\Asset\Repository::extractModule(
$this->normalizePath($fileId)
);
if ($module) {
$params['module'] = $module;
}
$this->_assetRepo->updateDesignParams($params);
return $this->_staticFileResolution
->getFile($params['area'], $params['themeModel'], $params['locale'], $filePath, $params['module']);
}

/**
* Get an email template file
*
* @param string $fileId
* @param array $params
* @param string $module
* @return string|bool
*/
public function getEmailTemplateFileName($fileId, array $params, $module)
{
$this->_assetRepo->updateDesignParams($params);
return $this->_emailTemplateFileResolution
->getFile($params['area'], $params['themeModel'], $params['locale'], $fileId, $module);
}

/**
* Remove excessive "." and ".." parts from a path
*
* For example foo/bar/../file.ext -> foo/file.ext
*
* @param string $path
* @return string
*/
public static function normalizePath($path)
{
$parts = explode('/', $path);
$result = [];

foreach ($parts as $part) {
if ('..' === $part) {
if (!count($result) || ($result[count($result) - 1] == '..')) {
$result[] = $part;
} else {
array_pop($result);
}
} elseif ('.' !== $part) {
$result[] = $part;
}
}
return implode('/', $result);
}

/**
* Get a relative path between $relatedPath and $path paths as if $path was to refer to $relatedPath
* relatively of itself
*
* Returns new calculated relative path.
* Examples:
* $path: /some/directory/one/file.ext
* $relatedPath: /some/directory/two/another/file.ext
* Result: ../two/another
*
* $path: http://example.com/themes/demo/css/styles.css
* $relatedPath: http://example.com/images/logo.gif
* Result: ../../../images
*
* @param string $relatedPath
* @param string $path
* @return string
*/
public static function offsetPath($relatedPath, $path)
{
$relatedPath = self::normalizePath($relatedPath);
$path = self::normalizePath($path);
list($relatedPath, $path) = self::ltrimSamePart($relatedPath, $path);
$toDir = ltrim(dirname($path), '/');
if ($toDir == '.') {
$offset = '';
} else {
$offset = str_repeat('../', count(explode('/', $toDir)));
}
return rtrim($offset . dirname($relatedPath), '/');
}

/**
* Concatenate/normalize a path to another path as a relative, assuming it will be relative to its directory
*
* @param string $relativeTo
* @param string $path
* @return string
*/
public static function getRelatedPath($relativeTo, $path)
{
return self::normalizePath(dirname($relativeTo) . '/' . $path);
}

/**
* Left-trim same part of two paths
*
* @param string $pathOne
* @param string $pathTwo
* @return array
*/
private static function ltrimSamePart($pathOne, $pathTwo)
{
$one = explode('/', $pathOne);
$two = explode('/', $pathTwo);
while (isset($one[0]) && isset($two[0]) && $one[0] == $two[0]) {
array_shift($one);
array_shift($two);
}
return [implode('/', $one), implode('/', $two)];
}
}