Skip to content

Commit 1de87cf

Browse files
authored
Merge pull request #3483 from magento-borg/2.3.0-release-sync
[2.3-develop] sync up with release branch
2 parents 076ec45 + 6fe7a8d commit 1de87cf

File tree

89 files changed

+1290
-1157
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+1290
-1157
lines changed

app/code/Magento/Backend/Block/Page/Footer.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function __construct(
4040
}
4141

4242
/**
43-
* @return void
43+
* @inheritdoc
4444
*/
4545
protected function _construct()
4646
{
@@ -57,4 +57,12 @@ public function getMagentoVersion()
5757
{
5858
return $this->productMetadata->getVersion();
5959
}
60+
61+
/**
62+
* @inheritdoc
63+
*/
64+
protected function getCacheLifetime()
65+
{
66+
return 3600 * 24 * 10;
67+
}
6068
}

app/code/Magento/Backend/Block/System/Store/Delete/Form.php

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,35 @@
55
*/
66
namespace Magento\Backend\Block\System\Store\Delete;
77

8+
use Magento\Backup\Helper\Data as BackupHelper;
9+
use Magento\Framework\App\ObjectManager;
10+
811
/**
912
* Adminhtml cms block edit form
1013
*
1114
* @author Magento Core Team <[email protected]>
1215
*/
1316
class Form extends \Magento\Backend\Block\Widget\Form\Generic
1417
{
18+
/**
19+
* @var BackupHelper
20+
*/
21+
private $backup;
22+
23+
/**
24+
* @inheritDoc
25+
*/
26+
public function __construct(
27+
\Magento\Backend\Block\Template\Context $context,
28+
\Magento\Framework\Registry $registry,
29+
\Magento\Framework\Data\FormFactory $formFactory,
30+
array $data = [],
31+
?BackupHelper $backup = null
32+
) {
33+
parent::__construct($context, $registry, $formFactory, $data);
34+
$this->backup = $backup ?? ObjectManager::getInstance()->get(BackupHelper::class);
35+
}
36+
1537
/**
1638
* Init form
1739
*
@@ -25,7 +47,7 @@ protected function _construct()
2547
}
2648

2749
/**
28-
* {@inheritdoc}
50+
* @inheritDoc
2951
*/
3052
protected function _prepareForm()
3153
{
@@ -45,15 +67,21 @@ protected function _prepareForm()
4567

4668
$fieldset->addField('item_id', 'hidden', ['name' => 'item_id', 'value' => $dataObject->getId()]);
4769

70+
$backupOptions = ['0' => __('No')];
71+
$backupSelected = '0';
72+
if ($this->backup->isEnabled()) {
73+
$backupOptions['1'] = __('Yes');
74+
$backupSelected = '1';
75+
}
4876
$fieldset->addField(
4977
'create_backup',
5078
'select',
5179
[
5280
'label' => __('Create DB Backup'),
5381
'title' => __('Create DB Backup'),
5482
'name' => 'create_backup',
55-
'options' => ['1' => __('Yes'), '0' => __('No')],
56-
'value' => '1'
83+
'options' => $backupOptions,
84+
'value' => $backupSelected
5785
]
5886
);
5987

app/code/Magento/Backend/Controller/Adminhtml/System/Store.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* Store controller
1515
*
1616
* @author Magento Core Team <[email protected]>
17+
* @SuppressWarnings(PHPMD.AllPurposeAction)
1718
*/
1819
abstract class Store extends Action
1920
{
@@ -86,6 +87,8 @@ protected function createPage()
8687
* Backup database
8788
*
8889
* @return bool
90+
*
91+
* @deprecated Backup module is to be removed.
8992
*/
9093
protected function _backupDatabase()
9194
{

app/code/Magento/Backup/Controller/Adminhtml/Index.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77

88
use Magento\Backend\App\Action;
99
use Magento\Framework\App\Action\HttpGetActionInterface;
10+
use Magento\Backup\Helper\Data as Helper;
11+
use Magento\Framework\App\ObjectManager;
1012

1113
/**
1214
* Backup admin controller
1315
*
1416
* @author Magento Core Team <[email protected]>
1517
* @api
1618
* @since 100.0.2
19+
* @SuppressWarnings(PHPMD.AllPurposeAction)
1720
*/
1821
abstract class Index extends Action implements HttpGetActionInterface
1922
{
@@ -51,27 +54,47 @@ abstract class Index extends Action implements HttpGetActionInterface
5154
*/
5255
protected $maintenanceMode;
5356

57+
/**
58+
* @var Helper
59+
*/
60+
private $helper;
61+
5462
/**
5563
* @param \Magento\Backend\App\Action\Context $context
5664
* @param \Magento\Framework\Registry $coreRegistry
5765
* @param \Magento\Framework\Backup\Factory $backupFactory
5866
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
5967
* @param \Magento\Backup\Model\BackupFactory $backupModelFactory
6068
* @param \Magento\Framework\App\MaintenanceMode $maintenanceMode
69+
* @param Helper|null $helper
6170
*/
6271
public function __construct(
6372
\Magento\Backend\App\Action\Context $context,
6473
\Magento\Framework\Registry $coreRegistry,
6574
\Magento\Framework\Backup\Factory $backupFactory,
6675
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
6776
\Magento\Backup\Model\BackupFactory $backupModelFactory,
68-
\Magento\Framework\App\MaintenanceMode $maintenanceMode
77+
\Magento\Framework\App\MaintenanceMode $maintenanceMode,
78+
?Helper $helper = null
6979
) {
7080
$this->_coreRegistry = $coreRegistry;
7181
$this->_backupFactory = $backupFactory;
7282
$this->_fileFactory = $fileFactory;
7383
$this->_backupModelFactory = $backupModelFactory;
7484
$this->maintenanceMode = $maintenanceMode;
85+
$this->helper = $helper ?? ObjectManager::getInstance()->get(Helper::class);
7586
parent::__construct($context);
7687
}
88+
89+
/**
90+
* @inheritDoc
91+
*/
92+
public function dispatch(\Magento\Framework\App\RequestInterface $request)
93+
{
94+
if (!$this->helper->isEnabled()) {
95+
return $this->_redirect('*/*/disabled');
96+
}
97+
98+
return parent::dispatch($request);
99+
}
77100
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types=1);
8+
9+
namespace Magento\Backup\Controller\Adminhtml\Index;
10+
11+
use Magento\Backend\App\Action;
12+
use Magento\Backend\App\Action\Context;
13+
use Magento\Framework\App\Action\HttpGetActionInterface;
14+
use Magento\Framework\View\Result\PageFactory;
15+
16+
/**
17+
* Inform that backup is disabled.
18+
*/
19+
class Disabled extends Action implements HttpGetActionInterface
20+
{
21+
/**
22+
* @see _isAllowed()
23+
*/
24+
const ADMIN_RESOURCE = 'Magento_Backend::backup';
25+
26+
/**
27+
* @var PageFactory
28+
*/
29+
private $pageFactory;
30+
31+
/**
32+
* @param Context $context
33+
* @param PageFactory $pageFactory
34+
*/
35+
public function __construct(Context $context, PageFactory $pageFactory)
36+
{
37+
parent::__construct($context);
38+
$this->pageFactory = $pageFactory;
39+
}
40+
41+
/**
42+
* @inheritDoc
43+
*/
44+
public function execute()
45+
{
46+
return $this->pageFactory->create();
47+
}
48+
}

app/code/Magento/Backup/Cron/SystemBackup.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
use Magento\Framework\App\Filesystem\DirectoryList;
99
use Magento\Store\Model\ScopeInterface;
1010

11+
/**
12+
* Performs scheduled backup.
13+
*/
1114
class SystemBackup
1215
{
1316
const XML_PATH_BACKUP_ENABLED = 'system/backup/enabled';
@@ -101,6 +104,10 @@ public function __construct(
101104
*/
102105
public function execute()
103106
{
107+
if (!$this->_backupData->isEnabled()) {
108+
return $this;
109+
}
110+
104111
if (!$this->_scopeConfig->isSetFlag(self::XML_PATH_BACKUP_ENABLED, ScopeInterface::SCOPE_STORE)) {
105112
return $this;
106113
}

app/code/Magento/Backup/Helper/Data.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
7+
declare(strict_types=1);
8+
69
namespace Magento\Backup\Helper;
710

811
use Magento\Framework\App\Filesystem\DirectoryList;
@@ -285,4 +288,14 @@ public function extractDataFromFilename($filename)
285288

286289
return $result;
287290
}
291+
292+
/**
293+
* Is backup functionality enabled.
294+
*
295+
* @return bool
296+
*/
297+
public function isEnabled(): bool
298+
{
299+
return $this->scopeConfig->isSetFlag('system/backup/functionality_enabled');
300+
}
288301
}

app/code/Magento/Backup/Model/Db.php

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@
55
*/
66
namespace Magento\Backup\Model;
77

8+
use Magento\Backup\Helper\Data as Helper;
9+
use Magento\Framework\App\ObjectManager;
10+
use Magento\Framework\Exception\RuntimeException;
11+
812
/**
913
* Database backup model
1014
*
1115
* @api
1216
* @since 100.0.2
17+
* @deprecated Backup module is to be removed.
1318
*/
1419
class Db implements \Magento\Framework\Backup\Db\BackupDbInterface
1520
{
@@ -33,16 +38,24 @@ class Db implements \Magento\Framework\Backup\Db\BackupDbInterface
3338
*/
3439
protected $_resource = null;
3540

41+
/**
42+
* @var Helper
43+
*/
44+
private $helper;
45+
3646
/**
3747
* @param \Magento\Backup\Model\ResourceModel\Db $resourceDb
3848
* @param \Magento\Framework\App\ResourceConnection $resource
49+
* @param Helper|null $helper
3950
*/
4051
public function __construct(
4152
\Magento\Backup\Model\ResourceModel\Db $resourceDb,
42-
\Magento\Framework\App\ResourceConnection $resource
53+
\Magento\Framework\App\ResourceConnection $resource,
54+
?Helper $helper = null
4355
) {
4456
$this->_resourceDb = $resourceDb;
4557
$this->_resource = $resource;
58+
$this->helper = $helper ?? ObjectManager::getInstance()->get(Helper::class);
4659
}
4760

4861
/**
@@ -63,6 +76,8 @@ public function getResource()
6376
}
6477

6578
/**
79+
* Tables list.
80+
*
6681
* @return array
6782
*/
6883
public function getTables()
@@ -71,6 +86,8 @@ public function getTables()
7186
}
7287

7388
/**
89+
* Command to recreate given table.
90+
*
7491
* @param string $tableName
7592
* @param bool $addDropIfExists
7693
* @return string
@@ -81,6 +98,8 @@ public function getTableCreateScript($tableName, $addDropIfExists = false)
8198
}
8299

83100
/**
101+
* Generate table's data dump.
102+
*
84103
* @param string $tableName
85104
* @return string
86105
*/
@@ -90,6 +109,8 @@ public function getTableDataDump($tableName)
90109
}
91110

92111
/**
112+
* Header for dumps.
113+
*
93114
* @return string
94115
*/
95116
public function getHeader()
@@ -98,6 +119,8 @@ public function getHeader()
98119
}
99120

100121
/**
122+
* Footer for dumps.
123+
*
101124
* @return string
102125
*/
103126
public function getFooter()
@@ -106,6 +129,8 @@ public function getFooter()
106129
}
107130

108131
/**
132+
* Get backup SQL.
133+
*
109134
* @return string
110135
*/
111136
public function renderSql()
@@ -124,13 +149,14 @@ public function renderSql()
124149
}
125150

126151
/**
127-
* Create backup and stream write to adapter
128-
*
129-
* @param \Magento\Framework\Backup\Db\BackupInterface $backup
130-
* @return $this
152+
* @inheritDoc
131153
*/
132154
public function createBackup(\Magento\Framework\Backup\Db\BackupInterface $backup)
133155
{
156+
if (!$this->helper->isEnabled()) {
157+
throw new RuntimeException(__('Backup functionality is disabled'));
158+
}
159+
134160
$backup->open(true);
135161

136162
$this->getResource()->beginTransaction();
@@ -179,8 +205,6 @@ public function createBackup(\Magento\Framework\Backup\Db\BackupInterface $backu
179205
$this->getResource()->commitTransaction();
180206

181207
$backup->close();
182-
183-
return $this;
184208
}
185209

186210
/**

0 commit comments

Comments
 (0)