2024-06-26 13:42:37 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This Software is the property of Data Development and is protected
|
|
|
|
* by copyright law - it is NOT Freeware.
|
|
|
|
* Any unauthorized use of this software without a valid license
|
|
|
|
* is a violation of the license agreement and will be prosecuted by
|
|
|
|
* civil and criminal law.
|
|
|
|
* http://www.shopmodule.com
|
|
|
|
*
|
|
|
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
|
|
|
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
|
|
|
* @link http://www.oxidmodule.com
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace D3\Extsearch\Application\Controller\Admin;
|
|
|
|
|
|
|
|
use D3\Extsearch\Application\Model\Constants;
|
|
|
|
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
|
|
|
|
use D3\ModCfg\Application\Model\d3filesystem;
|
|
|
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
|
|
|
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
|
|
|
use Doctrine\DBAL\Exception as DBALException;
|
|
|
|
use OxidEsales\Eshop\Application\Model\Shop;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
|
|
|
use OxidEsales\Eshop\Core\Registry;
|
|
|
|
use OxidEsales\Eshop\Core\Output;
|
|
|
|
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
|
|
|
|
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer;
|
|
|
|
use OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRendererBridgeInterface;
|
|
|
|
|
|
|
|
class d3_cfg_extsearch_plugins extends d3_cfg_mod_main
|
|
|
|
{
|
|
|
|
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_extsearch_plugins';
|
|
|
|
|
|
|
|
protected $_sModId = 'd3_extsearch';
|
|
|
|
|
|
|
|
protected $_sOldPluginName = 'se_browserinstall.xml';
|
|
|
|
|
|
|
|
protected $_sHelpLinkMLAdd = 'D3_EXTSEARCH_HELPLINK_CONFIG';
|
|
|
|
|
|
|
|
protected $_sMenuItemTitle = 'D3MXEXTSEARCH';
|
|
|
|
|
|
|
|
protected $_sMenuSubItemTitle = 'D3MXEXTSEARCH_SETTINGS';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* ruft oxutils-Funktion auf, die vom Template aus nicht verfuegbar ist
|
|
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
|
|
* @throws d3_cfg_mod_exception
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
* @throws StandardException
|
|
|
|
*/
|
|
|
|
public function save()
|
|
|
|
{
|
|
|
|
if ($_FILES['value']['name']['sExtSearch_PluginIcon']) {
|
|
|
|
if (copy(
|
|
|
|
$_FILES['value']['tmp_name']['sExtSearch_PluginIcon'],
|
|
|
|
Registry::getConfig()->getConfigParam(
|
|
|
|
'sShopDir'
|
|
|
|
) . $_FILES['value']['name']['sExtSearch_PluginIcon']
|
|
|
|
)
|
|
|
|
) {
|
|
|
|
$oSet = $this->d3GetSet();
|
|
|
|
$oSet->setValue('sExtSearch_PluginIcon', $_FILES['value']['name']['sExtSearch_PluginIcon']);
|
|
|
|
$oSet->save();
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
parent::save();
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getPluginFileName()
|
|
|
|
{
|
|
|
|
/** @var Shop $oShop */
|
|
|
|
$oShop = Registry::getConfig()->getActiveShop();
|
|
|
|
|
|
|
|
$oFS = oxNew(d3filesystem::class);
|
|
|
|
if ($oFS->exists(
|
|
|
|
$oFS->trailingslashit(Registry::getConfig()->getConfigParam('sShopDir')) . $this->_sOldPluginName
|
|
|
|
)
|
|
|
|
) {
|
|
|
|
$sFileName = $this->_sOldPluginName;
|
|
|
|
} else {
|
|
|
|
$sPattern = "[^a-zA-Z0-9]";
|
|
|
|
$sFileName = 'searchplugin_' . strtolower(
|
|
|
|
preg_replace('@' . $sPattern . '@', '_', $oShop->getFieldData('oxname'))
|
|
|
|
) . ".xml";
|
|
|
|
}
|
|
|
|
|
|
|
|
return $sFileName;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
* @throws StandardException
|
|
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
|
|
* @throws d3_cfg_mod_exception
|
|
|
|
*/
|
|
|
|
public function generatePluginFile()
|
|
|
|
{
|
|
|
|
$oShop = Registry::getConfig()->getActiveShop();
|
|
|
|
|
|
|
|
/** @var d3filesystem $oFS */
|
|
|
|
$oFS = oxNew(d3filesystem::class);
|
|
|
|
|
|
|
|
$sIconData = false;
|
|
|
|
$blHasIcon = false;
|
|
|
|
$aImgInfo = [];
|
|
|
|
if ($this->d3GetSet()->getValue('sExtSearch_PluginIcon')) {
|
|
|
|
$sImgPath = $oFS->trailingslashit(Registry::getConfig()->getConfigParam('sShopDir')) .
|
|
|
|
$this->d3GetSet()->getValue('sExtSearch_PluginIcon');
|
|
|
|
$aImgInfo = getimagesize($sImgPath);
|
|
|
|
$fp_img = fopen($sImgPath, "r");
|
|
|
|
$sIconData = fread($fp_img, filesize($sImgPath));
|
|
|
|
fclose($fp_img);
|
|
|
|
$blHasIcon = count($aImgInfo) ? true : false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$templateRenderer = $this->getTemplateRenderer();
|
|
|
|
$sTplFile = '@'. Constants::OXID_MODULE_ID .'/admin/d3_extsearch_plugin';
|
|
|
|
$context = [
|
|
|
|
'oShop' => $oShop,
|
|
|
|
'blHasIcon' => $blHasIcon,
|
|
|
|
'aImgInfo' => $aImgInfo,
|
|
|
|
'sBase64Icon' => base64_encode($sIconData),
|
|
|
|
'sShopUrl' => Registry::getConfig()->getConfigParam('sShopURL'),
|
|
|
|
];
|
|
|
|
$sFileContent = $templateRenderer->renderTemplate($sTplFile, $context);
|
|
|
|
|
|
|
|
$sFileName = $oFS->trailingslashit(Registry::getConfig()->getConfigParam('sShopDir')) .
|
|
|
|
$this->getPluginFileName();
|
|
|
|
|
|
|
|
$sMessage = $oFS->createFile($sFileName, $sFileContent, true)
|
|
|
|
? Registry::getLang()->translateString('D3_EXTSEARCH_PLUGIN_CREATE_SUCC')
|
|
|
|
: Registry::getLang()->translateString('D3_EXTSEARCH_PLUGIN_CREATE_NSUCC');
|
|
|
|
|
|
|
|
$sCharSet = "UTF-8";
|
|
|
|
$sTitle = Registry::getLang()->translateString('D3_EXTSEARCH_MAIN_GENERATOR_NOTE');
|
|
|
|
|
|
|
|
$context = [
|
|
|
|
'sCharset' => $sCharSet,
|
|
|
|
'sTitle' => $sTitle,
|
|
|
|
'sMessage' => $sMessage,
|
|
|
|
];
|
|
|
|
$sTplFile = '@'. Constants::OXID_MODULE_ID .'/admin/d3_extsearch_popup';
|
|
|
|
$content = $templateRenderer->renderTemplate($sTplFile, $context);
|
|
|
|
|
|
|
|
$outputManager = oxNew(Output::class);
|
|
|
|
$outputManager->setCharset(Registry::getConfig()->getActiveView()->getCharSet());
|
|
|
|
$outputManager->sendHeaders();
|
|
|
|
$outputManager->output('content', $content);
|
|
|
|
Registry::getConfig()->pageClose();
|
|
|
|
$outputManager->flushOutput();
|
|
|
|
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getTemplateRenderer(): TemplateRenderer
|
|
|
|
{
|
|
|
|
return ContainerFactory::getInstance()->getContainer()
|
|
|
|
->get(TemplateRendererBridgeInterface::class)
|
|
|
|
->getTemplateRenderer();
|
|
|
|
}
|
|
|
|
}
|