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 / a / home / dev2.destoffenstraat.com / app / Firebear / ImportExport / Model / Import / Source /
Filename/home/a/home/dev2.destoffenstraat.com/app/Firebear/ImportExport/Model/Import/Source/Csv.php
Size5.19 kb
Permissionrwxr-xr-x
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified07-Nov-2022 06:44
Last accessed23-Aug-2025 12:49
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* @copyright: Copyright © 2017 Firebear Studio. All rights reserved.
* @author : Firebear Studio <fbeardev@gmail.com>
*/

namespace Firebear\ImportExport\Model\Import\Source;

use Magento\Framework\Filesystem\Directory\Read as Directory;
use Magento\Framework\Exception\FileSystemException;
use Magento\Framework\Exception\LocalizedException;
use Magento\ImportExport\Model\Import\AbstractEntity;
use Magento\ImportExport\Model\Import\AbstractSource;
use Magento\ImportExport\Model\Import;
use Firebear\ImportExport\Model\Source\Platform\PlatformInterface;
use Firebear\ImportExport\Traits\Import\Map as ImportMap;
use Firebear\ImportExport\Api\Data\SeparatorFormatterInterface;

/**
* CSV import adapter
*/
class Csv extends AbstractSource
{
use ImportMap;

/**
* @var \Magento\Framework\Filesystem\File\Write
*/
protected $file;

/**
* Delimiter
*
* @var string
*/
protected $delimiter = ',';

/**
* @var string
*/
protected $enclosure = '"';

protected $maps;

protected $extension = 'csv';

protected $mimeTypes = [
];

/**
* Platform
*
* @var \Firebear\ImportExport\Model\Source\Platform\PlatformInterface
*/
protected $platform;

/**
* Initialize Adapter
*
* @param array $file
* @param Directory $directory
* @param SeparatorFormatterInterface $separatorFormatter
* @param PlatformInterface $platform
* @param array $data
*
* @throws LocalizedException
* @throws \LogicException
* @throws \Exception
*/
public function __construct(
$file,
Directory $directory,
SeparatorFormatterInterface $separatorFormatter,
PlatformInterface $platform = null,
$data = []
) {
register_shutdown_function([$this, 'destruct']);
try {
$result = $this->checkMimeType(
$directory->getRelativePath($file)
);
if ($result !== true) {
throw new LocalizedException($result);
}
$this->file = $directory->openFile(
$directory->getRelativePath($file),
'r'
);
} catch (FileSystemException $e) {
throw new \LogicException("Unable to open file: '{$file}'");
}

$this->platform = $platform;
$this->delimiter = $data[Import::FIELD_FIELD_SEPARATOR] ?? $$this->delimiter;
$this->delimiter = $separatorFormatter->format($this->delimiter);
try {
$originalData = $this->_getNextRow();
$parseData = $platform && method_exists($platform, 'prepareData')
? $platform->prepareData($originalData)
: $originalData;
} catch (\Exception $e) {
throw $e;
}
parent::__construct(
$parseData
);
}

/**
* Close file handle
*
* @return void
*/
public function destruct()
{
if (is_object($this->file)) {
$this->file->close();
}
}

/**
* Checks if current position is valid (\Iterator interface)
*
* @return bool
*/
public function valid()
{
return -1 !== $this->_key;
}

/**
* Read next line from CSV-file
*
* @return array|bool
*/
protected function _getNextRow()
{
$parsed = $this->file->readCsv(0, $this->delimiter, $this->enclosure);
if (is_array($parsed) && count($parsed) != $this->_colQty) {
foreach ($parsed as $element) {
if (strpos($element, "'") !== false) {
$this->_foundWrongQuoteFlag = true;
break;
}
}
} else {
$this->_foundWrongQuoteFlag = false;
}

return is_array($parsed) ? $parsed : [];
}

/**
* Rewind the \Iterator to the first element (\Iterator interface)
*
* @return void
*/
public function rewind()
{
$this->file->seek(0);
$this->_getNextRow();
// skip first line with the header
parent::rewind();
}

/**
* @return array
*/
public function current()
{
$row = $this->_row;
if (count($row) != $this->_colQty) {
$error = $this->_foundWrongQuoteFlag
? AbstractEntity::ERROR_CODE_WRONG_QUOTES
: AbstractEntity::ERROR_CODE_COLUMNS_NUMBER;
throw new \InvalidArgumentException($error);
}

$array = array_combine($this->_colNames, $row);
return $this->replaceValue(
$this->changeFields($array)
);
}

/**
* @return mixed
*/
public function getColNames()
{
return $this->replaceColumns($this->_colNames);
}

/**
* Set Platform
*
* @param PlatformInterface $platform
* @return $this
*/
public function setPlatform($platform)
{
$this->platform = $platform;

return $this;
}

/**
* Return Platform
*
* @return null|\Firebear\ImportExport\Model\Source\Platform\PlatformInterface
*/
public function getPlatform()
{
return $this->platform;
}
}