191 lines
5.8 KiB
PHP
191 lines
5.8 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 OxidEsales\Eshop\Core\Exception\SystemComponentException;
|
|
use Exception;
|
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
use D3\Importer\Application\Controller\Admin\Base;
|
|
use D3\Importer\Application\Controller\Import\Article;
|
|
use D3\Importer\Application\Models\Constants;
|
|
use D3\Importer\Application\Models\ImportConfig;
|
|
use OxidEsales\Eshop\Core\DatabaseProvider;
|
|
use OxidEsales\Eshop\Core\Registry;
|
|
use OxidEsales\Eshop\Core\Request;
|
|
use OxidEsales\Eshop\Core\TableViewNameGenerator;
|
|
|
|
/**
|
|
* Importer import manager.
|
|
*
|
|
* @package admin
|
|
*/
|
|
class Afterimport extends Base
|
|
{
|
|
/**
|
|
* @var Article
|
|
*/
|
|
protected $importer;
|
|
|
|
protected $currentProfileName = 'd3_importer_afterimport';
|
|
|
|
/**
|
|
* Current class default template name.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $_sThisTemplate = '@' . Constants::OXID_MODULE_ID . '/admin/d3_importer_afterimport';
|
|
|
|
/**
|
|
*
|
|
* @throws SystemComponentException
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
if (false == oxNew(Request::class)->getRequestParameter("action")) {
|
|
Registry::getSession()->deleteVariable('notimported_all');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* doing Import
|
|
*
|
|
* @return bool|string
|
|
* @throws Exception
|
|
* @throws d3_cfg_mod_exception
|
|
* @throws DatabaseConnectionException
|
|
*/
|
|
public function doAfterImport()
|
|
{
|
|
$request = oxNew(Request::class);
|
|
$soxId = $request->getRequestParameter("oxid");
|
|
$sAction = $request->getRequestParameter("action");
|
|
$iTicker = (int)$request->getRequestParameter("afterimportticker");
|
|
if (false == $sAction) {
|
|
$this->addTplParam("isfailconfig", 15);
|
|
|
|
return;
|
|
}
|
|
|
|
$oImportConfig = $this->getD3ImporterConfiguration();
|
|
|
|
if (false == $oImportConfig->getId()) {
|
|
$this->addTplParam("isfailconfig", 10);
|
|
|
|
return;
|
|
}
|
|
|
|
if ($iTicker) {
|
|
$oImportConfig->saveImportProfile(['AFTERIMPORTTICKER' => $iTicker], $this->getD3CurrentProfileName());
|
|
}
|
|
|
|
$iAllCount = Registry::getSession()->getVariable('notimported_all');
|
|
|
|
if (!$iAllCount) {
|
|
$iAllCount = $this->getStatisticData('notimported_all');
|
|
Registry::getSession()->setVariable('notimported_all', $iAllCount);
|
|
}
|
|
|
|
$tickerMaximum = (int)$oImportConfig->getImportProfile($this->getD3CurrentProfileName())['AFTERIMPORTTICKER'];
|
|
/** @var Article $articleImport */
|
|
$articleImport = oxNew(Article::class, $oImportConfig);
|
|
$articleImport->afterImport($sAction, $tickerMaximum);
|
|
|
|
$this->importer = $articleImport;
|
|
$this->addTplParam("oxid", $soxId);
|
|
$this->addTplParam("sAction", $sAction);
|
|
$this->addTplParam("iActPos", $iAllCount - $this->getStatisticData('notimported_all'));
|
|
$this->addTplParam("iAllPos", $iAllCount);
|
|
|
|
$this->_sThisTemplate = '@' . Constants::OXID_MODULE_ID . '/admin/d3_importer_afterticker';
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
* @param $sData
|
|
*
|
|
* @return string
|
|
* @throws DatabaseConnectionException
|
|
* @throws SystemComponentException
|
|
*/
|
|
public function getStatisticData($sData)
|
|
{
|
|
$sData = strtolower(trim($sData));
|
|
$soxId = oxNew(Request::class)->getRequestParameter("oxid");
|
|
$sSQLAdd = " AND d3importprofileid = " . DatabaseProvider::getDb()->quote($soxId);
|
|
|
|
$sArticleTableView = oxNew(TableViewNameGenerator::class)->getViewName('oxarticles');
|
|
|
|
$oDB = DatabaseProvider::getDb();
|
|
if ("profile" === $sData) {
|
|
return $oDB->getOne("SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE 1 " . $sSQLAdd);
|
|
}
|
|
|
|
if ("imported" === $sData) {
|
|
return $oDB->getOne("SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE d3importflag = 'imported' " . $sSQLAdd);
|
|
}
|
|
|
|
if ("updated" === $sData) {
|
|
return $oDB->getOne("SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE d3importflag = 'updated' " . $sSQLAdd);
|
|
}
|
|
|
|
if ("notimported_all" === $sData) {
|
|
return $oDB->getOne("SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE d3importflag = '' " . $sSQLAdd);
|
|
}
|
|
|
|
if ("notimported_main" === $sData) {
|
|
return $oDB->getOne(
|
|
"SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE d3importflag = '' AND oxparentid = '' " . $sSQLAdd
|
|
);
|
|
}
|
|
|
|
if ("notimported_variants" === $sData) {
|
|
return $oDB->getOne(
|
|
"SELECT COUNT(oxid) FROM $sArticleTableView as oxarticles WHERE d3importflag = '' AND oxparentid != '' " . $sSQLAdd
|
|
);
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function isFailImport()
|
|
{
|
|
return $this->importer->getFailImport();
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public function isEOF()
|
|
{
|
|
return $this->importer->isEndOfFile();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function getFormularElements(ImportConfig $oImportConfig)
|
|
{
|
|
// TODO: Implement _getFormularElements() method.
|
|
return [];
|
|
}
|
|
}
|