Spaces:
No application file
No application file
namespace Mautic\CoreBundle\Update\Step; | |
use Mautic\CoreBundle\Helper\PathsHelper; | |
use Psr\Log\LoggerInterface; | |
use Symfony\Component\Console\Helper\ProgressBar; | |
use Symfony\Component\Console\Input\InputInterface; | |
use Symfony\Component\Console\Output\OutputInterface; | |
use Symfony\Contracts\Translation\TranslatorInterface; | |
final class RemoveDeletedFilesStep implements StepInterface | |
{ | |
private string $appRoot; | |
public function __construct( | |
private TranslatorInterface $translator, | |
PathsHelper $pathsHelper, | |
private LoggerInterface $logger | |
) { | |
$this->appRoot = $pathsHelper->getRootPath(); | |
} | |
public function getOrder(): int | |
{ | |
return 20; | |
} | |
public function shouldExecuteInFinalStage(): bool | |
{ | |
return false; | |
} | |
public function execute(ProgressBar $progressBar, InputInterface $input, OutputInterface $output): void | |
{ | |
// Make sure we have a deleted_files list otherwise we can't process this step | |
if (!file_exists($this->appRoot.'/deleted_files.txt')) { | |
return; | |
} | |
$progressBar->setMessage($this->translator->trans('mautic.core.update.remove.deleted.files')); | |
$progressBar->advance(); | |
$deletedFiles = json_decode(file_get_contents($this->appRoot.'/deleted_files.txt'), true); | |
// Before looping over the deleted files, add in our upgrade specific files | |
$deletedFiles += ['deleted_files.txt', 'upgrade.php']; | |
foreach ($deletedFiles as $file) { | |
$this->deleteFile($file); | |
} | |
@unlink($this->appRoot.'/deleted_files.txt'); | |
} | |
private function deleteFile(string $file): void | |
{ | |
$path = $this->appRoot.'/'.$file; | |
if (!file_exists($path)) { | |
return; | |
} | |
// Try setting the permissions to 777 just to make sure we can get rid of the file | |
@chmod($path, 0777); | |
if (@unlink($path)) { | |
return; | |
} | |
// Failed to delete, reset the permissions to 644 for safety | |
@chmod($path, 0644); | |
$this->logger->error( | |
'UPDATE ERROR: '.$this->translator->trans('mautic.core.update.error.removing.file', ['%path%' => $file]) | |
); | |
} | |
} | |