Files
kupshop/bundles/External/ZNZBundle/Resources/script/ImportRewritesScript.php
2025-08-02 16:30:27 +02:00

85 lines
2.3 KiB
PHP

<?php
namespace External\ZNZBundle\Resources\script;
use Doctrine\DBAL\Exception;
use KupShop\AdminBundle\Util\Script\Script;
use League\Csv\Reader;
class ImportRewritesScript extends Script
{
protected static $name = '[ZNZ] Import rewrite';
protected static $defaultParameters = [
'file' => 'data/files/CDP.csv',
];
protected function run(array $arguments)
{
$csv = Reader::createFromPath($arguments['file']);
$csv->setHeaderOffset(0);
$inserted = 0;
$duplicated = 0;
echo 'Progress: ';
$this->log('Progress:');
foreach ($csv->getRecords() as $item) {
$this->progress();
if (isset($item['id_path']) && strpos($item['id_path'], 'product/') === 0) {
$type = 0;
$id = $this->getProductIdFromSku($item['sku']);
if (!$id) {
$type = 6;
$id = $this->getVariationIdFromSku($item['sku']);
}
if (!$id) {
continue;
}
try {
sqlQueryBuilder()
->insert('rewrite')
->directValues([
'url' => $item['request_path'],
'type' => $type,
'related_id' => $id,
])->execute();
$inserted++;
} catch (Exception\UniqueConstraintViolationException $e) {
$duplicated++;
}
}
}
$this->log('Inserted: '.$inserted);
$this->log('Duplicated: '.$duplicated);
}
protected function getProductIdFromSku($sku)
{
return sqlQueryBuilder()
->select('p.id')
->fromProducts()
->where('p.code = :sku')
->setParameter('sku', $sku)
->execute()
->fetchOne();
}
protected function getVariationIdFromSku($sku)
{
return sqlQueryBuilder()
->select('pv.id')
->fromProducts()
->joinVariationsOnProducts()
->where('pv.code = :sku')
->setParameter('sku', $sku)
->execute()
->fetchOne();
}
}
return ImportRewritesScript::class;