|
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 / setup / src / Magento / Setup / Module / I18n / |
Filename | /home/dev2.destoffenstraat.com/setup/src/Magento/Setup/Module/I18n/Context.php |
Size | 3.18 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 17-Aug-2025 10:26 |
Last modified | 28-Jan-2025 06:45 |
Last accessed | 24-Aug-2025 05:48 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Module\I18n;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Component\ComponentRegistrar;
use Magento\Framework\Filesystem;
/**
* Context
*/
class Context
{
/**
* Locale directory
*/
const LOCALE_DIRECTORY = 'i18n';
/**#@+
* Context info
*/
const CONTEXT_TYPE_MODULE = 'module';
const CONTEXT_TYPE_THEME = 'theme';
const CONTEXT_TYPE_LIB = 'lib';
/**#@-*/
/**#@-*/
private $componentRegistrar;
/**
* Constructor
*
* @param ComponentRegistrar $componentRegistrar
*/
public function __construct(ComponentRegistrar $componentRegistrar)
{
$this->componentRegistrar = $componentRegistrar;
}
/**
* Get context from file path in array(<context type>, <context value>) format
* - for module: <Namespace>_<module name>
* - for theme: <area>/<theme name>
* - for pub: relative path to file
*
* @param string $path
* @return array
* @throws \InvalidArgumentException
*/
public function getContextByPath($path)
{
if ($value = $this->getComponentName(ComponentRegistrar::MODULE, $path)) {
$type = self::CONTEXT_TYPE_MODULE;
} elseif ($value = $this->getComponentName(ComponentRegistrar::THEME, $path)) {
$type = self::CONTEXT_TYPE_THEME;
} elseif ($value = strstr($path, '/lib/web/')) {
$type = self::CONTEXT_TYPE_LIB;
$value = ltrim($value, '/');
} else {
throw new \InvalidArgumentException(sprintf('Invalid path given: "%s".', $path));
}
return [$type, $value];
}
/**
* Try to get component name by path, return false if not found
*
* @param string $componentType
* @param string $path
* @return bool|string
*/
private function getComponentName($componentType, $path)
{
foreach ($this->componentRegistrar->getPaths($componentType) as $componentName => $componentDir) {
$componentDir .= '/';
if (strpos($path, $componentDir) !== false) {
return $componentName;
}
}
return false;
}
/**
* Get paths by context
*
* @param string $type
* @param array $value
* @return string|null
* @throws \InvalidArgumentException
*/
public function buildPathToLocaleDirectoryByContext($type, $value)
{
switch ($type) {
case self::CONTEXT_TYPE_MODULE:
$path = $this->componentRegistrar->getPath(ComponentRegistrar::MODULE, $value);
break;
case self::CONTEXT_TYPE_THEME:
$path = $this->componentRegistrar->getPath(ComponentRegistrar::THEME, $value);
break;
case self::CONTEXT_TYPE_LIB:
$path = BP . '/lib/web';
break;
default:
throw new \InvalidArgumentException(sprintf('Invalid context given: "%s".', $type));
}
return (null === $path) ? null : $path . '/' . self::LOCALE_DIRECTORY . '/';
}
}
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Module\I18n;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Component\ComponentRegistrar;
use Magento\Framework\Filesystem;
/**
* Context
*/
class Context
{
/**
* Locale directory
*/
const LOCALE_DIRECTORY = 'i18n';
/**#@+
* Context info
*/
const CONTEXT_TYPE_MODULE = 'module';
const CONTEXT_TYPE_THEME = 'theme';
const CONTEXT_TYPE_LIB = 'lib';
/**#@-*/
/**#@-*/
private $componentRegistrar;
/**
* Constructor
*
* @param ComponentRegistrar $componentRegistrar
*/
public function __construct(ComponentRegistrar $componentRegistrar)
{
$this->componentRegistrar = $componentRegistrar;
}
/**
* Get context from file path in array(<context type>, <context value>) format
* - for module: <Namespace>_<module name>
* - for theme: <area>/<theme name>
* - for pub: relative path to file
*
* @param string $path
* @return array
* @throws \InvalidArgumentException
*/
public function getContextByPath($path)
{
if ($value = $this->getComponentName(ComponentRegistrar::MODULE, $path)) {
$type = self::CONTEXT_TYPE_MODULE;
} elseif ($value = $this->getComponentName(ComponentRegistrar::THEME, $path)) {
$type = self::CONTEXT_TYPE_THEME;
} elseif ($value = strstr($path, '/lib/web/')) {
$type = self::CONTEXT_TYPE_LIB;
$value = ltrim($value, '/');
} else {
throw new \InvalidArgumentException(sprintf('Invalid path given: "%s".', $path));
}
return [$type, $value];
}
/**
* Try to get component name by path, return false if not found
*
* @param string $componentType
* @param string $path
* @return bool|string
*/
private function getComponentName($componentType, $path)
{
foreach ($this->componentRegistrar->getPaths($componentType) as $componentName => $componentDir) {
$componentDir .= '/';
if (strpos($path, $componentDir) !== false) {
return $componentName;
}
}
return false;
}
/**
* Get paths by context
*
* @param string $type
* @param array $value
* @return string|null
* @throws \InvalidArgumentException
*/
public function buildPathToLocaleDirectoryByContext($type, $value)
{
switch ($type) {
case self::CONTEXT_TYPE_MODULE:
$path = $this->componentRegistrar->getPath(ComponentRegistrar::MODULE, $value);
break;
case self::CONTEXT_TYPE_THEME:
$path = $this->componentRegistrar->getPath(ComponentRegistrar::THEME, $value);
break;
case self::CONTEXT_TYPE_LIB:
$path = BP . '/lib/web';
break;
default:
throw new \InvalidArgumentException(sprintf('Invalid context given: "%s".', $type));
}
return (null === $path) ? null : $path . '/' . self::LOCALE_DIRECTORY . '/';
}
}