Files
kupshop/bundles/KupShop/ElninoBundle/Admin/Tabs/ElninoImportFulltextSynonyms.php
2025-08-02 16:30:27 +02:00

91 lines
2.5 KiB
PHP

<?php
namespace KupShop\ElninoBundle\Admin\Tabs;
use KupShop\AdminBundle\Admin\WindowTab;
use KupShop\CatalogBundle\Search\FulltextInterface;
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
class ElninoImportFulltextSynonyms extends WindowTab
{
protected $title = 'flapElninoImportFulltextSynonyms';
protected $template = 'window/fulltext.importSynonyms.tpl';
public static function getTypes()
{
return [
'fulltext' => 1,
];
}
public function getVars($smarty_tpl_vars)
{
$vars = parent::getVars($smarty_tpl_vars);
if (getVal('acn') === 'importSynonyms') {
$this->importSynonyms();
}
return $vars;
}
public function importSynonyms()
{
while (ob_get_level()) {
ob_end_clean();
}
$file = __DIR__.'/../fulltext_synonyms.csv';
if (file_exists($file)) {
$fp = fopen($file, 'rb');
$keys = null;
$counter = 0;
$validTextRows = 0;
$unknownNames = [];
$fulltext = ServiceContainer::getService(FulltextInterface::class);
$synonyms = $fulltext->loadSynonyms();
if (count($synonyms) === 1 && end($synonyms) === '') {
$synonyms = [];
}
while (!feof($fp)) {
$counter++;
$values = fgetcsv($fp);
if ($counter == 1) {
if (is_array($values)) {
$keys = $values;
continue;
} else {
echo 'Soubor není ve správném formátu!';
exit;
}
}
if (!is_array($values) || !array_filter($values)) {
continue;
}
$text = array_combine($keys, $values);
if (!empty(trim($text['from']))
&& !empty(trim($text['to']))
) {
$validTextRows++;
$synonyms[] = $text;
} else {
$unknownNames[] = $text['from'].' -> '.$text['to'];
}
}
fclose($fp);
$fulltext->updateSynonyms($synonyms);
echo '<br/><br/>Bylo zpracováno '.$validTextRows.' řádků.<br/>';
echo 'Bylo vynecháno '.count($unknownNames).'.<br/>';
exit;
} else {
echo 'File not found: '.$file;
exit;
}
}
}