521 lines
20 KiB
PHP
521 lines
20 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.
|
||
|
*
|
||
|
* 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\Fileupload\Setup;
|
||
|
|
||
|
use D3\Fileupload\Application\Model\d3fileupload_setting;
|
||
|
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
|
||
|
use D3\ModCfg\Application\Model\d3database;
|
||
|
use D3\ModCfg\Application\Model\d3filesystem;
|
||
|
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
|
||
|
use D3\ModCfg\Application\Model\Exception\d3ParameterNotFoundException;
|
||
|
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
|
||
|
use D3\ModCfg\Application\Model\Install\d3install_updatebase;
|
||
|
use Doctrine\DBAL\DBALException;
|
||
|
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\Exception\StandardException;
|
||
|
use OxidEsales\Eshop\Core\Registry;
|
||
|
use OxidEsales\Eshop\Core\UtilsObject;
|
||
|
|
||
|
class d3fileupload_update extends d3install_updatebase
|
||
|
{
|
||
|
public $sModKey = 'd3fileupload';
|
||
|
public $sModName = 'FileUpload';
|
||
|
public $sModVersion = '5.0.0.0';
|
||
|
public $sModRevision = '5000';
|
||
|
public $sBaseConf = 'yPgv2==Nnl5c2l2cWRrcnhOTElJRjBnZXdiWTZGZU8zOUR2YS9YVTBPam9IVm9GVjRicWUvTTdmRGpQd
|
||
|
GtGNUFhOWpLbnBUK1gzbGZkNldTUE5BTTNoV0QzYVJKTkRrZEZMUHpqMHlOVXlSWUtrOUx4WDV2VGRPO
|
||
|
HllQ3M2bXZTWGdNQ3Rzejl4TTY2T3F0eUR0U0ZpRldnQkY0Ky82MStJY1RlRWF3YXJZTGNIYXFOYU1GZ
|
||
|
VhqTUUzSFp5UHl2eEIyMXZQTzgwQWJSTWlHcTYvNXRPYk5UN3l0bUM3VUhqbldSbHEyRytqL1hZZXBtZ
|
||
|
zBpT2xkWXZHTTVHT0hCZ01DbjN3TThNQXVOZWNSZHFVeGUwUmtLRS9xWng0ams4dXBVUGlFcGs1U0lGW
|
||
|
VRpbDIvUjk4MGdldVhzWkxwYlprNVB5dEhuR0ZHM1pjZVg0ZlhGTlVGbVlNbzB3PT0=';
|
||
|
public $sRequirements = '';
|
||
|
public $sBaseValue = 'TyUzQTglM0ElMjJzdGRDbGFzcyUyMiUzQTE1JTNBJTdCcyUzQTMyJTNBJTIyZDNfY2ZnX21vZF9fYUQzQWxsb3dlZFVwbGFkRmlsZXMlMjIlM0JhJTNBMTElM0ElN0JpJTNBMCUzQnMlM0EzJTNBJTIyemlwJTIyJTNCaSUzQTElM0JzJTNBMyUzQSUyMnJhciUyMiUzQmklM0EyJTNCcyUzQTMlM0ElMjJqcGclMjIlM0JpJTNBMyUzQnMlM0EzJTNBJTIyZ2lmJTIyJTNCaSUzQTQlM0JzJTNBMyUzQSUyMnBuZyUyMiUzQmklM0E1JTNCcyUzQTMlM0ElMjJwZGYlMjIlM0JpJTNBNiUzQnMlM0EzJTNBJTIycHNkJTIyJTNCaSUzQTclM0JzJTNBMyUzQSUyMmRvYyUyMiUzQmklM0E4JTNCcyUzQTQlM0ElMjJkb2N4JTIyJTNCaSUzQTklM0JzJTNBMyUzQSUyMnhscyUyMiUzQmklM0ExMCUzQnMlM0E0JTNBJTIyeGxzeCUyMiUzQiU3RHMlM0EyNCUzQSUyMmQzX2NmZ19tb2RfX3NEM1VwbG9hZERpciUyMiUzQnMlM0ExNyUzQSUyMi4uJTJGLi4lMkZ1cGxvYWRmaWxlcyUyMiUzQnMlM0EyNCUzQSUyMmQzX2NmZ19tb2RfX3NEM1VwbG9hZFVybCUyMiUzQnMlM0E1JTNBJTIyZmlsZXMlMjIlM0JzJTNBMjUlM0ElMjJkM19jZmdfbW9kX19zRDNVcGxvYWRQZXJtJTIyJTNCcyUzQTQlM0ElMjIwNjQ0JTIyJTNCcyUzQTI4JTNBJTIyZDNfY2ZnX21vZF9faUQzTWF4VXBsb2FkU2l6ZSUyMiUzQmklM0EyMDk3MTUyJTNCcyUzQTI5JTNBJTIyZDNfY2ZnX21vZF9faUQzTWF4VXBsb2FkRmlsZXMlMjIlM0JzJTNBMSUzQSUyMjUlMjIlM0JzJTNBMjglM0ElMjJkM19jZmdfbW9kX19hTGljZW5zZUluZm9NYWlsJTIyJTNCYSUzQTIlM0ElN0JzJTNBNDIlM0ElMjJOT0xJQ0tFWV9fNDc5MzYzODcwMmI2NzcxNWYxZGZiZmM4MzI0NjY5MTQlMjIlM0JzJTNBMTklM0ElMjIyMDEzLTAxLTEwJTIwMTIlM0ExNyUzQTM1JTIyJTNCcyUzQTQzJTNBJTIyTk9DT05GS0VZX19kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSUyMiUzQnMlM0ExOSUzQSUyMjIwMTMtMDEtMTAlMjAwMSUzQTQyJTNBNTklMjIlM0IlN0RzJTNBNDQlM0ElMjJkM19jZmdfbW9kX19ibFVwZGF0ZUhhc0NoZWNrZWRGb3JPcnBoYW5GaWxlcyUyMiUzQmklM0ExJTNCcyUzQTQxJTNBJTIyZDNfY2ZnX21vZF9fYUQzQWxsb3dlZFVwbGFkRmlsZUV4dGVuc2lvbnMlMjIlM0JhJTNBOCUzQSU3QmklM0EwJTNCcyUzQTMlM0ElMjJwZGYlMjIlM0JpJTNBMSUzQnMlM0EzJTNBJTIyanBnJTIyJTNCaSUzQTIlM0JzJTNBMyUzQSUyMnBuZyUyMiUzQmklM0EzJTNCcyUzQTMlM0ElMjJwc2QlMjIlM0JpJTNBNCUzQnMlM0EzJTNBJTIyZG9jJTIyJTNCaSUzQTUlM0JzJTNBNCUzQSUyMmRvY3glMjIlM0JpJTNBNiUzQnMlM0EzJTNBJTIyeGxzJTIyJTNCaSUzQTclM0JzJTNBNCUzQSUyMnhsc3glMjIlM0IlN0RzJTNBMjglM0ElMjJkM19jZmdfbW9kX19zRDNVcGxvYWRQZXJtZGlyJTIyJTNCcyUzQTQlM0ElMjIwNzQ0JTIyJTNCcyUzQTI5JTNBJTIyZDNfY2ZnX21vZF9fc0QzVXBsb2FkUGVybWZpbGUlMjIlM0JzJTNBNCUzQSUyMjA2NjQlMjIlM0JzJTNBMzQlM0ElMjJkM19jZmdfbW9kX19ibFZhcmlhbnRJbmhlcml0VXBsb2FkJTIyJTNCcyUzQTElM0ElMjIwJTIyJTNCcyUzQTI3JTNBJTIyZDNfY2ZnX21vZF9fYmxBbGxvd0ZpeGF0aW9uJTIyJTNCcyUzQTElM0ElMjIwJTIyJTNCcyUzQTI0JTNBJTIyZDNfY2ZnX21vZF9fYmxDcm9uQWN0aXZlJTIyJTNCcyUzQTElM0ElMjIwJTIyJTNCcyUzQTI1JTNBJTIyZDNfY2ZnX21vZF9fc0Nyb25QYXNzd29yZCUyMiUzQnMlM0E4JTNBJTIyQjhnbjlNUmElMjIlM0IlN0Q=';
|
||
|
|
||
|
protected $_aUpdateMethods = array
|
||
|
(
|
||
|
array('check' => 'checkModCfgItemExist',
|
||
|
'do' => 'updateModCfgItemExist'),
|
||
|
array('check' => 'checkFileUploadTableExist',
|
||
|
'do' => 'updateFileUploadTableExist'),
|
||
|
array('check' => 'checkFields',
|
||
|
'do' => 'fixFields'),
|
||
|
array('check' => 'checkIndizes',
|
||
|
'do' => 'fixIndizes'),
|
||
|
array('check' => 'hasNoUploadDir',
|
||
|
'do' => 'createUploadDir'),
|
||
|
array('check' => 'hasNoTuples',
|
||
|
'do' => 'addFilesWithoutTuples'),
|
||
|
array('check' => 'hasUnregisteredFiles',
|
||
|
'do' => 'showUnregisteredFiles'),
|
||
|
array('check' => 'checkModCfgSameRevision',
|
||
|
'do' => 'updateModCfgSameRevision'),
|
||
|
);
|
||
|
|
||
|
// Standardwerte fuer checkMultiLangTables() und fixRegisterMultiLangTables()
|
||
|
public $aMultiLangTables = array();
|
||
|
|
||
|
public $aFields = array(
|
||
|
'OOA_D3ISUPLOAD' => array(
|
||
|
'sTableName' => 'oxorderarticles',
|
||
|
'sFieldName' => 'D3ISUPLOAD',
|
||
|
'sType' => 'TINYINT(1)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0',
|
||
|
'sComment' => 'd3FileUpload: article requires upload',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
'blAddBreak' => true,
|
||
|
),
|
||
|
'OO_D3UPLOADFIXED' => array(
|
||
|
'sTableName' => 'oxorder',
|
||
|
'sFieldName' => 'D3UPLOADFIXED',
|
||
|
'sType' => 'DATETIME',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0000-00-00 00:00:00',
|
||
|
'sComment' => 'd3FileUpload: uploads are fixed',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
'blAddBreak' => true,
|
||
|
),
|
||
|
'OA_D3ISUPLOAD' => array(
|
||
|
'sTableName' => 'oxarticles',
|
||
|
'sFieldName' => 'D3ISUPLOAD',
|
||
|
'sType' => 'TINYINT(1)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0',
|
||
|
'sComment' => 'd3FileUpload: article requires upload',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
'blAddBreak' => true,
|
||
|
),
|
||
|
'OA_D3FILEUPLOADS' => array(
|
||
|
'sTableName' => 'oxarticles',
|
||
|
'sFieldName' => 'D3FILEUPLOADS',
|
||
|
'sType' => 'VARCHAR(255)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '',
|
||
|
'sComment' => 'd3FileUpload: article dependend file uploads',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
'blAddBreak' => true,
|
||
|
),
|
||
|
'FU_OXID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXID',
|
||
|
'sType' => 'CHAR(32)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => false,
|
||
|
'sComment' => '',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXORDERID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXORDERID',
|
||
|
'sType' => 'CHAR(32)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => false,
|
||
|
'sComment' => '',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXORDERARTICLEID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXORDERARTICLEID',
|
||
|
'sType' => 'CHAR(32)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => false,
|
||
|
'sComment' => '',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXUPLOADID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXUPLOADID',
|
||
|
'sType' => 'CHAR(100)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => false,
|
||
|
'sComment' => '',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXFILENAME' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXFILENAME',
|
||
|
'sType' => 'VARCHAR(255)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => false,
|
||
|
'sComment' => '',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXFILESIZE' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXFILESIZE',
|
||
|
'sType' => 'INT(9)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0',
|
||
|
'sComment' => 'filesize in bytes',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXFILECTIME' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXFILECTIME',
|
||
|
'sType' => 'INT(10)',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0',
|
||
|
'sComment' => 'change time',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXUPLOADDATE' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXUPLOADDATE',
|
||
|
'sType' => 'DATETIME',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '0000-00-00 00:00:00',
|
||
|
'sComment' => 'upload time',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
'FU_OXUPLOADNOTE' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sFieldName' => 'OXUPLOADNOTE',
|
||
|
'sType' => 'TEXT',
|
||
|
'blNull' => false,
|
||
|
'sDefault' => '',
|
||
|
'sComment' => 'note for upload file',
|
||
|
'sExtra' => '',
|
||
|
'blMultilang' => false,
|
||
|
),
|
||
|
);
|
||
|
|
||
|
public $aIndizes = array(
|
||
|
'FU_OXID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sType' => d3database::INDEX_TYPE_PRIMARY,
|
||
|
'aFields' => array(
|
||
|
'OXID' => 'OXID',
|
||
|
),
|
||
|
),
|
||
|
'FU_OXORDERID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sType' => d3database::INDEX_TYPE_INDEX,
|
||
|
'sName' => 'OXORDERID',
|
||
|
'aFields' => array(
|
||
|
'OXORDERID' => 'OXORDERID',
|
||
|
),
|
||
|
),
|
||
|
'FU_OXORDERARTICLEID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sType' => d3database::INDEX_TYPE_INDEX,
|
||
|
'sName' => 'OXORDERARTICLEID',
|
||
|
'aFields' => array(
|
||
|
'OXORDERARTICLEID' => 'OXORDERARTICLEID',
|
||
|
),
|
||
|
),
|
||
|
'FU_OXORDERARTICLEUPLOADID' => array(
|
||
|
'sTableName' => 'd3fileupload',
|
||
|
'sType' => d3database::INDEX_TYPE_INDEX,
|
||
|
'sName' => 'OXORDERARTICLEUPLOADID',
|
||
|
'aFields' => array(
|
||
|
'OXORDERARTICLEID' => 'OXORDERARTICLEID',
|
||
|
'OXUPLOADID' => 'OXUPLOADID',
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
protected $_aRefreshMetaModuleIds = array('d3fileupload');
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
*/
|
||
|
public function checkFileUploadTableExist()
|
||
|
{
|
||
|
return $this->_checkTableNotExist('d3fileupload');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws ConnectionException
|
||
|
*/
|
||
|
public function updateFileUploadTableExist()
|
||
|
{
|
||
|
$blRet = false;
|
||
|
if ($this->checkFileUploadTableExist()) {
|
||
|
$this->setInitialExecMethod(__METHOD__);
|
||
|
$blRet = $this->_addTable2(
|
||
|
'd3fileupload',
|
||
|
$this->aFields,
|
||
|
$this->aIndizes,
|
||
|
'file uploads for order articles',
|
||
|
'MyISAM'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return $blRet;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws StandardException
|
||
|
* @throws d3ShopCompatibilityAdapterException
|
||
|
* @throws d3_cfg_mod_exception
|
||
|
*/
|
||
|
public function hasNoUploadDir()
|
||
|
{
|
||
|
/** @var d3fileupload_setting $oFileUploadSettings */
|
||
|
$oFileUploadSettings = oxNew(d3fileupload_setting::class);
|
||
|
$sPath = $oFileUploadSettings->getFullUploadDir();
|
||
|
|
||
|
/** @var d3filesystem $fileSystem */
|
||
|
$fileSystem = oxNew(d3filesystem::class);
|
||
|
return !$fileSystem->exists($sPath);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws StandardException
|
||
|
* @throws d3ShopCompatibilityAdapterException
|
||
|
* @throws d3_cfg_mod_exception
|
||
|
*/
|
||
|
public function createUploadDir()
|
||
|
{
|
||
|
$blRet = true;
|
||
|
/** @var d3fileupload_setting $oFileUploadSettings */
|
||
|
$oFileUploadSettings = oxNew(d3fileupload_setting::class);
|
||
|
$sPath = $oFileUploadSettings->getFullUploadDir();
|
||
|
|
||
|
$this->setInitialExecMethod(__METHOD__);
|
||
|
|
||
|
/** @var d3filesystem $fileSystem */
|
||
|
$fileSystem = oxNew(d3filesystem::class);
|
||
|
|
||
|
if ($this->hasExecute()) {
|
||
|
$blRet = $fileSystem->create_dir_tree($sPath);
|
||
|
} else {
|
||
|
$this->setActionLog(
|
||
|
'MSG',
|
||
|
sprintf(
|
||
|
Registry::getLang()->translateString('D3FILEUPLOAD_UPDATE_UPLOADDIR'),
|
||
|
$sPath
|
||
|
),
|
||
|
$this->getInitialExecMethod(__METHOD__)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
return $blRet;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool true, if update is required
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
*/
|
||
|
public function hasNoTuples()
|
||
|
{
|
||
|
$blRet = false;
|
||
|
|
||
|
/** @var d3_cfg_mod $oModCfg */
|
||
|
$oModCfg = d3_cfg_mod::get($this->sModKey);
|
||
|
if ($oModCfg->getValue('blUpdateHasCheckedForOrphanFiles')) {
|
||
|
return $blRet;
|
||
|
}
|
||
|
|
||
|
// change this to your inividual check criterias
|
||
|
$sSql = "SELECT count(`oxid`) ";
|
||
|
$sSql .= "FROM `d3fileupload` WHERE 1;";
|
||
|
|
||
|
if ($this->getDb()->getOne($sSql) == 0) {
|
||
|
$blRet = true;
|
||
|
}
|
||
|
|
||
|
return $blRet;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws d3ShopCompatibilityAdapterException
|
||
|
* @throws d3_cfg_mod_exception
|
||
|
* @throws StandardException
|
||
|
*/
|
||
|
public function addFilesWithoutTuples()
|
||
|
{
|
||
|
$blRet = true;
|
||
|
|
||
|
/** @var d3filesystem $oFileSystem */
|
||
|
$oFileSystem = oxNew(d3filesystem::class);
|
||
|
|
||
|
/** @var d3fileupload_setting $oFileUploadSettings */
|
||
|
$oFileUploadSettings = oxNew(d3fileupload_setting::class);
|
||
|
$sPath = $oFileUploadSettings->getFullUploadDir();
|
||
|
$aOrderList = $oFileSystem->dirlist($sPath, false, true, true);
|
||
|
|
||
|
$aQueries = array();
|
||
|
|
||
|
foreach ($aOrderList as $aOrder) {
|
||
|
$this->_handleOrderUploadFiles($aQueries, $aOrder);
|
||
|
}
|
||
|
|
||
|
$this->setInitialExecMethod(__METHOD__);
|
||
|
|
||
|
if (count($aQueries)) {
|
||
|
foreach ($aQueries as $sSql) {
|
||
|
$this->sqlExecute($sSql);
|
||
|
}
|
||
|
$this->setActionLog('SQL', implode(PHP_EOL . PHP_EOL, $aQueries), $this->getInitialExecMethod(__METHOD__));
|
||
|
}
|
||
|
|
||
|
/** @var d3_cfg_mod $oModCfg */
|
||
|
$oModCfg = d3_cfg_mod::get($this->sModKey);
|
||
|
$oModCfg->setValue('blUpdateHasCheckedForOrphanFiles', 1);
|
||
|
$oModCfg->saveNoLicenseRefresh();
|
||
|
$this->setUpdateBreak(true);
|
||
|
|
||
|
return $blRet;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $aQueries
|
||
|
* @param $aOrder
|
||
|
*
|
||
|
* @throws DatabaseConnectionException
|
||
|
*/
|
||
|
public function _handleOrderUploadFiles(&$aQueries, $aOrder)
|
||
|
{
|
||
|
if ($aOrder['type'] == 'd') {
|
||
|
$sOrderId = $aOrder['name'];
|
||
|
if (is_array($aOrder['files'])) {
|
||
|
foreach ($aOrder['files'] as $aOrderArticle) {
|
||
|
if ($aOrderArticle['type'] == 'd') {
|
||
|
$sOrderArticleId = $aOrderArticle['name'];
|
||
|
$this->_handleOrderArticleUploadFiles(
|
||
|
$aQueries,
|
||
|
$aOrderArticle,
|
||
|
$sOrderId,
|
||
|
$sOrderArticleId
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $aQueries
|
||
|
* @param $aOrderArticle
|
||
|
* @param $sOrderId
|
||
|
* @param $sOrderArticleId
|
||
|
*
|
||
|
* @throws DatabaseConnectionException
|
||
|
*/
|
||
|
protected function _handleOrderArticleUploadFiles(&$aQueries, $aOrderArticle, $sOrderId, $sOrderArticleId)
|
||
|
{
|
||
|
if (is_array($aOrderArticle['files'])) {
|
||
|
foreach ($aOrderArticle['files'] as $aOrderArticleUpload) {
|
||
|
if ($aOrderArticleUpload['type'] == 'f') {
|
||
|
$aQueries[] = $this->_getUploadFileQuery (
|
||
|
$sOrderId,
|
||
|
$sOrderArticleId,
|
||
|
$aOrderArticleUpload
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param $sOrderId
|
||
|
* @param $sOrderArticleId
|
||
|
* @param $aFileData
|
||
|
*
|
||
|
* @return string
|
||
|
* @throws DatabaseConnectionException
|
||
|
*/
|
||
|
protected function _getUploadFileQuery($sOrderId, $sOrderArticleId, $aFileData)
|
||
|
{
|
||
|
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
|
||
|
$sQuery = "INSERT INTO d3fileupload (".
|
||
|
"`oxid`, ".
|
||
|
"`oxorderid`, ".
|
||
|
"`oxorderarticleid`, ".
|
||
|
"`oxfilename`, ".
|
||
|
"`oxfilesize`, ".
|
||
|
"`oxfilectime`, ".
|
||
|
"`oxuploaddate`) VALUES (".
|
||
|
$oDb->quote(UtilsObject::getInstance()->generateUId()).", ".
|
||
|
$oDb->quote($sOrderId).", ".
|
||
|
$oDb->quote($sOrderArticleId).", ".
|
||
|
$oDb->quote($aFileData['name']).", ".
|
||
|
$oDb->quote($aFileData['size']).", ".
|
||
|
$oDb->quote($aFileData['lastmodunix']).", ".
|
||
|
$oDb->quote(date("Y-m-d H:i:s")).");";
|
||
|
|
||
|
return $sQuery;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws StandardException
|
||
|
* @throws d3ParameterNotFoundException
|
||
|
* @throws d3ShopCompatibilityAdapterException
|
||
|
* @throws d3_cfg_mod_exception
|
||
|
*/
|
||
|
public function hasUnregisteredFiles()
|
||
|
{
|
||
|
return $this->_hasUnregisteredFiles('d3fileupload', array('blocks', 'd3FileRegister'));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return bool
|
||
|
* @throws DBALException
|
||
|
* @throws DatabaseConnectionException
|
||
|
* @throws DatabaseErrorException
|
||
|
* @throws StandardException
|
||
|
* @throws d3ShopCompatibilityAdapterException
|
||
|
* @throws d3_cfg_mod_exception
|
||
|
*/
|
||
|
public function showUnregisteredFiles()
|
||
|
{
|
||
|
return $this->_showUnregisteredFiles('d3fileupload', array('blocks', 'd3FileRegister'));
|
||
|
}
|
||
|
}
|