8
0
Fork 0
Importer/src/Setup/InstallRoutine.php

1780 Zeilen
59 KiB
PHP

<?php
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\ModCfg\Application\Model\Install\d3install_updatebase;
use Doctrine\DBAL\DBALException;
use OxidEsales\Eshop\Application\Model\ShopList;
use OxidEsales\Eshop\Core\DatabaseProvider;
use OxidEsales\Eshop\Core\Exception\ConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Application\Model\Shop;
/**
* Class d3importer_update
*/
class d3_importer_Setup_InstallRoutine extends d3install_updatebase
{
/**
* @var string
*/
public $sModKey = 'd3importer';
/**
* @var string
*/
public $sModName = 'Importer';
/**
* @var string
*/
public $sModVersion = '5.0.6.3';
/**
* @var string
*/
public $sModRevision = '5063';
/**
* @var string
*/
public $sBaseConf = '--------------------------------------------------------------------------------
X6Av2==M1ZTbTZtWHM0SUxGUFF4SXBFU0M3M1NuUUdoT3JVdDl1VWdIUWNYSkhxRlo5cGlqMnM4VXVod
3RuMzhrcFNxMEhyenQyV25wcUIyOHduWjgrcWg2M1J2bGNSaGYrUHFnRjRsZmdGWDhsdkZOdCszb3Vie
HRuU0ZVTVE4UWVsUTY3SDV3Q3o4S3ZrWGlyTFhmSk1TZGROUDZCdnFBT2hHTVUzT2cwOVhHSzdINVFYY
2V3eldidXZvMFZ1KzErazkwTE8rRmtPOVBCUHp6OWIyaHpkM2c3emZlV3lqVk50SG9hS0d6UVhSQSsxa
kRIdVhFOTRkVXRWVC91L00rWEdCY0VLUnhvekxTbS94cWxPZDNnL2RVb2JWWmJUcDZwV2ZJbnJxVWUvQ
XZLbzRKYk92enVsdXZWRlpYbUFhcUI4elZXSWZRbTdmcSt3c2JFMHljVmNPUllRPT0=
--------------------------------------------------------------------------------';
/**
* @var string
*/
public $sRequirements = '';
/**
* @var string
*/
public $sBaseValue = '';
/**
* @var string
*/
public $sMinModCfgVersion = '5.3.0.0';
/**
* Standardwerte für checkFields(), _addTable() und fixFields()
* @var array
*/
public $aFields = array(
// d3picdirdump
'PICDIRDUMP_OXID' => array(
'sTableName' => 'd3picdirdump',
'sFieldName' => 'OXID',
'sType' => 'CHAR(32)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXFILE' => array(
'sTableName' => 'd3picdirdump',
'sFieldName' => 'OXFILE',
'sType' => 'VARCHAR(128)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXFILESIZE' => array(
'sTableName' => 'd3picdirdump',
'sFieldName' => 'OXFILESIZE',
'sType' => 'INT(32)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXISFINISHED' => array(
'sTableName' => 'd3picdirdump',
'sFieldName' => 'OXISFINISHED',
'sType' => 'TINYINT(1)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXISIMPORTED' => array(
'sTableName' => 'd3picdirdump',
'sFieldName' => 'OXISIMPORTED',
'sType' => 'TINYINT(1)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
// d3picextdump
'PICEXTDUMP_OXARTID' => array(
'sTableName' => 'd3picextdump',
'sFieldName' => 'OXARTID',
'sType' => 'CHAR(32)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICEXTDUMP_D3EXTPICCOUNT' => array(
'sTableName' => 'd3picextdump',
'sFieldName' => 'D3EXTPICCOUNT',
'sType' => 'INT(11)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'PICEXTDUMP_D3ISIMPORTED' => array(
'sTableName' => 'd3picextdump',
'sFieldName' => 'D3ISIMPORTED',
'sType' => 'TINYINT(1)',
'blNull' => true,
'sDefault' => 0,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
// d3importconfig
'IMPORTCONFIG_OXID' => array(
'sTableName' => 'd3importconfig',
'sFieldName' => 'OXID',
'sType' => 'VARCHAR(32)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTCONFIG_OXSHOPID' => array(
'sTableName' => 'd3importconfig',
'sFieldName' => 'OXSHOPID',
'sType' => 'int(11) ',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTCONFIG_OXTITLE' => array(
'sTableName' => 'd3importconfig',
'sFieldName' => 'OXTITLE',
'sType' => 'VARCHAR(100)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTCONFIG_OXVALUE' => array(
'sTableName' => 'd3importconfig',
'sFieldName' => 'OXVALUE',
'sType' => 'text',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
// d3importerdesc
'IMPORTERDESC_OXID' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXID',
'sType' => 'VARCHAR(32)',
'blNull' => false,
'sDefault' => '',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXFIELD' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXFIELD',
'sType' => 'VARCHAR(50)',
'blNull' => false,
'sDefault' => '',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXDESC' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXDESC',
'sType' => 'VARCHAR(100)',
'blNull' => false,
'sDefault' => '',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXDESC_1' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXDESC_1',
'sType' => 'VARCHAR(100)',
'blNull' => false,
'sDefault' => '',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXORDER' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXORDER',
'sType' => 'INT(5)',
'blNull' => false,
'sDefault' => '0',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXISPIC' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXISPIC',
'sType' => 'TINYINT(1)',
'blNull' => false,
'sDefault' => '0',
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
'IMPORTERDESC_OXISDISABLED' => array(
'sTableName' => 'd3importerdesc',
'sFieldName' => 'OXISDISABLED',
'sType' => 'TINYINT(1)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => false
),
// oxarticles
'OXARTICLES_D3IMPORTFLAG' => array(
'sTableName' => 'oxarticles',
'sFieldName' => 'D3IMPORTFLAG',
'sType' => "VARCHAR(32)",
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => true
),
'OXARTICLES_D3IMPORTPROFILEID' => array(
'sTableName' => 'oxarticles',
'sFieldName' => 'D3IMPORTPROFILEID',
'sType' => 'VARCHAR(32)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => true
)
);
/*******************************************************************************************/
/***** Jobliste ****************************************************************************/
/*******************************************************************************************/
// auszuführende Check- und Updateanweisungen in auszuführender Reihenfolge
/**
* Standardwerte für checkIndizes() und fixIndizes()
* @var array
*/
public $aIndizes = array(
// d3pidirdump
'PICDIRDUMP_OXID' => array(
'sTableName' => 'd3picdirdump',
'sType' => 'PRIMARY',
'sName' => 'OXID',
'aFields' => array(
'OXID' => 'OXID',
),
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXISFINISHED' => array(
'sTableName' => 'd3picdirdump',
'sType' => '',
'sName' => 'OXISFINISHED',
'aFields' => array(
'OXISFINISHED' => 'OXISFINISHED',
),
'blMultilang' => false,
'blAddBreak' => false
),
'PICDIRDUMP_OXISIMPORTED' => array(
'sTableName' => 'd3picdirdump',
'sType' => '',
'sName' => 'OXISIMPORTED',
'aFields' => array(
'OXISIMPORTED' => 'OXISIMPORTED',
),
'blMultilang' => false,
'blAddBreak' => false
),
// d3picextdump
'PICEXTDUMP_OXARTID' => array(
'sTableName' => 'd3picextdump',
'sType' => 'PRIMARY',
'sName' => 'OXARTID',
'aFields' => array(
'OXARTID' => 'OXARTID',
),
'blMultilang' => false,
'blAddBreak' => false
),
'PICEXTDUMP_D3ISIMPORTED' => array(
'sTableName' => 'd3picextdump',
'sType' => '',
'sName' => 'D3ISIMPORTED',
'aFields' => array(
'D3ISIMPORTED' => 'D3ISIMPORTED',
),
'blMultilang' => false,
'blAddBreak' => false
),
// d3importconfig
'IMPORTCONFIG_OXID' => array(
'sTableName' => 'd3importconfig',
'sType' => 'PRIMARY',
'sName' => 'OXID',
'aFields' => array(
'OXID' => 'OXID',
),
'blMultilang' => false,
'blAddBreak' => false
),
// d3importerdesc
'IMPORTERDESC_OXID' => array(
'sTableName' => 'd3importerdesc',
'sType' => 'PRIMARY',
'sName' => 'OXID',
'aFields' => array(
'OXID' => 'OXID',
),
'blMultilang' => false,
'blAddBreak' => true
),
// oxarticles
'OXARTICLES_D3IMPORTFLAG' => array(
'sTableName' => 'oxarticles',
'sType' => '',
'sName' => 'D3IMPORTFLAG',
'aFields' => array(
'D3IMPORTFLAG' => 'D3IMPORTFLAG',
),
'blMultilang' => false,
'blAddBreak' => true
),
'OXARTICLES_D3IMPORTPROFILEID' => array(
'sTableName' => 'oxarticles',
'sType' => '',
'sName' => 'D3IMPORTPROFILEID',
'aFields' => array(
'D3IMPORTPROFILEID' => 'D3IMPORTPROFILEID',
),
'blMultilang' => false,
'blAddBreak' => true
)
);
// Standardwerte für checkFields(), _addTable() und fixFields()
/**
* @var array
*/
public $aDropIndizes = array(
array(
'sTableName' => 'd3picextdump',
'sType' => 'INDEX',
'sName' => 'OXARTID',
'aFields' => array(
'OXARTID' => 'OXARTID',
),
'blMultilang' => false,
),
);
// Standardwerte für checkIndizes() und fixIndizes()
/**
* @var string
*/
protected $_sLib = 'd3importer';
// in Update from 4.2.0 auf 4.2.1 DROP it cause new Indize of it is PRIMARY
/**
* @var array
*/
protected $_aUpdateMethods = array(
array(
'check' => 'checkOldModId', // 4.2.0 auf 4.2.1
'do' => 'updateOldModId'
),
// UPDATE `d3_cfg_mod` SET `OXMODID` = 'd3importer' WHERE `OXMODID` = 'd3_importer';
array(
'check' => 'checkModCfgItemExist',
// prüft auf DB-Eintrag (hier ModCfg) und fügt diese ggf. ein bzw. führt Update aus
'do' => 'updateModCfgItemExist'
),
array(
'check' => 'checkTableTdimportconfigExist', // 3.0.x auf 3.2.3
'do' => 'dropTableTdimportconfigExist'
),
// DROP TABLE IF EXISTS `tdimportconfig`;
array(
'check' => 'checkTableTdimporterdescExist',
'do' => 'dropTableTdimporterdescExist'
),
// DROP TABLE IF EXISTS `tdimporterdesc`;
array(
'check' => 'checkTableTdpicdirdumpExist',
'do' => 'dropTableTdpicdirdumpExist'
),
// DROP TABLE IF EXISTS `tdpicdirdump`;
array(
'check' => 'checkPicdirdumpTableExist', // prüft Tabelle d3picdirdump und legt sie ggf. an
'do' => 'updatePicdirdumpTableExist'
),
array(
'check' => 'checkPicextdumpTableExist', // prüft Tabelle d3picextdump und legt sie ggf. an
'do' => 'updatePicextdumpTableExist'
),
array(
'check' => 'checkImportconfigTableExist', // prüft Tabelle d3importconfig und legt sie ggf. an
'do' => 'updateImportconfigTableExist'
),
array(
'check' => 'checkImporterdescTableExist', // prüft Tabelle d3importerdesc und legt sie ggf. an
'do' => 'updateImporterdescTableExist'
),
array(
'check' => 'checkFieldsNeededForImporter',
'do' => 'updateFieldsNeededForImporter'
),
array(
'check' => 'checkIndizesNeededForImporter',
'do' => 'fixIndizesNeededForImporter'
),
array(
'check' => 'checkImportDirectoryIsMissing',
'do' => 'addImportDirectory'
),
array(
'check' => 'checkImportPicturesDirectoryIsMissing',
'do' => 'addImportPicturesDirectory'
),
array(
'check' => 'checkImporterdescItems', // die vielen kleinen sql befehle für Tabelle d3importerdesc
'do' => 'updateImporterdescItems'
),
array(
'check' => 'checkImporterconfigItem', // Anlegen des Demoprofils, wenn Demodata Dateien installiert wurden
'do' => 'updateImporterconfigItem'
),
array(
'check' => 'checkImporterFields', // prüft Felder in Tabelle und legt sie ggf. an bzw. modifiziert diese
'do' => 'updateImporterFields'
),
array(
'check' => 'hasToConvertXmlToJson',
'do' => 'convertXmlConfigurations'
),
array(
'check' => 'hasStringArticleSettings',
'do' => 'convertStringArticleSettings'
),
array(
'check' => 'hasUpdateToAttibuteNoticeShown',
'do' => 'showUpdateToAttibuteNotice'
),
array(
'check' => 'checkImporterdescUpdate',
'do' => 'updateImporterdescUpdate'
),
array(
'check' => 'checkModCfgSameRevision', // prüft auf nachgezogene Revisionsnummer und überträgt diese ggf.
'do' => 'updateModCfgSameRevision'
),
);
/**
* d3_importer_Setup_InstallRoutine constructor.
* @throws DatabaseConnectionException
* @throws ConnectionException
*/
public function __construct()
{
parent::__construct();
$this->addPictureDatabaseFieldDefinitions();
$this->setOxconfigEntriesOnFirstInstallation();
}
public function addPictureDatabaseFieldDefinitions()
{
$sCurrentShopId = Registry::getConfig()->getActiveShop()->getId();
/** @var ShopList $oShopList */
$oShopList = $this->getShopList();
$iMaxPicCount = 0;
/** @var Shop $oShop */
foreach ($oShopList as $sKey => $oShop) {
$this->_changeToShop($oShop->getId());
$iPicCount = Registry::getConfig()->getConfigParam('iPicCount');
$iMaxPicCount = $iPicCount > $iMaxPicCount ? $iPicCount : $iMaxPicCount;
}
$this->_changeToShop($sCurrentShopId);
for ($i = 1; $i <= $iMaxPicCount; $i++) {
$this->aFields['OXARTICLES_D3IMPORTPIC'.$i] = array(
'sTableName' => 'oxarticles',
'sFieldName' => 'D3IMPORTPIC'.$i,
'sType' => 'VARCHAR(255)',
'blNull' => false,
'sDefault' => false,
'sComment' => false,
'sExtra' => '',
'blMultilang' => false,
'blAddBreak' => true
);
$this->aIndizes['OXARTICLES_D3IMPORTPIC'.$i] = array(
'sTableName' => 'oxarticles',
'sType' => '',
'sName' => 'D3IMPORTPIC'.$i,
'aFields' => array(
'D3IMPORTPIC'.$i => 'D3IMPORTPIC'.$i,
),
'blMultilang' => false,
'blAddBreak' => true
);
}
}
/**
* @throws ConnectionException
* @throws DatabaseConnectionException
*/
protected function setOxconfigEntriesOnFirstInstallation()
{
$oConfig = $this->getConfig();
$sCurrentShopid = $oConfig->getShopId();
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop oxShop */
$oConfig->setShopId($oShop->getId());
$hasModCfgItemsQuery = <<<MySQL
SELECT 1 FROM d3_cfg_mod
WHERE
oxmodid IN ('d3importer', 'd3_importer')
AND oxshopid = '{$oShop->getId()}'
MySQL;
if (false == DatabaseProvider::getDb()->getOne($hasModCfgItemsQuery)) {
Registry::getConfig()->saveShopConfVar(
'bool',
'd3_importer_update_old_attibutes_removed',
true,
$oShop->getId()
);
}
}
$oConfig->setShopId($sCurrentShopid);
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateOldModId()
{
$blRet = false;
if ($this->checkOldModId()) {
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aWhere = array(
'oxmodid' => 'd3_importer',
'oxshopid' => $oShop->getId(),
);
$blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere);
if (!$blRet) {
// update don't use this property
unset($aWhere['oxnewrevision']);
$aInsertFields = array(
'OXID' => array(
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')",
'force_update' => true,
'use_quote' => false,
),
'OXSHOPID' => array(
'content' => $oShop->getId(),
'force_update' => true,
'use_quote' => true,
),
'OXMODID' => array(
'content' => $this->sModKey,
'force_update' => true,
'use_quote' => true,
),
'OXNAME' => array(
'content' => $this->sModName,
'force_update' => true,
'use_quote' => true,
),
'OXACTIVE' => array(
'content' => "0",
'force_update' => false,
'use_quote' => false,
),
'OXBASECONFIG' => array(
'content' => $this->sBaseConf,
'force_update' => true,
'use_quote' => true,
),
'OXSERIAL' => array(
'content' => "",
'force_update' => false,
'use_quote' => true,
),
'OXINSTALLDATE' => array(
'content' => "NOW()",
'force_update' => true,
'use_quote' => false,
),
'OXVERSION' => array(
'content' => $this->sModVersion,
'force_update' => true,
'use_quote' => true,
),
'OXSHOPVERSION' => array(
'content' => Registry::getConfig()->getEdition(),
'force_update' => true,
'use_quote' => true,
),
'OXREQUIREMENTS' => array(
'content' => $this->sRequirements,
'force_update' => true,
'use_quote' => true,
),
'OXVALUE' => array(
'content' => $this->sBaseValue,
'force_update' => false,
'use_quote' => true,
),
'OXNEWREVISION' => array(
'content' => $this->sModRevision,
'force_update' => true,
'use_quote' => true,
)
);
$blRet = $this->_updateTableItem2('d3_cfg_mod', $aInsertFields, $aWhere);
}
}
}
return $blRet;
}
/**
* Anlegen des Eintrages in die mod_cfg,
* wenn noch nicht vorhanden.
*/
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws ConnectionException
*/
public function checkOldModId()
{
$blRet = false;
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aWhere = array(
'oxmodid' => 'd3_importer',
'oxshopid' => $oShop->getId(),
);
$blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere);
$blRet = !$blRet;
if ($blRet) {
return $blRet;
}
}
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateModCfgItemExist()
{
$blRet = false;
if ($this->checkModCfgItemExist()) {
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aWhere = array(
'oxmodid' => $this->sModKey,
'oxshopid' => $oShop->getId(),
'oxnewrevision' => $this->sModRevision,
);
if ($this->_checkTableItemNotExist('d3_cfg_mod', $aWhere)) {
// update don't use this property
unset($aWhere['oxnewrevision']);
$aInsertFields = array(
'OXID' => array(
'content' => "md5('" . $this->sModKey . " " . $oShop->getId() . " de')",
'force_update' => true,
'use_quote' => false,
),
'OXSHOPID' => array(
'content' => $oShop->getId(),
'force_update' => true,
'use_quote' => true,
),
'OXMODID' => array(
'content' => $this->sModKey,
'force_update' => true,
'use_quote' => true,
),
'OXNAME' => array(
'content' => $this->sModName,
'force_update' => true,
'use_quote' => true,
),
'OXACTIVE' => array(
'content' => "0",
'force_update' => false,
'use_quote' => false,
),
'OXBASECONFIG' => array(
'content' => $this->sBaseConf,
'force_update' => true,
'use_quote' => true,
),
'OXINSTALLDATE' => array(
'content' => "NOW()",
'force_update' => true,
'use_quote' => false,
),
'OXVERSION' => array(
'content' => $this->sModVersion,
'force_update' => true,
'use_quote' => true,
),
'OXSHOPVERSION' => array(
'content' => Registry::getConfig()->getEdition(),
'force_update' => true,
'use_quote' => true,
),
'OXREQUIREMENTS' => array(
'content' => $this->sRequirements,
'force_update' => true,
'use_quote' => true,
),
'OXVALUE' => array(
'content' => $this->sBaseValue,
'force_update' => false,
'use_quote' => true,
),
'OXNEWREVISION' => array(
'content' => $this->sModRevision,
'force_update' => true,
'use_quote' => true,
)
);
$blRet = $this->_updateTableItem2('d3_cfg_mod', $aInsertFields, $aWhere);
}
}
}
return $blRet;
}
/**
* Alte Tabellen löschen
*/
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws ConnectionException
*/
public function checkModCfgItemExist()
{
$blRet = false;
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aWhere = array(
'oxmodid' => $this->sModKey,
'oxnewrevision' => $this->sModRevision,
'oxshopid' => $oShop->getId(),
);
$blRet = $this->_checkTableItemNotExist('d3_cfg_mod', $aWhere);
if ($blRet) {
return $blRet;
}
}
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function dropTableTdimportconfigExist()
{
$blRet = true;
if ($this->checkTableTdimportconfigExist()) {
$blRet = $this->_dropTable('tdimportconfig');
}
return $blRet;
}
/**
* @return bool
* FALSE, if table is missing, so nothing is to do
* TRUE, if table is not missing, delete it
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkTableTdimportconfigExist()
{
$blRet = !($this->_checkTableNotExist('tdimportconfig'));
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function dropTableTdimporterdescExist()
{
$blRet = true;
if ($this->checkTableTdimporterdescExist()) {
$blRet = $this->_dropTable('tdimporterdesc');
}
return $blRet;
}
/**
* @return bool
* FALSE, if table is missing, so nothing is to do
* TRUE, if table is not missing, delete it
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkTableTdimporterdescExist()
{
$blRet = !($this->_checkTableNotExist('tdimporterdesc'));
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function dropTableTdpicdirdumpExist()
{
$blRet = true;
if ($this->checkTableTdpicdirdumpExist()) {
$blRet = $this->_dropTable('tdpicdirdump');
}
return $blRet;
}
/**
* Nachfolgend die Prüfung
* ob Importereigene Tabellen
* vorhanden sind.
* Wenn nicht werden diese angelegt.
*/
/**
* @return bool TRUE, if table is missing
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkPicdirdumpTableExist()
{
$blReturn = $this->_checkTableNotExist('d3picdirdump');
return $blReturn;
}
/**
* @return bool
* FALSE, if table is missing, so nothing is to do
* TRUE, if table is not missing, delete it
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkTableTdpicdirdumpExist()
{
$blRet = !($this->_checkTableNotExist('tdpicdirdump'));
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updatePicdirdumpTableExist()
{
$blRet = true;
if ($this->checkPicdirdumpTableExist()) {
$blRet = $this->_addTable2('d3picdirdump', $this->aFields, $this->aIndizes, 'D3 Importer Items', 'MyISAM');
}
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updatePicextdumpTableExist()
{
$blRet = true;
if ($this->checkPicextdumpTableExist()) {
$blRet = $this->_addTable2('d3picextdump', $this->aFields, $this->aIndizes, 'D3 Importer Items', 'MyISAM');
}
return $blRet;
}
/**
* @return bool TRUE, if table is missing
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkPicextdumpTableExist()
{
$blReturn = $this->_checkTableNotExist('d3picextdump');
return $blReturn;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImportconfigTableExist()
{
$blRet = $this->checkImportconfigTableExist();
if ($blRet) {
$blRet = $this->_addTable2(
'd3importconfig',
$this->aFields,
$this->aIndizes,
'D3 Importer Items',
'MyISAM'
);
}
return $blRet;
}
/**
* @return bool TRUE, if table is missing
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkImportconfigTableExist()
{
$blReturn = $this->_checkTableNotExist('d3importconfig');
return $blReturn;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImporterdescTableExist()
{
$blRet = true;
if ($this->checkImporterdescTableExist()) {
$blRet = $this->_addTable2(
'd3importerdesc',
$this->aFields,
$this->aIndizes,
'D3 Importer Items',
'MyISAM'
);
}
return $blRet;
}
/**
* @return bool TRUE, if table is missing
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkImporterdescTableExist()
{
$blReturn = $this->_checkTableNotExist('d3importerdesc');
return $blReturn;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateFieldsNeededForImporter()
{
$blRet = $this->checkFieldsNeededForImporter();
if ($blRet) {
$this->fixFields();
}
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkFieldsNeededForImporter()
{
$blRet = $this->checkFields();
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function fixIndizesNeededForImporter()
{
$blRet = $this->checkIndizesNeededForImporter();
if ($blRet) {
$this->fixIndizes();
}
return $blRet;
}
/**
* Anlegen der Felder, wenn nicht vorhanden...
* für: d3importerdesc
*/
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkIndizesNeededForImporter()
{
$blRet = $this->checkIndizes();
return $blRet;
}
/**
* @return bool
*/
public function checkImportDirectoryIsMissing()
{
$dir = Registry::getConfig()->getConfigParam('sShopDir').'/import';
return !file_exists( $dir ) && !is_dir( $dir );
}
public function addImportDirectory()
{
if ($this->checkImportDirectoryIsMissing()) {
$dir = rtrim(Registry::getConfig()->getConfigParam('sShopDir'), '/').'/import';
$this->createImportDirectory($dir);
}
}
/**
* @return bool
*/
public function checkImportPicturesDirectoryIsMissing()
{
$dir = Registry::getConfig()->getConfigParam('sShopDir').'/import/pictures';
return !file_exists( $dir ) && !is_dir( $dir );
}
public function addImportPicturesDirectory()
{
if ($this->checkImportPicturesDirectoryIsMissing()) {
$dir = rtrim(Registry::getConfig()->getConfigParam('sShopDir'), '/').'/import/pictures';
$this->createImportDirectory($dir);
}
}
protected function createImportDirectory($dir)
{
$this->setUpdateBreak(false);
$this->setActionLog(
'MSG',
sprintf(Registry::getLang()->translateString('D3_IMPORTER_SETUP_CREATEDIRECTORY'), $dir),
$this->getInitialExecMethod(__METHOD__)
);
if ($this->hasExecute()) {
mkdir($dir);
}
$htaContent = <<< 'HTA'
<FilesMatch .*>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</FilesMatch>
HTA;
$this->setActionLog(
'MSG',
sprintf(Registry::getLang()->translateString('D3_CFG_MOD_UPDATE_JOB_FILECONTENT'), $dir.'/.htaccess')
.PHP_EOL.PHP_EOL.$htaContent,
$this->getInitialExecMethod(__METHOD__)
);
$this->setActionLog(
'MSG',
sprintf(Registry::getLang()->translateString('D3_CFG_MOD_UPDATE_JOB_FILECONTENT'), $dir.'/index.html'),
$this->getInitialExecMethod(__METHOD__)
);
if ($this->hasExecute()) {
file_put_contents($dir . '/.htaccess', $htaContent, LOCK_EX);
file_put_contents($dir . '/index.html', '', LOCK_EX);
}
return true;
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
*/
public function checkImporterdescItems()
{
$blReturn = $this->_checkUpdateFile('d3/importer/Setup/d3importer_importerdescQuerys.php');
return $blReturn;
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImporterdescItems()
{
return $this->_doUpdateFile('d3/importer/Setup/d3importer_importerdescQuerys.php');
}
/**
* Installiere ein Testimportprofil.
*
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImporterconfigItem()
{
$blHasNoExample = false;
if ($this->checkImporterconfigItem()) {
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aImportconfigWhere = array(
'oxid' => md5('d3importconfig_ex_' . $oShop->getId()),
'oxshopid' => $oShop->getId(),
);
$blHasNoExample = $this->_checkTableItemNotExist('d3importconfig', $aImportconfigWhere);
/** @var $oShop Shop */
$aWhere = array(
'oxvarname' => 'd3importconfig_ex_' . $oShop->getId(),
'oxshopid' => $oShop->getId(),
'oxvartype' => 'bool',
);
$blHasAlreadyExampleUsed = $this->_checkTableItemNotExist('oxconfig', $aWhere);
if ($blHasNoExample && $blHasAlreadyExampleUsed) {
$aInsertFields = array(
'OXID' => array(
'content' => md5('d3importconfig_ex_' . $oShop->getId()),
'force_update' => true,
'use_quote' => true,
),
'OXSHOPID' => array(
'content' => $oShop->getId(),
'force_update' => true,
'use_quote' => true,
),
'OXTITLE' => array(
'content' => 'Beispielprofil mit Beispielliste.csv',
'force_update' => false,
'use_quote' => true,
),
'OXVALUE' => array(
'content' => '{"d3_importer_category":{"IMPORTTYPE":"import","ASSIGNIDENT":"oxtitle","IMPORTCOLUM":{"1":"24"},"COLUMSEPARATOR":{"1":"|"}},"d3_importer_cross":{"IMPORTTYPE_CROSS":"import","IMPORTCOLUM_CROSS":"25","COLUMSEPARATOR_CROSS":"|","IMPORTTYPE_ACC":"import","IMPORTCOLUM_ACC":"26","COLUMSEPARATOR_ACC":"|"},"d3_importer_price2art":{"IMPORTTYPE":"import","IMPORTCOLUM":{"1":{"PRICE":"11","FROM":"12","TO":"13"},"2":{"PRICE":"14","FROM":"15","TO":"16"},"3":{"PRICE":"17","FROM":"18","TO":"19"}}},"d3_importer_afterimport":{"AFTERIMPORTTICKER":"100"},"d3_picture_main":{"aXMLPictureParams":[{"IMPORTFIELD":"d3importpic1","IMAGEFIELDS":{"oxpic1":"1"}},{"IMPORTFIELD":"d3importpic2","IMAGEFIELDS":{"oxpic2":"1"}},{"IMPORTFIELD":"d3importpic3","IMAGEFIELDS":{"oxpic3":"1"}}],"aPictureSettings":{"iMaxPictureCount":"50","iMaxImportCount":"5","iOverrideExternPictures":"0"}},"d3_importer_fields":{"fields":{"0":"oxartnum","1":"oxean","2":"oxtitle","3":"oxtitle_1","4":"oxshortdesc","5":"oxshortdesc_1","6":"oxlongdesc","7":"oxlongdesc_1","8":"oxsearchkeys","9":"oxsearchkeys_1","10":"oxprice","20":"oxstock","21":"d3importpic1","22":"d3importpic2","23":"d3importpic3"},"update":{"1":"1","2":"1","3":"1","4":"1","5":"1","6":"1","7":"1","8":"1","9":"1","10":"1","20":"1","21":"1","22":"1","23":"1"}},"d3_importer_attrib":{"IMPORTTYPE":"import","IMPORTCOLUM":{"1":{"NAME":{"de":"38","en":"39"},"VALUE":{"de":"40","en":"41"}},"2":{"NAME":{"de":"42","en":"43"},"VALUE":{"de":"44","en":"45"}}}},"d3_importer_selectlist":{"IMPORTTYPE":"clearbefore","IMPORTCOLUM":{"1":{"NAME":"27","ALTNAME":"Auswahl","VALUE":"28","SEPARATOR":"|","SEPARATOR_PRICE":"@"},"2":{"NAME":"29","ALTNAME":"Auswahl","VALUE":"30","SEPARATOR":"|","SEPARATOR_PRICE":"@"}}},"d3_importer_variants":{"IMPORTTYPE":"import","IMPORTCOLUM":"31","FIELD":{"oxvarname":"32","oxvarname_1":"34","oxvarselect":"33","oxvarselect_1":"35"}},"d3_importer_vendors":{"VENDOR":{"IMPORTTYPE":"import","IMPORTCOLUM":"36"},"MANUFACTURER":{"IMPORTTYPE":"import","IMPORTCOLUM":"37"}},"d3_importer_config":{"IMPORTTYPE":"standard","IMPORTTICKER":"100","OMITLINES":"1","ASSIGNIDENT":"oxartnum","aArticleSettings":["oxstock => 10"],"aDefaultBooleanSettings":{"aTrueSettings":["true","TRUE","Ja","ja"],"aFalseSettings":["false","FALSE","Nein","nein"]},"PRICEPLUSPERCENT":"0","PRICEDECIMALROUND":"0","ARTNUM2OXID":"0","MD54OXID":"0"},"d3_importer_mall":{"IMPORTCOLUM_MALL":"46","COLUMSEPARATOR_MALL":","},"d3_importer_main":{"FILE":"demo_artikel_test.csv","FILESEPARATOR":";","TEXTSEPARATOR":"\"","FILELENGTH":"844","FILEROWS":"11","FILECOLUMS":"47"}}',
'force_update' => false,
'use_quote' => true,
)
);
$blHasNoExample = $this->_updateTableItem2('d3importconfig', $aInsertFields, $aImportconfigWhere);
if ($blHasNoExample) {
$aInsertFields = array(
'OXID' => array(
'content' => md5('d3importconfig_ex_' . $oShop->getId()),
'force_update' => true,
'use_quote' => true,
),
'OXSHOPID' => array(
'content' => $oShop->getId(),
'force_update' => true,
'use_quote' => true,
),
'OXVARNAME' => array(
'content' => 'd3importconfig_ex_' . $oShop->getId(),
'force_update' => false,
'use_quote' => true,
),
'OXVARTYPE' => array(
'content' => 'bool',
'force_update' => false,
'use_quote' => true,
)
);
$this->_updateTableItem2('oxconfig', $aInsertFields, $aWhere);
}
}
}
}
return $blHasNoExample;
}
/**
* Anlegen der Felder, wenn nicht vorhanden...
* für: oxarticles
* d3picdirdump
* d3picextdump
* d3importconfig
*/
/**
* Hat der Shop ein Testimportprofil?
*
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws ConnectionException
*/
public function checkImporterconfigItem()
{
if (!file_exists(rtrim(Registry::getConfig()->getConfigParam('sShopDir'), '/').'/import/demo_artikel_test.csv')
&& !file_exists(rtrim(Registry::getConfig()->getConfigParam('sShopDir'), '/').'/import/demo_artikel_komplett.csv')
) {
return false;
}
$blHasNoExample = false;
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
/** @var $oShop Shop */
$aWhere = array(
'oxid' => md5('d3importconfig_ex_' . $oShop->getId()),
'oxshopid' => $oShop->getId(),
);
$blHasNoExample = $this->_checkTableItemNotExist('d3importconfig', $aWhere);
/** @var $oShop Shop */
$aWhere = array(
'oxvarname' => 'd3importconfig_ex_' . $oShop->getId(),
'oxshopid' => $oShop->getId(),
);
$blExampleNotUsed = $this->_checkTableItemNotExist('oxconfig', $aWhere);
$blHasNoExample = $blHasNoExample && $blExampleNotUsed;
if ($blHasNoExample) {
return $blHasNoExample;
}
}
return $blHasNoExample;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function checkImporterFields()
{
$blRet = $this->checkFields();
return $blRet;
}
/**
* Aktualisierung der Revisionsnummer
* in dem Eintrag in der mod_cfg.
* Letzter Schritt in der automatischen Installation.
*/
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImporterFields()
{
return $this->fixFields();
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateModCfgSameRevision()
{
$blRet = false;
if ($this->checkModCfgSameRevision()) {
$blRet = $this->_updateModCfgSameRevision($this->sModKey);
}
return $blRet;
}
/**
* @return bool
* FALSE if Revisionnumber is the same
* TRUE if Update Revisionnumber needed
* @throws DBALException
* @throws DatabaseConnectionException
*/
public function checkModCfgSameRevision()
{
$blRet = $this->_checkModCfgSameRevision($this->sModKey);
return $blRet;
}
/**
* @return bool
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function convertXmlConfigurations()
{
if ($this->hasToConvertXmlToJson()) {
include_once(__DIR__ . '/d3importer_migratexmltojson.php');
/** @var $oShop Shop */
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
$sQuery = <<< MYSQL
SELECT oxvalue AS oxvalue, oxid AS oxid FROM d3importconfig
WHERE oxshopid = '{$oShop->getId()}'
MYSQL;
$aConfigurations = $oDb->getAll($sQuery);
if (empty($aConfigurations)) {
continue;
}
foreach ($aConfigurations as $aValue) {
$blIsJsonConfiguration = (bool)json_decode($aValue['oxvalue'], true);
if ($blIsJsonConfiguration) {
continue;
}
$sXmlConfiguration = unserialize(base64_decode($aValue['oxvalue']));
$aNewConfiguration = d3importerMigrateXmlToJson($sXmlConfiguration);
$sJsonConfiguration = json_encode($aNewConfiguration);
$aInsertFields = array(
'OXVALUE' => array(
'content' => $sJsonConfiguration,
'force_update' => true,
'use_quote' => true,
),
);
$blReturn = $this->_updateTableItem2(
'd3importconfig',
$aInsertFields,
array('oxid' => $aValue['oxid'])
);
if (false == $blReturn) {
return $blReturn;
}
}
}
}
return true;
}
/**
* Returns true if xml
*
* @return bool
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws ConnectionException
*/
public function hasToConvertXmlToJson()
{
/** @var $oShop Shop */
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
$sQuery = <<< MYSQL
SELECT oxvalue AS oxvalue, oxid AS oxid FROM d3importconfig
WHERE oxshopid = '{$oShop->getId()}'
MYSQL;
$aConfigurations = $oDb->getAll($sQuery);
if (empty($aConfigurations)) {
continue;
}
foreach ($aConfigurations as $aValue) {
$blIsJsonConfiguration = (bool)json_decode($aValue['oxvalue'], true);
$blIsBase64Configuration = (bool)base64_decode($aValue['oxvalue']);
if (false == $blIsJsonConfiguration && $blIsBase64Configuration) {
return true;
}
}
}
return false;
}
/**
* @return bool
* @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException
* @throws \D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception
* @throws DBALException
* @throws ConnectionException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws \OxidEsales\Eshop\Core\Exception\StandardException
*/
public function convertStringArticleSettings()
{
if ($this->hasStringArticleSettings()) {
$oConfig = $this->getConfig();
$sCurrentShopid = $oConfig->getShopId();
/** @var $oShop Shop */
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
$oConfig->setShopId($oShop->getId());
$oModuleConfiguration = d3_cfg_mod::getNoCache('d3importer');
$mArticleSettings = $oModuleConfiguration->getValue('aArticleSettings');
if (is_string($mArticleSettings)) {
$oModuleConfiguration->setValue('aArticleSettings', explode("\n", $mArticleSettings));
$oModuleConfiguration->save();
}
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
$sQuery = <<< MYSQL
SELECT oxvalue AS oxvalue, oxid AS oxid FROM d3importconfig
WHERE oxshopid = '{$oShop->getId()}'
MYSQL;
$aConfigurations = $oDb->getAll($sQuery);
if (empty($aConfigurations)) {
continue;
}
foreach ($aConfigurations as $aValue) {
$aIsJsonConfiguration = json_decode($aValue['oxvalue'], true);
if (false == (bool)$aIsJsonConfiguration) {
continue;
}
if (false == isset($aIsJsonConfiguration['d3_importer_config']['aArticleSettings'])) {
continue;
}
if (is_string($aIsJsonConfiguration['d3_importer_config']['aArticleSettings'])) {
$mArticleSettings = $aIsJsonConfiguration['d3_importer_config']['aArticleSettings'];
$aIsJsonConfiguration['d3_importer_config']['aArticleSettings'] = explode(
"\n",
$mArticleSettings
);
$sJsonConfiguration = json_encode($aIsJsonConfiguration);
$aInsertFields = array(
'OXVALUE' => array(
'content' => $sJsonConfiguration,
'force_update' => true,
'use_quote' => true,
),
);
$blReturn = $this->_updateTableItem2(
'd3importconfig',
$aInsertFields,
array('oxid' => $aValue['oxid'])
);
if (false == $blReturn) {
return $blReturn;
}
}
}
}
$oConfig->setShopId($sCurrentShopid);
}
return true;
}
/**
* @return bool
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws ConnectionException
*/
public function hasStringArticleSettings()
{
$oConfig = $this->getConfig();
$sCurrentShopid = $oConfig->getShopId();
/** @var $oShop Shop */
foreach ($this->getShopListByActiveModule($this->sModKey) as $oShop) {
$oConfig->setShopId($oShop->getId());
$oModuleConfiguration = d3_cfg_mod::getNoCache('d3importer');
$mArticleSettings = $oModuleConfiguration->getValue('aArticleSettings');
if (is_string($mArticleSettings)) {
$oConfig->setShopId($sCurrentShopid);
return true;
}
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
$sQuery = <<< MYSQL
SELECT oxvalue, oxid FROM d3importconfig
WHERE oxshopid = '{$oShop->getId()}'
MYSQL;
$aConfigurations = $oDb->getAll($sQuery);
if (empty($aConfigurations)) {
continue;
}
foreach ($aConfigurations as $aValue) {
$aIsJsonConfiguration = json_decode($aValue['oxvalue'], true);
if (false == (bool)$aIsJsonConfiguration) {
continue;
}
if (false == isset($aIsJsonConfiguration['d3_importer_config']['aArticleSettings'])) {
continue;
}
if (is_string($aIsJsonConfiguration['d3_importer_config']['aArticleSettings'])) {
return true;
}
}
}
$oConfig->setShopId($sCurrentShopid);
return false;
}
/**
*
* @return bool
*/
public function showUpdateToAttibuteNotice()
{
return $this->showConfigConfirmMessage(
'd3_importer_update_old_attibutes_removed',
'D3_IMPORTER_UPDATE_OLD_ATTIBUTES_REMOVED'
);
}
/**
*
* @return bool
*/
public function hasUpdateToAttibuteNoticeShown()
{
return $this->hasNoConfirmMessageConfigConfirmation('d3_importer_update_old_attibutes_removed');
}
/**
* @return bool
* @throws DatabaseConnectionException
*/
public function checkImporterdescUpdate()
{
$blReturn = $this->_checkUpdateFile('d3/importer/Setup/importerdescUpdates.php');
return $blReturn;
}
/**
* @return bool
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function updateImporterdescUpdate()
{
return $this->_doUpdateFile('d3/importer/Setup/importerdescUpdates.php');
}
}