Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Collection.php
Go to the documentation of this file.
1 <?php
7 
9 
15 class Collection extends \Magento\Framework\Data\Collection\Filesystem
16 {
20  protected $_varDirectory;
21 
27  protected $_path = 'backups';
28 
34  protected $_backupData = null;
35 
41  protected $_backup = null;
42 
49  public function __construct(
50  \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
51  \Magento\Backup\Helper\Data $backupData,
52  \Magento\Framework\Filesystem $filesystem,
53  \Magento\Backup\Model\Backup $backup
54  ) {
55  $this->_backupData = $backupData;
56  parent::__construct($entityFactory);
57 
58  $this->_filesystem = $filesystem;
59  $this->_backup = $backup;
60  $this->_varDirectory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
61 
62  $this->_hideBackupsForApache();
63 
64  // set collection specific params
65  $extensions = $this->_backupData->getExtensions();
66 
67  foreach ($extensions as $value) {
68  $extensions[] = '(' . preg_quote($value, '/') . ')';
69  }
70  $extensions = implode('|', $extensions);
71 
72  $this->_varDirectory->create($this->_path);
73  $path = rtrim($this->_varDirectory->getAbsolutePath($this->_path), '/') . '/';
74  $this->setOrder(
75  'time',
76  self::SORT_ORDER_DESC
77  )->addTargetDir(
78  $path
79  )->setFilesFilter(
80  '/^[a-z0-9\-\_]+\.' . $extensions . '$/'
81  )->setCollectRecursively(
82  false
83  );
84  }
85 
91  protected function _hideBackupsForApache()
92  {
93  $filename = '.htaccess';
94  if (!$this->_varDirectory->isFile($filename)) {
95  $this->_varDirectory->writeFile($filename, 'deny from all');
96  }
97  }
98 
105  protected function _generateRow($filename)
106  {
107  $row = parent::_generateRow($filename);
108  foreach ($this->_backup->load(
109  $row['basename'],
110  $this->_varDirectory->getAbsolutePath($this->_path)
111  )->getData() as $key => $value) {
112  $row[$key] = $value;
113  }
114  $row['size'] = $this->_varDirectory->stat($this->_varDirectory->getRelativePath($filename))['size'];
115  if (isset($row['display_name']) && $row['display_name'] == '') {
116  $row['display_name'] = 'WebSetupWizard';
117  }
118  $row['id'] = $row['time'] . '_' . $row['type']
119  . (isset($row['display_name']) ? '_' . $row['display_name'] : '');
120  return $row;
121  }
122 }
__construct(\Magento\Framework\Data\Collection\EntityFactory $entityFactory, \Magento\Backup\Helper\Data $backupData, \Magento\Framework\Filesystem $filesystem, \Magento\Backup\Model\Backup $backup)
Definition: Collection.php:49
setOrder($field, $direction=self::SORT_ORDER_DESC)
Definition: Filesystem.php:392
$value
Definition: gender.phtml:16
$filesystem