Files
2025-06-24 14:14:35 +02:00

144 lines
6.1 KiB
PHP

<?php
/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*/
namespace PrestaShop\Module\AutoUpgrade\TaskRunner\Upgrade;
use PrestaShop\Module\AutoUpgrade\TaskRunner\AbstractTask;
use PrestaShop\Module\AutoUpgrade\UpgradeContainer;
use Symfony\Component\Filesystem\Filesystem;
/**
* Remove all sample files from release archive.
*/
class RemoveSamples extends AbstractTask
{
public function run()
{
$this->stepDone = false;
$this->next = 'removeSamples';
$removeList = $this->container->getState()->getRemoveList();
$latestPath = $this->container->getProperty(UpgradeContainer::LATEST_PATH);
// remove all sample pics in img subdir
// This part runs at the first call of this step
if (null === $removeList) {
if (!$this->container->getFilesystemAdapter()->isReleaseValid($latestPath)) {
$this->logger->error($this->translator->trans('Could not assert the folder %s contains a valid PrestaShop release, exiting.', array($latestPath), 'Modules.Autoupgrade.Admin'));
$this->logger->error($this->translator->trans('A file may be missing, or the release is stored in a subfolder by mistake.', array(), 'Modules.Autoupgrade.Admin'));
$this->next = 'error';
return;
}
$removeList = $this->container->getFilesystemAdapter()->listSampleFilesFromArray(array(
array('path' => $latestPath . '/img/c', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/cms', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/l', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/m', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/os', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/p', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/s', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/scenes', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/st', 'filter' => '.jpg'),
array('path' => $latestPath . '/img/su', 'filter' => '.jpg'),
array('path' => $latestPath . '/img', 'filter' => '404.gif'),
array('path' => $latestPath . '/img', 'filter' => 'favicon.ico'),
array('path' => $latestPath . '/img', 'filter' => 'logo.jpg'),
array('path' => $latestPath . '/img', 'filter' => 'logo_stores.gif'),
array('path' => $latestPath . '/modules/editorial', 'filter' => 'homepage_logo.jpg'),
// remove all override present in the archive
array('path' => $latestPath . '/override', 'filter' => '.php'),
));
$this->container->getState()->setRemoveList(
array_reverse($removeList)
);
if (count($removeList)) {
$this->logger->debug(
$this->translator->trans('Starting to remove %s sample files',
array(count($removeList)), 'Modules.Autoupgrade.Admin'));
}
}
$filesystem = new Filesystem();
for ($i = 0; $i < $this->container->getUpgradeConfiguration()->getNumberOfFilesPerCall() && 0 < count($removeList); ++$i) {
$file = array_pop($removeList);
try {
$filesystem->remove($file);
} catch (\Exception $e) {
$this->next = 'error';
$this->logger->error($this->translator->trans(
'Error while removing item %itemname%, %itemscount% items left.',
array(
'%itemname%' => $file,
'%itemscount%' => count($removeList),
),
'Modules.Autoupgrade.Admin'
));
return false;
}
if (count($removeList)) {
$this->logger->debug($this->translator->trans(
'%itemname% item removed. %itemscount% items left.',
array(
'%itemname%' => $file,
'%itemscount%' => count($removeList),
),
'Modules.Autoupgrade.Admin'
));
}
}
$this->container->getState()->setRemoveList($removeList);
if (0 >= count($removeList)) {
$this->stepDone = true;
$this->next = 'backupFiles';
$this->logger->info(
$this->translator->trans(
'All sample files removed. Now backing up files.',
array(),
'Modules.Autoupgrade.Admin'
));
if ($this->container->getUpgradeConfiguration()->get('skip_backup')) {
$this->next = 'upgradeFiles';
$this->logger->info(
$this->translator->trans(
'All sample files removed. Backup process skipped. Now upgrading files.',
array(),
'Modules.Autoupgrade.Admin'
));
}
}
return true;
}
}