/** * Open file and detect column names * * There must be column names in the first line * * @param string $file * @param \Magento\Framework\Filesystem\Directory\Read $directory * @param string $delimiter * @param string $enclosure * @throws \LogicException */ public function __construct($file, \Magento\Framework\Filesystem\Directory\Read $directory, $delimiter = ',', $enclosure = '"') { register_shutdown_function([$this, 'destruct']); try { $this->_file = $directory->openFile($directory->getRelativePath($file), 'r'); } catch (\Magento\Framework\Exception\FileSystemException $e) { throw new \LogicException("Unable to open file: '{$file}'"); } if ($delimiter) { $this->_delimiter = $delimiter; } $this->_enclosure = $enclosure; parent::__construct($this->_getNextRow()); }
/** * Retrieve Resource file handle (socket, file pointer etc) * * @return \Magento\Framework\Filesystem\File\ReadInterface * @throws CoreException|\Exception */ protected function _getHandle() { if (!$this->_resourceFile) { throw new CoreException(__('Please set resource file and link type.')); } if (is_null($this->_handle)) { if ($this->_linkType == self::LINK_TYPE_URL) { $path = $this->_resourceFile; $protocol = strtolower(parse_url($path, PHP_URL_SCHEME)); if ($protocol) { // Strip down protocol from path $path = preg_replace('#.+://#', '', $path); } $this->_handle = $this->fileReadFactory->create($path, $protocol); } elseif ($this->_linkType == self::LINK_TYPE_FILE) { $this->_workingDirectory = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA); $fileExists = $this->_downloadableFile->ensureFileInFilesystem($this->_resourceFile); if ($fileExists) { $this->_handle = $this->_workingDirectory->openFile($this->_resourceFile); } else { throw new CoreException(__('Invalid download link type.')); } } else { throw new CoreException(__('Invalid download link type.')); } } return $this->_handle; }
/** * Retrieve Resource file handle (socket, file pointer etc) * * @return \Magento\Framework\Filesystem\File\ReadInterface * @throws CoreException|\Exception */ protected function _getHandle() { if (!$this->_resourceFile) { throw new CoreException(__('Please set resource file and link type.')); } if (is_null($this->_handle)) { if ($this->_linkType == self::LINK_TYPE_URL) { $this->_handle = $this->_filesystem->getRemoteResource($this->_resourceFile); } elseif ($this->_linkType == self::LINK_TYPE_FILE) { $this->_workingDirectory = $this->_filesystem->getDirectoryRead(Filesystem::MEDIA_DIR); $fileExists = $this->_downloadableFile->ensureFileInFilesystem($this->_resourceFile); if ($fileExists) { $this->_handle = $this->_workingDirectory->openFile($this->_resourceFile); } else { throw new CoreException(__('Invalid download link type.')); } } else { throw new CoreException(__('Invalid download link type.')); } } return $this->_handle; }