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

67 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace External\ZNZBundle\Resources\script;
use KupShop\AdminBundle\Util\Script\Script;
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
use KupShop\KupShopBundle\Util\Database\QueryHint;
use KupShop\KupShopBundle\Util\FileUtil;
use KupShop\RewriteBundle\Util\Rewrite;
use Query\Operator;
class FixRewriteScript extends Script
{
protected static $name = '[ZNZ] Fix rewrite';
protected static $defaultParameters = [
'https://www.fragranza.cz' => 'https://docs.google.com/spreadsheets/d/1StMFSdD_Nq0Af6DYzbp22RZFD8vdtn-9_3oKSlbZ-y4/export?format=csv',
'https://www.fragranza.sk' => 'https://docs.google.com/spreadsheets/d/1R3XcKwvsZlZutGYco7CBayBOzIAAFV6kzq24Cu-8OW0/export?format=csv',
];
protected function run(array $arguments)
{
$rewriteUtil = ServiceContainer::getService(Rewrite::class);
sqlGetConnection()->getConfiguration()->setSQLLogger();
foreach ($arguments as $domain => $file) {
foreach (FileUtil::loadCSV($file) as $key => $item) {
if ($key <= 0) {
continue;
}
if (empty($item[1]) || $item[1] === '#N/A') {
continue;
}
$parsed = parse_url($item[0]);
$path = $parsed['path'].(!empty($parsed['query']) ? '?'.$parsed['query'] : '');
$rewriteId = sqlQueryBuilder()
->select('id')
->from('rewrite')
->where(Operator::equals(['url' => trim($path, '/')]))
->execute()->fetchOne();
if ($rewriteId) {
sqlQueryBuilder()
->delete('rewrite')
->where(Operator::equals(['id' => $rewriteId]))
->execute();
}
$related = '/';
if (!empty($item[1])) {
$related = $item[1];
}
QueryHint::withRouteToMaster(fn () => $rewriteUtil->addRewrite($domain.'/'.ltrim($path, '/'), Rewrite::TYPE_CUSTOM, $related));
}
}
}
}
return FixRewriteScript::class;