223 lines
7.0 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\Pictureimport;
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 stdClass;
use Exception;
use OxidEsales\Eshop\Core\Exception\SystemComponentException;
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\Application\Model\Article;
use OxidEsales\Eshop\Core\Model\BaseModel;
use OxidEsales\Eshop\Core\Model\ListModel;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\Request;
/**
* Importer main manager.
*
* @package admin
*/
class Main extends Base
{
/**
* Current class default template name.
*
* @var string
*/
protected $_sThisTemplate = '@' . Constants::OXID_MODULE_ID . '/admin/d3_picture_main';
/**
* Speichert den aktuellen Fehlercode
*
* @var integer
*/
protected $failConfigCode = 0;
protected $isUploadFailed;
protected $requireProfileCheck = false;
protected $currentProfileName = 'd3_picture_main';
/**
* Executes parent method parent::render(), creates oxlist object,
* passes it's data to Smarty engine and retutns name of template
* file "d3_picture_main.tpl".
*
* @return string
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws DBALException
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
*/
public function render()
{
$sReturn = parent::render();
$tplLanguage = Registry::getLang()->getTplLanguage();
$descriptionName = $tplLanguage ? 'oxdesc_'.$tplLanguage : 'oxdesc';
$aImageFieldList = new stdClass();
$oArticle = oxNew(Article::class);
$oImporterDesc = oxNew(ListModel::class, ImporterDescription::class);
/** @var ImporterDescription $baseObject */
$baseObject = $oImporterDesc->getBaseObject();
$baseObject->setLanguage($tplLanguage);
$sSelect = "SELECT * FROM d3importerdesc WHERE oxispic = '1' AND oxisdisabled != '1' ORDER BY oxorder";
$oImporterDesc->selectString($sSelect);
foreach ($oArticle as $key => $val) {
if (substr_count($key, "oxarticles__")) {
$val->fldname = str_replace("oxarticles__", "", $key);
$blDelete = true;
/** @var BaseModel $oDesc */
foreach ($oImporterDesc as $oDesc) {
if ($oDesc->getFieldData('oxfield') != $val->fldname) {
continue;
}
$val->fldshowname = $oDesc->getFieldData($descriptionName);
$val->flddisabled = $oDesc->getFieldData('oxisdisabled');
$blDelete = false;
}
if ($blDelete) {
unset($aImageFieldList->{$val->fldname});
} else {
$aImageFieldList->{$val->fldname} = $val;
}
}
}
$this->addTplParam("imagefieldlist", $aImageFieldList);
$this->addTplParam("importfieldlist", $this->getPictureFields(Registry::getConfig()->getConfigParam('iPicCount')));
$this->addTplParam("iPicCount", Registry::getConfig()->getConfigParam('iPicCount'));
$this->addTplParam("sNextKey", 0);
return $sReturn;
}
/**
*
* @return void
* @throws Exception
* @throws d3_cfg_mod_exception
* @throws DatabaseConnectionException
*/
public function saveImportProfile(array $aXMLParams = [])
{
$request = oxNew(Request::class);
$aXMLPictureParams = $request->getRequestParameter("xmlpictureval");
$aPictureSettings = $request->getRequestParameter("aPictureSettings");
foreach ($aXMLPictureParams as $iIndex => $aXMLParam) {
if (empty($aXMLParam['IMPORTFIELD'])) {
unset($aXMLPictureParams[$iIndex]);
}
}
usort(
$aXMLPictureParams,
function ($a, $b) {
$iA = (int)substr($a["IMPORTFIELD"], strlen("d3importpic"));
$iB = (int)substr($b["IMPORTFIELD"], strlen("d3importpic"));
return $iA <=> $iB;
}
);
parent::saveImportProfile(
['aXMLPictureParams' => $aXMLPictureParams, 'aPictureSettings' => $aPictureSettings]
);
}
/**
* Wird fuer die Rueckgabe ans Template benoetigt
*
* @return integer $this->_iFailConfig
*/
public function getConfigFailure()
{
if (!isset($this->failConfigCode)) {
return 0;
}
if (empty($this->failConfigCode)) {
return 0;
}
return $this->failConfigCode;
}
/**
* Speichert den aktuellen Fehlercode
*
* @param integer $iError
*/
protected function setFailConfigCode($iError)
{
$this->failConfigCode = $iError;
}
/**
* @return array
*/
protected function getFormularElements(ImportConfig $oImportConfig)
{
// TODO: Implement _getFormularElements() method.
return [];
}
/**
*
* @param int $pictureSlots
*
* @return array
* @throws SystemComponentException
*/
protected function getPictureFields($pictureSlots)
{
$tplLanguage = Registry::getLang()->getTplLanguage();
$descriptionName = $tplLanguage ? 'oxdesc_'.$tplLanguage : 'oxdesc';
$oImporterDesc = oxNew(ListModel::class, ImporterDescription::class);
$aImportFieldList = [];
$nameList = [];
for ($i = 1; $pictureSlots >= $i; $i++) {
$nameList[] = "'d3importpic{$i}'";
}
$nameList = implode(', ', $nameList);
$sSelect = "SELECT * FROM d3importerdesc WHERE oxfield IN({$nameList}) ORDER BY oxorder";
$oImporterDesc->selectString($sSelect);
/** @var BaseModel $obj */
foreach ($oImporterDesc as $obj) {
$aImportFieldList[$obj->getFieldData('oxfield')] = $obj->getFieldData($descriptionName);
}
return $aImportFieldList;
}
}