71 lines
1.9 KiB
PHP
Executable File
71 lines
1.9 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* @author Amasty Team
|
|
* @copyright Copyright (c) Amasty (https://www.amasty.com)
|
|
* @package Elastic Search Base for Magento 2
|
|
*/
|
|
|
|
namespace Amasty\ElasticSearch\Setup\Model;
|
|
|
|
use InvalidArgumentException as InvalidArgumentException;
|
|
use Magento\Framework\Filesystem\Io\File as FileSystem;
|
|
use Magento\Framework\Component\ComponentRegistrar;
|
|
|
|
class ModuleDataProvider
|
|
{
|
|
public const MODULE_DATA_FOLDER = 'data';
|
|
|
|
/**
|
|
* @var FileSystem
|
|
*/
|
|
private $fileSystem;
|
|
|
|
/**
|
|
* @var ComponentRegistrar
|
|
*/
|
|
private $moduleDirectoryProvider;
|
|
|
|
public function __construct(
|
|
FileSystem $fileSystem,
|
|
ComponentRegistrar $moduleDirectoryProvider
|
|
) {
|
|
$this->fileSystem = $fileSystem;
|
|
$this->moduleDirectoryProvider = $moduleDirectoryProvider;
|
|
}
|
|
|
|
public function getModuleDataFilePath(string $fileName, string $directory = ''): string
|
|
{
|
|
if (!preg_match('/(^[a-z_]+$)|(^$)/m', $directory)) {
|
|
throw new InvalidArgumentException(__('Invalid directory provided')->render());
|
|
}
|
|
|
|
$moduleDirectory = $this->moduleDirectoryProvider->getPath(
|
|
ComponentRegistrar::MODULE,
|
|
'Amasty_ElasticSearch'
|
|
);
|
|
$moduleDataDirectory = $moduleDirectory . DIRECTORY_SEPARATOR . self::MODULE_DATA_FOLDER;
|
|
|
|
if ($directory !== '') {
|
|
$moduleDataDirectory .= DIRECTORY_SEPARATOR . $directory;
|
|
}
|
|
|
|
$filePath = $moduleDataDirectory . DIRECTORY_SEPARATOR . $fileName;
|
|
|
|
if (!$this->fileSystem->fileExists($filePath)) {
|
|
throw new InvalidArgumentException(__('Module data file doesn\'t exists.')->render());
|
|
}
|
|
|
|
return $filePath;
|
|
}
|
|
|
|
public function getModuleDataFileContent(string $fileName, string $directory = ''): string
|
|
{
|
|
return $this->fileSystem->read(
|
|
$this->getModuleDataFilePath($fileName, $directory)
|
|
);
|
|
}
|
|
}
|