91 lines
2.5 KiB
PHP
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;
|
|
}
|
|
}
|
|
}
|