Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
Database Class Reference
Inheritance diagram for Database:
AbstractHelper

Public Member Functions

 __construct (\Magento\Framework\App\Helper\Context $context, \Magento\MediaStorage\Model\File\Storage\DatabaseFactory $dbStorageFactory, \Magento\MediaStorage\Model\File\Storage\File $fileStorage, Filesystem $filesystem)
 
 checkDbUsage ()
 
 getStorageDatabaseModel ()
 
 getStorageFileModel ()
 
 getResourceStorageModel ()
 
 saveFile ($filename)
 
 renameFile ($oldName, $newName)
 
 copyFile ($oldName, $newName)
 
 fileExists ($filename)
 
 getUniqueFilename ($directory, $filename)
 
 getMediaRelativePath ($fullPath)
 
 deleteFolder ($folderName)
 
 deleteFile ($filename)
 
 saveUploadedFile ($result)
 
 getMediaBaseDir ()
 
- Public Member Functions inherited from AbstractHelper
 __construct (Context $context)
 
 isModuleOutputEnabled ($moduleName=null)
 

Protected Member Functions

 _removeAbsPathFromFileName ($filename)
 
- Protected Member Functions inherited from AbstractHelper
 _getRequest ()
 
 _getModuleName ()
 
 _getUrl ($route, $params=[])
 

Protected Attributes

 $_databaseModel = null
 
 $_resourceModel = null
 
 $_useDb = null
 
 $_mediaBaseDirectory
 
 $_filesystem
 
 $_dbStorageFactory
 
 $_fileStorage
 
- Protected Attributes inherited from AbstractHelper
 $_moduleName
 
 $_request
 
 $_moduleManager
 
 $_logger
 
 $_urlBuilder
 
 $_httpHeader
 
 $_eventManager
 
 $_remoteAddress
 
 $urlEncoder
 
 $urlDecoder
 
 $scopeConfig
 
 $_cacheConfig
 

Detailed Description

Database saving file helper

@api

Since
100.0.2

Definition at line 18 of file Database.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Framework\App\Helper\Context  $context,
\Magento\MediaStorage\Model\File\Storage\DatabaseFactory  $dbStorageFactory,
\Magento\MediaStorage\Model\File\Storage\File  $fileStorage,
Filesystem  $filesystem 
)
Parameters
\Magento\Framework\App\Helper\Context$context
\Magento\MediaStorage\Model\File\Storage\DatabaseFactory$dbStorageFactory
\Magento\MediaStorage\Model\File\Storage\File$fileStorage
Filesystem$filesystem

Definition at line 67 of file Database.php.

72  {
73  $this->_filesystem = $filesystem;
74  $this->_dbStorageFactory = $dbStorageFactory;
75  $this->_fileStorage = $fileStorage;
76  parent::__construct($context);
77  }
$filesystem

Member Function Documentation

◆ _removeAbsPathFromFileName()

_removeAbsPathFromFileName (   $filename)
protected

Convert full file path to local (as used by model) If not - returns just a filename

Parameters
string$filename
Returns
string

Definition at line 318 of file Database.php.

319  {
320  return $this->getMediaRelativePath($filename);
321  }

◆ checkDbUsage()

checkDbUsage ( )

Check if we use DB storage

Returns
bool

Definition at line 84 of file Database.php.

85  {
86  if (null === $this->_useDb) {
87  $currentStorage = (int)$this->scopeConfig->getValue(
88  \Magento\MediaStorage\Model\File\Storage::XML_PATH_STORAGE_MEDIA,
89  'default'
90  );
92  }
93 
94  return $this->_useDb;
95  }

◆ copyFile()

copyFile (   $oldName,
  $newName 
)

Copy file in DB storage

Parameters
string$oldName
string$newName
Returns
void

Definition at line 171 of file Database.php.

172  {
173  if ($this->checkDbUsage()) {
174  $this->getStorageDatabaseModel()->copyFile(
175  $this->_removeAbsPathFromFileName($oldName),
176  $this->_removeAbsPathFromFileName($newName)
177  );
178  }
179  }

◆ deleteFile()

deleteFile (   $filename)

Deletes from DB files, which belong to one folder

Parameters
string$filename
Returns
void

Definition at line 271 of file Database.php.

◆ deleteFolder()

deleteFolder (   $folderName)

Deletes from DB files, which belong to one folder

Parameters
string$folderName
Returns
void

Definition at line 258 of file Database.php.

259  {
260  if ($this->checkDbUsage()) {
261  $this->getResourceStorageModel()->deleteFolder($this->_removeAbsPathFromFileName($folderName));
262  }
263  }

◆ fileExists()

fileExists (   $filename)

Check whether file exists in DB

Parameters
string$filenamecan be both full path or partial (like in DB)
Returns
bool|null

Definition at line 187 of file Database.php.

188  {
189  if ($this->checkDbUsage()) {
190  return $this->getStorageDatabaseModel()->fileExists($this->_removeAbsPathFromFileName($filename));
191  } else {
192  return null;
193  }
194  }

◆ getMediaBaseDir()

getMediaBaseDir ( )

Return Media base dir

Returns
string

Definition at line 328 of file Database.php.

329  {
330  if (null === $this->_mediaBaseDirectory) {
331  $mediaDir = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath();
332  $this->_mediaBaseDirectory = rtrim($mediaDir, '/');
333  }
335  }

◆ getMediaRelativePath()

getMediaRelativePath (   $fullPath)

Return relative uri for media content by full path

Parameters
string$fullPath
Returns
string

Definition at line 246 of file Database.php.

247  {
248  $relativePath = ltrim(str_replace($this->getMediaBaseDir(), '', $fullPath), '\\/');
249  return str_replace('\\', '/', $relativePath);
250  }
$relativePath
Definition: get.php:35

◆ getResourceStorageModel()

getResourceStorageModel ( )

Get storage model

Returns
\Magento\MediaStorage\Model\ResourceModel\File\Storage\Database

Definition at line 126 of file Database.php.

127  {
128  if ($this->_resourceModel === null) {
129  $this->_resourceModel = $this->getStorageDatabaseModel()->getResource();
130  }
131  return $this->_resourceModel;
132  }

◆ getStorageDatabaseModel()

getStorageDatabaseModel ( )

Get database storage model

Returns
\Magento\MediaStorage\Model\File\Storage\Database

Definition at line 102 of file Database.php.

103  {
104  if ($this->_databaseModel === null) {
105  $this->_databaseModel = $this->_dbStorageFactory->create();
106  }
107 
108  return $this->_databaseModel;
109  }

◆ getStorageFileModel()

getStorageFileModel ( )

Get file storage model

Returns
\Magento\MediaStorage\Model\File\Storage\File

Definition at line 116 of file Database.php.

◆ getUniqueFilename()

getUniqueFilename (   $directory,
  $filename 
)

Get unique name for passed file in case this file already exists

Parameters
string$directory- can be both full path or partial (like in DB)
string$filename- not just a filename. Can have directory chunks. return will have this form
Returns
string

Definition at line 203 of file Database.php.

204  {
205  if ($this->checkDbUsage()) {
206  $directory = $this->_removeAbsPathFromFileName($directory);
207  if ($this->fileExists($directory . $filename)) {
208  $index = 1;
209  $extension = strrchr($filename, '.');
210  $filenameWoExtension = substr($filename, 0, -1 * strlen($extension));
211  while ($this->fileExists($directory . $filenameWoExtension . '_' . $index . $extension)) {
212  $index++;
213  }
214  $filename = $filenameWoExtension . '_' . $index . $extension;
215  }
216  }
217  return $filename;
218  }
$index
Definition: list.phtml:44

◆ renameFile()

renameFile (   $oldName,
  $newName 
)

Rename file in DB storage

Parameters
string$oldName
string$newName
Returns
void

Definition at line 154 of file Database.php.

155  {
156  if ($this->checkDbUsage()) {
157  $this->getStorageDatabaseModel()->renameFile(
158  $this->_removeAbsPathFromFileName($oldName),
159  $this->_removeAbsPathFromFileName($newName)
160  );
161  }
162  }

◆ saveFile()

saveFile (   $filename)

Save file in DB storage

Parameters
string$filename
Returns
void

Definition at line 140 of file Database.php.

◆ saveUploadedFile()

saveUploadedFile (   $result)

Saves uploaded by \Magento\MediaStorage\Model\File\Uploader file to DB with existence tests

param $result should be result from \Magento\MediaStorage\Model\File\Uploader::save() method Checks in DB, whether uploaded file exists ($result['file']) If yes, renames file on FS (!!!!!) Saves file with unique name into DB If passed file exists returns new name, file was renamed to (in the same context) Otherwise returns $result['file']

Parameters
array$result
Returns
string

Definition at line 291 of file Database.php.

292  {
293  if ($this->checkDbUsage()) {
294  $path = rtrim(str_replace(['\\', '/'], '/', $result['path']), '/');
295  $file = '/' . ltrim($result['file'], '\\/');
296 
297  $uniqueResultFile = $this->getUniqueFilename($path, $file);
298 
299  if ($uniqueResultFile !== $file) {
300  $dirWrite = $this->_filesystem->getDirectoryWrite(DirectoryList::ROOT);
301  $dirWrite->renameFile($path . $file, $path . $uniqueResultFile);
302  }
303  $this->saveFile($path . $uniqueResultFile);
304 
305  return $uniqueResultFile;
306  } else {
307  return $result['file'];
308  }
309  }

Field Documentation

◆ $_databaseModel

$_databaseModel = null
protected

Definition at line 24 of file Database.php.

◆ $_dbStorageFactory

$_dbStorageFactory
protected

Definition at line 54 of file Database.php.

◆ $_fileStorage

$_fileStorage
protected

Definition at line 59 of file Database.php.

◆ $_filesystem

$_filesystem
protected

Definition at line 49 of file Database.php.

◆ $_mediaBaseDirectory

$_mediaBaseDirectory
protected

Definition at line 44 of file Database.php.

◆ $_resourceModel

$_resourceModel = null
protected

Definition at line 30 of file Database.php.

◆ $_useDb

$_useDb = null
protected

Definition at line 37 of file Database.php.


The documentation for this class was generated from the following file: