188 lines
5.9 KiB
PHP
188 lines
5.9 KiB
PHP
<?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.
|
|
* https://www.shopmodule.com
|
|
*
|
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
|
* @author D3 Data Development <support@shopmodule.com>
|
|
* @link https://www.oxidmodule.com
|
|
*/
|
|
|
|
namespace D3\Importer\Application\Controller\Admin\Articleimport;
|
|
|
|
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
|
use Doctrine\DBAL\DBALException;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
|
use OxidEsales\Eshop\Core\Exception\SystemComponentException;
|
|
use OxidEsales\Eshop\Application\Model\Article;
|
|
use D3\Importer\Application\Controller\Admin\Base;
|
|
use D3\Importer\Application\Models\Constants;
|
|
use D3\Importer\Application\Models\ImportConfig;
|
|
use D3\Importer\Application\Models\ImporterDescription;
|
|
use OxidEsales\Eshop\Core\Model\BaseModel;
|
|
use OxidEsales\Eshop\Core\Model\ListModel;
|
|
use OxidEsales\Eshop\Core\Registry;
|
|
use stdClass;
|
|
|
|
/**
|
|
* Importer variants manager.
|
|
*
|
|
* @package admin
|
|
*/
|
|
class Variants extends Base
|
|
{
|
|
/**
|
|
* Current class default template name.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $_sThisTemplate = '@' . Constants::OXID_MODULE_ID . '/admin/d3_importer_variants';
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $currentProfileName = 'd3_importer_variants';
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
protected $articleFieldnames = [];
|
|
|
|
/**
|
|
* Executes parent method parent::render(), creates oxlist object,
|
|
* passes it's data to Smarty engine and retutns name of template
|
|
* file "d3_importer_category.tpl".
|
|
*
|
|
* @return string
|
|
* @throws d3ShopCompatibilityAdapterException
|
|
* @throws d3_cfg_mod_exception
|
|
* @throws DBALException
|
|
* @throws DatabaseConnectionException
|
|
* @throws DatabaseErrorException
|
|
* @throws StandardException
|
|
*/
|
|
public function render()
|
|
{
|
|
$sReturn = parent::render();
|
|
|
|
$this->readCurrentCSVLine();
|
|
$this->addTplParam('aFieldList', $this->getArticleFieldList());
|
|
|
|
return $sReturn;
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function getFormularElements(ImportConfig $oImportConfig)
|
|
{
|
|
// TODO: Implement _getFormularElements() method.
|
|
return [];
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws SystemComponentException
|
|
*/
|
|
public function getArticleFieldList()
|
|
{
|
|
if (false == empty($this->articleFieldnames)) {
|
|
return $this->articleFieldnames;
|
|
}
|
|
$aFieldList = [];
|
|
$tplLanguage = Registry::getLang()->getTplLanguage();
|
|
$descriptionName = $tplLanguage ? 'oxdesc_'.$tplLanguage : 'oxdesc';
|
|
|
|
/** @var Article $article */
|
|
$article = oxNew(Article::class);
|
|
$article->setEnableMultilang(false);
|
|
$fieldnames = $article->getFieldNames();
|
|
$fieldnames = $this->addLongdescFields($fieldnames);
|
|
|
|
/** @var ListModel $importFields */
|
|
$importFields = oxNew(ListModel::class, ImporterDescription::class);
|
|
/** @var ImporterDescription $importerDescription */
|
|
$importerDescription = $importFields->getBaseObject();
|
|
$importerDescription->setLanguage($tplLanguage);
|
|
|
|
$sSelect = "SELECT * FROM d3importerdesc WHERE oxfield LIKE 'oxvarname%' ORDER BY oxorder";
|
|
|
|
$importFields->selectString($sSelect);
|
|
|
|
foreach ($fieldnames as $val) {
|
|
if (!substr_count($val, "oxvarname")) {
|
|
continue;
|
|
}
|
|
$temporaryClass = new stdClass();
|
|
$temporaryClass->fldname = isset($val) ? (string)$val : '';
|
|
|
|
/** @var BaseModel $importField */
|
|
foreach ($importFields as $importField) {
|
|
if ($importField->getFieldData('oxfield') != $temporaryClass->fldname) {
|
|
continue;
|
|
}
|
|
|
|
if ($importField->getFieldData('oxisdisabled')) {
|
|
continue 2;
|
|
}
|
|
|
|
$temporaryClass->fldshowname = $importField->getFieldData($descriptionName);
|
|
}
|
|
|
|
$aFieldList[$temporaryClass->fldname] = $temporaryClass;
|
|
}
|
|
|
|
$sSelect = "SELECT * FROM d3importerdesc WHERE oxfield LIKE 'oxvarselect%' ORDER BY oxorder";
|
|
$importFields->selectString($sSelect);
|
|
|
|
foreach ($fieldnames as $val) {
|
|
if (!substr_count($val, "oxvarselect")) {
|
|
continue;
|
|
}
|
|
|
|
$temporaryClass = new stdClass();
|
|
$temporaryClass->fldname = (string)$val;
|
|
|
|
/** @var BaseModel $importField */
|
|
foreach ($importFields as $importField) {
|
|
if ($importField->getFieldData('oxfield') != $temporaryClass->fldname) {
|
|
continue;
|
|
}
|
|
|
|
if ($importField->getFieldData('oxisdisabled')) {
|
|
continue 2;
|
|
}
|
|
|
|
$temporaryClass->fldshowname = $importField->getFieldData($descriptionName);
|
|
}
|
|
|
|
$aFieldList[$temporaryClass->fldname] = $temporaryClass;
|
|
}
|
|
|
|
return $aFieldList;
|
|
}
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function addLongdescFields(array $fieldnames)
|
|
{
|
|
$fieldnames[] = 'oxlongdesc';
|
|
$language = Registry::getLang();
|
|
$languages = $language->getLanguageArray(null, false);
|
|
foreach ($languages as $language) {
|
|
if (0 < $language->id) {
|
|
$fieldnames[] = 'oxlongdesc_' . $language->id;
|
|
}
|
|
}
|
|
|
|
return $fieldnames;
|
|
}
|
|
}
|