MassDelete.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Backup\Controller\Adminhtml\Index;
  8. class MassDelete extends \Magento\Backup\Controller\Adminhtml\Index
  9. {
  10. /**
  11. * Delete backups mass action
  12. *
  13. * @return \Magento\Backend\App\Action
  14. */
  15. public function execute()
  16. {
  17. $backupIds = $this->getRequest()->getParam('ids', []);
  18. if (!is_array($backupIds) || !count($backupIds)) {
  19. return $this->_redirect('backup/*/index');
  20. }
  21. $resultData = new \Magento\Framework\DataObject();
  22. $resultData->setIsSuccess(false);
  23. $resultData->setDeleteResult([]);
  24. $this->_coreRegistry->register('backup_manager', $resultData);
  25. $deleteFailMessage = __('We can\'t delete one or more backups.');
  26. try {
  27. $allBackupsDeleted = true;
  28. foreach ($backupIds as $id) {
  29. list($time, $type) = explode('_', $id);
  30. $backupModel = $this->_backupModelFactory->create($time, $type)->deleteFile();
  31. if ($backupModel->exists()) {
  32. $allBackupsDeleted = false;
  33. $result = __('failed');
  34. } else {
  35. $result = __('successful');
  36. }
  37. $resultData->setDeleteResult(
  38. array_merge($resultData->getDeleteResult(), [$backupModel->getFileName() . ' ' . $result])
  39. );
  40. }
  41. $resultData->setIsSuccess(true);
  42. if ($allBackupsDeleted) {
  43. $this->messageManager->addSuccessMessage(__('You deleted the selected backup(s).'));
  44. } else {
  45. throw new \Exception($deleteFailMessage);
  46. }
  47. } catch (\Exception $e) {
  48. $resultData->setIsSuccess(false);
  49. $this->messageManager->addErrorMessage($deleteFailMessage);
  50. }
  51. return $this->_redirect('backup/*/index');
  52. }
  53. }