67 lines
2.2 KiB
PHP
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;
|