/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter/Import
Edit: /home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter/Import/CsvFileOpener.php (2636B)
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
*/
namespace PrestaShop\PrestaShop\Adapter\Import;
use PrestaShop\PrestaShop\Core\File\Converter\FileConverterInterface;
use PrestaShop\PrestaShop\Core\Import\Exception\UnreadableFileException;
use PrestaShop\PrestaShop\Core\Import\File\FileOpenerInterface;
use SplFileInfo;
/**
* Class CsvFileOpener is responsible for opening the CSV import file.
*/
final class CsvFileOpener implements FileOpenerInterface
{
/**
* @var FileConverterInterface
*/
private $excelToCsvConverter;
/**
* @param FileConverterInterface $excelToCsvConverter
*/
public function __construct(FileConverterInterface $excelToCsvConverter)
{
$this->excelToCsvConverter = $excelToCsvConverter;
}
/**
* {@inheritdoc}
*/
public function open(SplFileInfo $file)
{
$importFile = $this->excelToCsvConverter->convert($file);
$filePath = $importFile->getPathname();
$isReadableFile = is_file($filePath) && is_readable($filePath);
if (!$isReadableFile || !($handle = fopen($filePath, 'r'))) {
throw new UnreadableFileException();
}
$this->rewindBomAware($handle);
return $handle;
}
/**
* Rewind the file handle, skipping BOM signature.
*
* @param resource $handle
*/
private function rewindBomAware($handle)
{
if (!is_resource($handle)) {
return;
}
rewind($handle);
if (($bom = fread($handle, 3)) != "\xEF\xBB\xBF") {
rewind($handle);
}
}
}