add 6.0.1.0 sourceGuardian PHP 8

This commit is contained in:
Daniel Seifert 2024-09-03 14:18:43 +02:00
commit b9b8dacd3c
641 gewijzigde bestanden met toevoegingen van 61064 en 0 verwijderingen

36
.php-cs-fixer.php Normal file
Bestand weergeven

@ -0,0 +1,36 @@
<?php
declare(strict_types=1);
$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
;
$header = <<<EOF
Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
For the full copyright and license information, please view
the LICENSE file that was distributed with this source code.
https://www.d3data.de
@copyright (C) D3 Data Development (Inh. Thomas Dartsch)
@author D3 Data Development - Daniel Seifert <info@shopmodule.com>
@link https://www.oxidmodule.com
EOF;
$config = new PhpCsFixer\Config();
return $config->setRules([
'@PHP80Migration' => true,
'@PSR12' => true,
'header_comment' => [
'comment_type' => 'PHPDoc',
'header' => $header,
'location' => 'after_open',
'separate' => 'both',
],
'php_unit_test_class_requires_covers' => true,
'doctrine_annotation_indentation' => true,
])
->setFinder($finder)
;

Bestand weergeven

@ -0,0 +1,47 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\Usermanager\Application\Model\Constants;
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
use OxidEsales\Eshop\Application\Controller\Admin\AdminMall;
// @codeCoverageIgnoreStart
// fallback for non ee editions
if (! class_exists('\\' . AdminMall::class)) {
class d3AdminMall extends AdminDetailsController
{
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_mall';
public function render(): string
{
parent::render();
return $this->_sThisTemplate;
}
public function assignToSubshops()
{
}
}
} else {
class d3AdminMall extends AdminMall
{
}
}
// @codeCoverageIgnoreEnd

Bestand weergeven

@ -0,0 +1,35 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_list as itemList;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_main as itemMain;
class d3_cfg_usermanageritem extends d3_cfg_mod_
{
public function render(): string
{
$this->addTplParam('sListClass', itemList::class);
$this->addTplParam('sMainClass', itemMain::class);
$this->_hasListItems = true;
return parent::render();
}
}

Bestand weergeven

@ -0,0 +1,310 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
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\Usermanager\Application\Model\Actions\d3usermanager_action_interface as ActionModelInterface;
use D3\Usermanager\Application\Model\Actions\d3usermanager_actiongrouplist as ActionGroupList;
use D3\Usermanager\Application\Model\Actions\d3usermanager_actionlist as ActionList;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_actionException;
use DateTime;
use Doctrine\DBAL\Exception as DoctrineException;
use Doctrine\DBAL\Query\QueryBuilder;
use OxidEsales\Eshop\Application\Model\ContentList;
use OxidEsales\Eshop\Application\Model\User as Item;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Model\ListModel;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\Request;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_settings as ItemSettingsController;
use OxidEsales\Eshop\Core\UtilsView;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use OxidEsales\EshopCommunity\Internal\Framework\Database\QueryBuilderFactoryInterface;
class d3_cfg_usermanageritem_action extends ItemSettingsController
{
use VariablesTrait;
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_action';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
protected $_sSavedId;
protected $_sExportFieldDescMLIdent = 'D3_USERMANAGER_FIELDDESC';
protected $_sExportFieldTitleBaseMLIdent = 'D3_USERMANAGER_FIELDTITLE_';
protected $_sExportFieldLangMLIdent = 'D3_USERMANAGER_FIELDADD_LANG';
/**
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
*/
public function save(): void
{
// @codeCoverageIgnoreStart
if (!defined('OXID_PHP_UNIT')) {
parent::save();
}
// @codeCoverageIgnoreEnd
$aMissingRequiredValues = [];
/** @var ActionModelInterface $oAction */
foreach ($this->getActionList() as $sId => $oAction) {
if ($this->getProfile()->getValue($oAction->getActiveSwitchParameter())) {
try {
$oAction->throwUnvalidConfigurationException();
} catch (d3usermanager_actionException $e) {
unset($e);
$aMissingRequiredValues[] = $sId;
}
}
}
if ($aMissingRequiredValues !== []) {
$this->addTplParam('missingRequValuesActions', $aMissingRequiredValues);
}
}
public function getContentList(): ListModel
{
/** @var $oContentList ContentList */
$oContentList = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.ContentList::class);
return $this->_getObjectList($oContentList);
}
public function d3GetConfig(): Config
{
/** @var Config $config */
$config = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Config::class);
return $config;
}
public function getItemFieldNames(): array
{
/** @var Item $item */
$item = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Item::class);
return $item->getFieldNames();
}
public function getProfile(): Manager
{
/** @var Manager $oProfile */
$oProfile = d3GetOxidDIC()->get(Manager::class);
$soxId = $this->getEditObjectId();
if ($soxId != "-1") {
// load object
$oProfile->loadInLang($this->_iEditLang, $soxId);
// load object in other languages
$oOtherLang = $oProfile->getAvailableInLangs();
if (!isset($oOtherLang[$this->_iEditLang])) {
$oProfile->loadInLang(key($oOtherLang), $soxId);
}
}
return $oProfile;
}
public function getExportExamplePath(): string
{
$oProfile = $this->getProfile();
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$soxId = $request->getRequestEscapedParameter("oxid");
if (isset($soxId) && $soxId && $soxId != "-1") {
// load object
$oProfile->loadInLang($this->_iEditLang, $soxId);
$oProfile = $this->_d3LoadInOtherLang($oProfile, $soxId);
}
$aSearch = [(new DateTime())->setTimestamp($oProfile->getStartTime())->format('Y-m-d_H-i-s')];
/** @var Language $oLang */
$oLang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
$aReplace = [$oLang->translateString('D3_USERMANAGER_ACTION_DATEPLACEHOLDER')];
return str_replace($aSearch, $aReplace, $oProfile->getListExportFilePath());
}
/**
* @param $sFieldName
*/
public function getFieldNameDescription($sFieldName): string
{
if (($sFieldNameTitle = $this->getFieldNameTitle($sFieldName))) {
return sprintf(
$this->getLang()->translateString($this->_sExportFieldDescMLIdent),
$sFieldNameTitle,
$sFieldName
);
}
return $sFieldName;
}
public function getLang(): Language
{
/** @var Language $language */
$language = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
return $language;
}
/**
* @param $sFieldName
*/
public function getFieldNameTitle($sFieldName): ?string
{
$sLangAdd = '';
$sPattern = "@(.*)([_]([0-9]{1,3}))$@";
if (preg_match($sPattern, $sFieldName, $aMatches)) {
$sFieldMLIdent = $this->_sExportFieldTitleBaseMLIdent.strtoupper($aMatches[1]);
$aLangNames = $this->getLang()->getLanguageNames();
$sLangAdd = sprintf(
$this->getLang()->translateString($this->_sExportFieldLangMLIdent),
$aLangNames[$aMatches[3]]
);
} else {
$sFieldMLIdent = $this->_sExportFieldTitleBaseMLIdent.strtoupper($sFieldName);
}
$sFieldName = $this->getLang()->translateString($sFieldMLIdent);
if ($sFieldName != $sFieldMLIdent) {
return $sFieldName.$sLangAdd;
}
return null;
}
public function getActionGroupList(): ActionGroupList
{
d3GetOxidDIC()->set(
ActionGroupList::class.'.args.usermanager',
$this->getProfile()
);
d3GetOxidDIC()->set(
ActionGroupList::class.'.args.user',
d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Item::class)
);
/** @var ActionGroupList $actiongroup */
$actiongroup = d3GetOxidDIC()->get(ActionGroupList::class);
return $actiongroup;
}
public function getActionListObject(): ActionList
{
d3GetOxidDIC()->set(
ActionList::class.'.args.usermanager',
$this->getProfile()
);
d3GetOxidDIC()->set(
ActionList::class.'.args.user',
d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Item::class)
);
/** @var ActionList $actionlist */
$actionlist = d3GetOxidDIC()->get(ActionList::class);
return $actionlist;
}
public function getGroupedActionList(): array
{
$oManager = $this->getProfile();
$oActionList = $this->getActionGroupList();
$oActionList->setGroups($oManager->getConfiguration()->getGroupedActionIdList());
return $oActionList->getGroupList();
}
public function getActionList(): array
{
$oManager = $this->getProfile();
$oActionList = $this->getActionListObject();
$oActionList->setActions($oManager->getConfiguration()->getActionIdList());
return $oActionList->getActionList();
}
/**
* @param $soxId
*
*/
protected function _d3LoadInOtherLang(Manager $oProfile, $soxId): Manager
{
// load object in other languages
$oOtherLang = $oProfile->getAvailableInLangs();
if (!isset($oOtherLang[$this->_iEditLang])) {
$oProfile->loadInLang(key($oOtherLang), $soxId);
}
return $oProfile;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws DoctrineException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function markAsFinished(): void
{
$oProfile = $this->getProfile();
/** @var QueryBuilder $queryBuilder */
$queryBuilder = ContainerFactory::getInstance()->getContainer()->get(QueryBuilderFactoryInterface::class)->create();
$queryBuilder->select('count(*)')
->from(d3GetOxidDIC()->get('d3ox.usermanager.'.Item::class)->getViewName());
$iAllCount = $queryBuilder->execute()->fetchOne();
$iCount = $oProfile->markConcernedItemsAsFinished(true);
$oEx = oxNew(
StandardException::class,
sprintf(
Registry::getLang()->translateString('D3_USERMANAGER_ACTION_MARKASFINISHED_MESSAGE'),
$iCount,
$iAllCount
)
);
Registry::get(UtilsView::class)->addErrorToDisplay($oEx);
}
}

Bestand weergeven

@ -0,0 +1,38 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_list;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanagerlist as ManagerList;
class d3_cfg_usermanageritem_list extends d3_cfg_mod_list
{
protected $_sListClass = Manager::class;
protected $_sListType = ManagerList::class;
protected $_blShowListItems = true;
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_list';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
}

Bestand weergeven

@ -0,0 +1,123 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Request;
class d3_cfg_usermanageritem_main extends d3_cfg_mod_main
{
use VariablesTrait;
protected $_sSavedId;
protected $_sSetModId = 'd3usermanager';
protected $_sModId = 'd3usermanager';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_main';
protected $_blUseOwnOxid = true;
protected $_aNaviItems = [
'new' => [
'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
'sTranslationId' => 'D3_TOOLTIPS_NEWUSERMANAGER',
],
];
protected $_sD3ObjectClass = Manager::class;
/**
* Loads article parameters and passes them to template engine, returns
* name of template file "article_main.tpl".
*
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function render(): string
{
$sRet = parent::render();
/** @var Config $config */
$config = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Config::class);
$this->addTplParam("blUseTimeCheck", $config->getConfigParam('blUseTimeCheck'));
return $sRet;
}
/**
* Sets default values for empty article (currently does nothing), returns
* array with parameters.
*
* @param array $aParams Parameters, to set default values
*/
public function addDefaultValues($aParams): array
{
$aParams = parent::addDefaultValues($aParams);
/** @var Manager $oManager */
$oManager = d3GetOxidDIC()->get(Manager::class);
$sFieldLongName = $oManager->d3GetFieldLongName('d3_cronjobid');
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$aRequestParameter = $request->getRequestEscapedParameter("editval");
if (is_array($aRequestParameter) && isset($aRequestParameter[$sFieldLongName])) {
$aRequestParameter[$sFieldLongName] = $this->fixCronjobId($aRequestParameter[$sFieldLongName]);
if (isset($_POST['editval'])) {
$_POST['editval'] = $aRequestParameter;
} elseif (isset($_GET['editval'])) {
$_GET['editval'] = $aRequestParameter;
}
}
return $aParams;
}
/**
* @param $sId
*/
public function fixCronjobId($sId): string|array
{
$aSearch = [
' ',
];
$sReplace = '_';
return str_replace($aSearch, $sReplace, $sId);
}
}

Bestand weergeven

@ -0,0 +1,189 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Model\d3filesystem;
use D3\ModCfg\Application\Model\d3str;
use D3\ModCfg\Application\Model\Exception\wrongModIdException;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Request;
/**
*
*/
class d3_cfg_usermanageritem_mall extends d3AdminMall
{
use VariablesTrait;
private string $_sModId = 'd3usermanager';
/**
* DB table having oxshopincl and oxshopexcl fields we are going to deal with
*/
protected $_sMallTable = "d3modprofile";
protected $_blUseOwnOxid = true;
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items_mall';
protected $_sHelpLinkMLAdd;
protected $_aNaviItems = [
'new' => [
'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
'sTranslationId' => 'D3_TOOLTIPS_NEWUSERMANAGER',
],
];
/**
* Class name of object to load
*/
protected $_sObjectClassName = Manager::class;
/**
* constructor.
*/
public function __construct()
{
d3GetOxidDIC()->getParameter($this->_DIC_Instance_Id . 'modcfgid') === $this->_sModId or
throw oxNew(wrongModIdException::class, $this->_sModId);
parent::__construct();
}
public function getProfile(): Manager
{
/** @var Manager $oManager */
$oManager = d3GetOxidDIC()->get($this->_sObjectClassName);
return $oManager;
}
public function render(): string
{
$oProfile = $this->getProfile();
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$soxId = $request->getRequestEscapedParameter("oxid");
if ($this->_isSetOxid($soxId)) {
// load object
$oProfile->loadInLang($this->_iEditLang, $soxId);
$oProfile = $this->_d3LoadInOtherLang($oProfile, $soxId);
}
$this->addTplParam('edit', $oProfile);
return parent::render();
}
public function getUserMessages(): array
{
return [];
}
public function getLang(): Language
{
/** @var Language $lang */
$lang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
return $lang;
}
public function getHelpURL(): string
{
$sUrl = $this->d3GetSet()->getHelpURL();
/** @var d3str $oD3Str */
$oD3Str = d3GetOxidDIC()->get(d3str::class);
if ($this->_sHelpLinkMLAdd) {
$sUrl .= $oD3Str->unprefixedslashit($this->getLang()->translateString($this->_sHelpLinkMLAdd));
}
$oFS = d3GetOxidDIC()->get(d3filesystem::class);
$aFileName = $oFS->splitFilename($sUrl);
// has no extension
if (false == $aFileName['ext']) {
return $oD3Str->trailingslashit($sUrl);
}
return $sUrl;
}
/**
* return type can't defined, because of unmockable d3_cfg_mod class, use stdClass in test
* @return d3_cfg_mod
*/
public function d3GetSet()
{
/** @var d3_cfg_mod $modcfg */
$modcfg = d3GetOxidDIC()->get($this->_DIC_Instance_Id.'modcfg');
return $modcfg;
}
/**
* exampleItem: array('new' => array(
* 'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
* 'sTranslationId' => 'foo',
* )
*/
public function getNaviItems(): array
{
return $this->_aNaviItems;
}
public function d3GetMenuItemTitle(): string
{
return $this->_sMenuItemTitle;
}
public function d3GetMenuSubItemTitle(): string
{
return $this->_sMenuSubItemTitle;
}
/**
* @param $soxId
*/
protected function _isSetOxid($soxId): bool
{
return isset($soxId) && $soxId && $soxId != "-1";
}
/**
* @param $soxId
*
*/
protected function _d3LoadInOtherLang(Manager $oProfile, $soxId): Manager
{
// load object in other languages
$oOtherLang = $oProfile->getAvailableInLangs();
if (false == isset($oOtherLang[$this->_iEditLang])) {
$oProfile->loadInLang(key($oOtherLang), $soxId);
}
return $oProfile;
}
}

Bestand weergeven

@ -0,0 +1,389 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
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\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager_configurationcheck;
use D3\Usermanager\Application\Model\Actions\d3usermanager_actionlist as ActionListModel;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\Usermanager\Application\Model\Exceptions\d3ActionRequirementAbstract;
use D3\Usermanager\Application\Model\Exceptions\d3ActionRequirementInterface;
use D3\Usermanager\Application\Model\Requirements\d3usermanager_requirementlist as RequirementListModel;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_action as ItemActionController;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanageritem_requ as ItemRequirementController;
use Doctrine\DBAL\Exception as DoctrineException;
use OxidEsales\Eshop\Application\Model\User as ItemModel;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Request;
use OxidEsales\Eshop\Core\UtilsView;
use ReflectionException;
class d3_cfg_usermanageritem_overview extends d3_cfg_mod_main
{
use VariablesTrait;
protected $_sSetModId = 'd3usermanager';
protected $_sModId = 'd3usermanager';
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_overview';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
protected $_blUseOwnOxid = true;
protected $_aNaviItems = [
'new' => [
'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
'sTranslationId' => 'D3_TOOLTIPS_NEWUSERMANAGER',
],
];
protected $_sD3ObjectClass = Manager::class;
protected $_sRequestData;
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws StandardException
*/
public function render(): string
{
try {
d3GetOxidDIC()->set(
d3usermanager_configurationcheck::class.'.args.usermanager',
$this->getManager()
);
/** @var d3usermanager_configurationcheck $confCheck */
$confCheck = d3GetOxidDIC()->get(d3usermanager_configurationcheck::class);
$confCheck->checkThrowingExceptions(d3usermanager_configurationcheck::REQUIREMENTS_AND_ACTIONS);
} catch (d3ActionRequirementInterface $d3ActionRequirement) {
/** @var UtilsView $utilsView */
$utilsView = d3GetOxidDIC()->get('d3ox.usermanager.'.UtilsView::class);
$utilsView->addErrorToDisplay($d3ActionRequirement);
}
return parent::render();
}
public function getActionAdminController(): ItemActionController
{
/** @var ItemActionController $action */
$action = d3GetOxidDIC()->get(ItemActionController::class);
return $action;
}
public function getRequirementAdminController(): ItemRequirementController
{
/** @var ItemRequirementController $requ */
$requ = d3GetOxidDIC()->get(ItemRequirementController::class);
return $requ;
}
/**
* @param $method
* @param $arguments
*
* @return mixed
*/
public function __call($method, $arguments)
{
$oActionView = $this->getActionAdminController();
if (method_exists($oActionView, $method)) {
return call_user_func_array([ $oActionView, $method], $arguments);
}
$oRequView = $this->getRequirementAdminController();
if (method_exists($oRequView, $method)) {
return call_user_func_array([ $oRequView, $method], $arguments);
}
return parent::__call($method, $arguments);
}
public function getRequirementListObject(Manager $oManager): RequirementListModel
{
d3GetOxidDIC()->set(
RequirementListModel::class.'.args.usermanager',
$oManager
);
/** @var RequirementListModel $requList */
$requList = d3GetOxidDIC()->get(RequirementListModel::class);
return $requList;
}
public function getRequirementList(): array
{
/** @var Manager $oManager */
$oManager = $this->getProfile();
$oRequList = $this->getRequirementListObject($oManager);
$oRequList->setRequirements($oManager->getConfiguration()->getRequirementIdList());
return $oRequList->getRequirementList();
}
public function getActionListObject(Manager $oManager): ActionListModel
{
d3GetOxidDIC()->set(
ActionListModel::class.'.args.usermanager',
$oManager
);
d3GetOxidDIC()->set(
ActionListModel::class.'.args.user',
d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.ItemModel::class)
);
/** @var ActionListModel $actionlist */
$actionlist = d3GetOxidDIC()->get(ActionListModel::class);
return $actionlist;
}
public function getActionList(): array
{
/** @var Manager $oManager */
$oManager = $this->getProfile();
$oActionList = $this->getActionListObject($oManager);
$oActionList->setActions($oManager->getConfiguration()->getActionIdList());
return $oActionList->getActionList();
}
public function isEditMode(): bool
{
return false;
}
public function setRequestData(): void
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$this->_sRequestData = $request->getRequestEscapedParameter('sRequestData');
}
protected function _getRequestData(): string
{
return $this->_sRequestData;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws ReflectionException
* @throws StandardException
* @throws DoctrineException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getToFinishedCount(): int
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$requestCount = $request->getRequestEscapedParameter('toFinishedCount');
if ($this->canRequestData(__FUNCTION__)) {
/** @var Manager $oProfile */
$oProfile = $this->getProfile();
return $oProfile->getListGenerator()->getConcernedItemCount();
}
if ($this->canUseRequestData($requestCount)) {
return (int) $requestCount;
}
return 0;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getFinishedCount(): int
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$requestCount = $request->getRequestEscapedParameter('finishedCount');
if ($this->canRequestData(__FUNCTION__)) {
/** @var Manager $oProfile */
$oProfile = $this->getProfile();
return $oProfile->getListGenerator()->getFinishedItemCount();
}
if ($this->canUseRequestData($requestCount)) {
return (int) $requestCount;
}
return 0;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getFinishedMonthCount(): int
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$requestCount = $request->getRequestEscapedParameter('finishedMonthCount');
if ($this->canRequestData(__FUNCTION__)) {
/** @var Manager $oProfile */
$oProfile = $this->getProfile();
return $oProfile->getListGenerator()->getFinishedMonthItemCount();
}
if ($this->canUseRequestData($requestCount)) {
return (int) $requestCount;
}
return 0;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getNotFinishedCount(): int
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$requestCount = $request->getRequestEscapedParameter('notFinishedCount');
if ($this->canRequestData(__FUNCTION__)) {
/** @var Manager $oProfile */
$oProfile = $this->getProfile();
return $oProfile->getListGenerator()->getNotFinishedItemCount();
}
if ($this->canUseRequestData($requestCount)) {
return (int) $requestCount;
}
return 0;
}
/**
* @param $sFunctionName
*
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function canRequestData($sFunctionName): bool
{
if (!$this->getDataOnDemand()) {
return true;
}
return $this->_getRequestData() == $sFunctionName;
}
/**
* @param $requestCount
*
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function canUseRequestData($requestCount): bool
{
return $this->getDataOnDemand()
&& isset($requestCount) && false !== $requestCount;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function getDataOnDemand(): bool
{
return (bool) $this->d3GetSet()->getValue('blCalcStatOnDemand');
}
/**
* @param $sRequestName
* @param $sFunctionName
*/
public function hasRequestedData($sRequestName, $sFunctionName): bool
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$iRequestCount = (string) $request->getRequestEscapedParameter($sRequestName);
return strlen($iRequestCount) || $this->_getRequestData() == $sFunctionName;
}
public function getManager(): Manager
{
/** @var Manager $manager */
$manager = d3GetOxidDIC()->get(Manager::class);
$manager->load($this->getEditObjectId());
return $manager;
}
public function getLang(): Language
{
/** @var Language $lang */
$lang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
return $lang;
}
/**
* @param $sManagerId
*/
public function getManagerTitle(string $sManagerId): string
{
$oManager = $this->getManager();
if ($oManager->load($sManagerId)) {
return $oManager->getFieldData('oxtitle');
}
return $this->getLang()->translateString('D3_USERMANAGER_REQU_OTHERJOB_UNKNOWNJOBID').' "'.$sManagerId.'"';
}
}

Bestand weergeven

@ -0,0 +1,177 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanagerlist as ManagerList;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_requirementException;
use D3\Usermanager\Application\Model\Requirements\d3usermanager_requirement_interface as RequirementModelInterface;
use D3\Usermanager\Application\Model\Requirements\d3usermanager_requirementgrouplist as RequirementGroupListModel;
use D3\Usermanager\Application\Model\Requirements\d3usermanager_requirementlist as RequirementListModel;
use OxidEsales\Eshop\Application\Model\DeliveryList;
use OxidEsales\Eshop\Application\Model\PaymentList;
use OxidEsales\Eshop\Application\Model\CountryList;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Model\ListModel;
class d3_cfg_usermanageritem_requ extends d3_cfg_usermanageritem_settings
{
use VariablesTrait;
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_requ';
protected $_aTransStatus = ['OK', 'ERROR', 'NOT_OK'];
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
public function save(): void
{
// @codeCoverageIgnoreStart
if (!defined('OXID_PHP_UNIT')) {
parent::save();
}
// @codeCoverageIgnoreEnd
$aMissingRequiredValues = [];
/** @var RequirementModelInterface $oRequirement */
foreach ($this->getRequirementList() as $sId => $oRequirement) {
if ($this->getProfile()->getValue($oRequirement->getActiveSwitchParameter())) {
try {
$oRequirement->throwUnvalidConfigurationException();
} catch (d3usermanager_requirementException $e) {
unset($e);
$aMissingRequiredValues[] = $sId;
}
}
}
if ($aMissingRequiredValues !== []) {
$this->addTplParam('missingRequValuesActions', $aMissingRequiredValues);
}
}
public function d3GetConfig(): Config
{
/** @var Config $config */
$config = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Config::class);
return $config;
}
public function getPaymentList(): ListModel
{
/** @var PaymentList $oPaymentList */
$oPaymentList = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.PaymentList::class);
return $this->_getObjectList($oPaymentList, null, 'oxdesc ASC');
}
public function getDeliveryList(): ListModel
{
/** @var DeliveryList $oDeliveryList */
$oDeliveryList = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.DeliveryList::class);
return $this->_getObjectList($oDeliveryList, null, 'oxtitle ASC');
}
public function getCountryList(): ListModel
{
/** @var CountryList $oCountryList */
$oCountryList = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.CountryList::class);
return $this->_getObjectList($oCountryList, null, 'oxtitle ASC');
}
public function getJobList(): ManagerList
{
$sCurrentId = $this->getViewDataElement('edit')->getId();
/** @var $oManagerList ManagerList */
$oManagerList = d3GetOxidDIC()->get(ManagerList::class);
$oManagerList->setCustomSorting('oxsort ASC');
$oManagerList->getList();
$oManagerList->offsetUnset($sCurrentId);
return $oManagerList;
}
public function getLanguageList(): array
{
$oLang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
return $oLang->getLanguageArray();
}
public function getTransStatusList(): array
{
return $this->_aTransStatus;
}
/**
* Sets default values for empty article (currently does nothing), returns
* array with parameters.
*
* @param array $aParams Parameters, to set default values
*/
public function addDefaultValues($aParams): array
{
return $aParams;
}
public function getRequirementGroupList(Manager $oManager): RequirementGroupListModel
{
d3GetOxidDIC()->set(
RequirementGroupListModel::class.'.args.usermanager',
$oManager
);
/** @var RequirementGroupListModel $requGroupModel */
$requGroupModel = d3GetOxidDIC()->get(RequirementGroupListModel::class);
return $requGroupModel;
}
public function getRequirementListObject(Manager $oManager): RequirementListModel
{
d3GetOxidDIC()->set(
RequirementListModel::class.'.args.usermanager',
$oManager
);
/** @var RequirementListModel $requListModel */
$requListModel = d3GetOxidDIC()->get(RequirementListModel::class);
return $requListModel;
}
public function getGroupedRequirementList(): array
{
/** @var Manager $oManager */
$oManager = $this->getProfile();
$oRequList = $this->getRequirementGroupList($oManager);
$oRequList->setGroups($oManager->getConfiguration()->getGroupedRequirementIdList());
return $oRequList->getGroupList();
}
public function getRequirementList(): array
{
/** @var Manager $oManager */
$oManager = $this->getProfile();
$oRequList = $this->getRequirementListObject($oManager);
$oRequList->setRequirements($oManager->getConfiguration()->getRequirementIdList());
return $oRequList->getRequirementList();
}
}

Bestand weergeven

@ -0,0 +1,146 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Model\Exception\wrongModIdException;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\ModCfg\Application\Model\d3database;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Model\ListModel;
use OxidEsales\Eshop\Core\Model\MultiLanguageModel;
use OxidEsales\EshopCommunity\Internal\Container\ContainerFactory;
use Psr\Container\ContainerInterface;
class d3_cfg_usermanageritem_settings extends d3_cfg_mod_main
{
use VariablesTrait;
protected $_sModId = 'd3usermanager';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_blUseOwnOxid = true;
protected $_aNaviItems = [
'new' => [
'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
'sTranslationId' => 'D3_TOOLTIPS_NEWUSERMANAGER',
],
];
protected $_sD3ObjectClass = Manager::class;
/**
* constructor.
*/
public function __construct()
{
d3GetOxidDIC()->getParameter($this->_DIC_Instance_Id . 'modcfgid') === $this->_sModId or
throw oxNew(wrongModIdException::class, $this->_sModId);
parent::__construct();
}
public function getGroupsList(): ListModel
{
/** @var $oGroupsList ListModel */
$oGroupsList = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.ListModel::class);
$oGroupsList->init('oxgroups');
return $this->_getObjectList($oGroupsList, null, 'oxtitle ASC');
}
public function getDIContainer(): ContainerInterface
{
return ContainerFactory::getInstance()->getContainer();
}
/**
* @param null|string $sWhere
* @param null|string $sOrderBy
*
*/
protected function _getObjectList(ListModel $oObjectList, $sWhere = null, $sOrderBy = null): ListModel
{
startProfile(__METHOD__);
/** @var Language $oLang */
$oLang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
/** @var MultiLanguageModel $oObject */
$oObject = $oObjectList->getBaseObject();
if ($oObject->isMultilang()) {
$oObject->setLanguage($oLang->getTplLanguage());
}
$sFieldList = $oObject->getSelectFields();
/** @var d3database $db */
$db = d3GetOxidDIC()->get('d3.usermanager.database');
$qb = $db->getQueryBuilder();
$qb->select($sFieldList)
->from($oObject->getViewName());
if ($sWhere) {
$qb->add('where', $sWhere);
}
if ($sOrderBy) {
$qb->add('orderBy', $sOrderBy);
}
$oObjectList->selectString($qb->getSQL(), $qb->getParameters());
stopProfile(__METHOD__);
return $oObjectList;
}
public function isEditMode(): bool
{
return true;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function getRestrictionMessage(): string
{
/** @var Language $oLang */
$oLang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
/** @var d3_cfg_mod $oModCfg */
$oModCfg = d3GetOxidDIC()->get($this->_DIC_Instance_Id.'modcfg');
return sprintf(
$oLang->translateString('D3_USERMANAGER_ERROR_RESTRICTIONS'),
$oModCfg->getLicenseConfigData('sEditionId', 'unknown')
);
}
}

Bestand weergeven

@ -0,0 +1,139 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
use D3\Usermanager\Application\Model\d3usermanager_conf as ConfModel;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Request;
class d3_cfg_usermanageritem_trigger extends d3_cfg_mod_main
{
use VariablesTrait;
protected $_sSavedId;
protected $_sSetModId = 'd3usermanager';
protected $_sModId = 'd3usermanager';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_items';
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanageritem_trigger';
protected $_blUseOwnOxid = true;
protected $_aNaviItems = [
'new' => [
'sScript' => 'top.oxid.admin.editThis( -1 );return false;',
'sTranslationId' => 'D3_TOOLTIPS_NEWUSERMANAGER',
],
];
protected $_sD3ObjectClass = Manager::class;
/**
* Sets default values for empty article (currently does nothing), returns
* array with parameters.
*
* @param array $aParams Parameters, to set default values
*/
public function addDefaultValues($aParams): array
{
$aParams = parent::addDefaultValues($aParams);
/** @var Manager $oManager */
$oManager = d3GetOxidDIC()->get(Manager::class);
$sFieldLongName = $oManager->d3GetFieldLongName('d3_cronjobid');
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$aRequestParameter = $request->getRequestEscapedParameter("editval");
if (is_array($aRequestParameter) && isset($aRequestParameter[$sFieldLongName])) {
$aRequestParameter[$sFieldLongName] = $this->fixCronjobId($aRequestParameter[$sFieldLongName]);
if (isset($_POST['editval'])) {
$_POST['editval'] = $aRequestParameter;
} elseif (isset($_GET['editval'])) {
$_GET['editval'] = $aRequestParameter;
}
}
return $aParams;
}
/**
* @param $sId
*/
public function fixCronjobId($sId): string|array
{
$aSearch = [
' ',
];
$sReplace = '_';
return str_replace($aSearch, $sReplace, $sId);
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function triggersAreAllowed(): bool
{
if ($this->d3GetSet()->isDemo()) {
return true;
}
return in_array(
true,
array_map([$this->d3GetSet(),'getLicenseConfigData'], [ConfModel::SERIAL_BIT_STANDARD_EDITION])
);
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function scriptsAreAllowed(): bool
{
if ($this->d3GetSet()->isDemo()) {
return true;
}
return in_array(
true,
array_map([$this->d3GetSet(),'getLicenseConfigData'], [ConfModel::SERIAL_BIT_PREMIUM_EDITION])
);
}
}

Bestand weergeven

@ -0,0 +1,36 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\Log\d3_cfg_log;
class d3_cfg_usermanagerlog extends d3_cfg_log
{
protected $_sModId = 'd3usermanager';
public function d3getAdditionalUrlParams(): string
{
$sRet = parent::d3getAdditionalUrlParams();
if ($this->_sModId) {
$sRet .= '&sD3ModId='.$this->_sModId;
}
return $sRet;
}
}

Bestand weergeven

@ -0,0 +1,25 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\Log\d3_cfg_log_list;
class d3_cfg_usermanagerlog_list extends d3_cfg_log_list
{
protected $_sModId = 'd3usermanager';
}

Bestand weergeven

@ -0,0 +1,35 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanagerset_list as setListController;
use D3\Usermanager\Application\Controller\Admin\d3_cfg_usermanagerset_main as setMainController;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_;
class d3_cfg_usermanagerset extends d3_cfg_mod_
{
public function render(): string
{
$this->addTplParam('sListClass', setListController::class);
$this->addTplParam('sMainClass', setMainController::class);
$this->_hasListItems = false;
return parent::render();
}
}

Bestand weergeven

@ -0,0 +1,31 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_licence;
class d3_cfg_usermanagerset_licence extends d3_cfg_mod_licence
{
protected $_sModId = 'd3usermanager';
protected $_hasNewsletterForm = false;
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_settings';
}

Bestand weergeven

@ -0,0 +1,42 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_list;
class d3_cfg_usermanagerset_list extends d3_cfg_mod_list
{
// enables language depended configuration
protected $_blD3ShowLangSwitch = false;
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_settings';
public function render()
{
$sRet = parent::render();
// default page number 1
$this->addTplParam('oxid', 1);
$this->addTplParam("default_edit", "d3_cfg_usermanagerset_main");
$this->addTplParam("updatemain", $this->_blUpdateMain);
return $sRet;
}
}

Bestand weergeven

@ -0,0 +1,220 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main;
use D3\ModCfg\Application\Model\d3str;
use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception;
use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException;
use D3\ModCfg\Application\Model\Exception\wrongModIdException;
use D3\ModCfg\Application\Model\Filegenerator\d3filegeneratorcronsh;
use D3\ModCfg\Application\Model\Shopcompatibility\d3ShopCompatibilityAdapterHandler;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use Doctrine\DBAL\Exception as DoctrineException;
use OxidEsales\Eshop\Application\Model\Shop;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Request;
use OxidEsales\Eshop\Core\ViewConfig;
class d3_cfg_usermanagerset_main extends d3_cfg_mod_main
{
use VariablesTrait;
protected $_sModId = 'd3usermanager';
protected $_sThisTemplate = '@'. Constants::OXID_MODULE_ID .'/admin/d3_cfg_usermanagerset_main';
protected $_blHasDebugSwitch = true;
protected $_sDebugHelpTextIdent = 'D3_USERMANAGER_SET_DEBUG_DESC';
protected $_sMenuItemTitle = 'd3mxusermanager';
protected $_sMenuSubItemTitle = 'd3mxusermanager_settings';
/**
* constructor.
*/
public function __construct()
{
d3GetOxidDIC()->getParameter($this->_DIC_Instance_Id . 'modcfgid') === $this->_sModId or
throw oxNew(wrongModIdException::class, $this->_sModId);
parent::__construct();
}
public function getManager(): Manager
{
/** @var Manager $manager */
$manager = d3GetOxidDIC()->get(Manager::class);
return $manager;
}
/**
* get basic cronjob access password; for cases only, if no password is set
*/
public function getBaseCronPW(): string
{
return $this->getManager()->getBaseCronPW();
}
public function getViewConfig(): ViewConfig
{
// don't use DIC because of circular reference
if ($this->_oViewConf === null) {
$this->_oViewConf = oxNew(ViewConfig::class);
}
return $this->_oViewConf;
}
public function getD3Str(): d3str
{
/** @var d3str $d3str */
$d3str = d3GetOxidDIC()->get(d3str::class);
return $d3str;
}
/**
* @param bool|int $iCronJobId
*/
public function getCronPath($iCronJobId = false): string
{
$sScriptPath = VENDOR_PATH.'bin/d3_usermanager_cron';
$aParameters = [
'task' => 'run',
'shp' => $this->getViewConfig()->getActiveShopId(),
];
if ($iCronJobId !== false) {
$aParameters['cjid'] = $iCronJobId;
}
return 'php ' . $sScriptPath." ".implode(' ', $aParameters);
}
/**
* @throws DatabaseConnectionException
* @throws DoctrineException
*/
public function getAvailableCronjobIds(): array
{
return $this->getManager()->getAvailableCronjobIds();
}
/**
* @param bool|array $aCJID
*/
public function getCJIDDesc(array $aCJID): string
{
/** @var Language $oLang */
$oLang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
if ($aCJID['count'] == 1) {
return sprintf(
$oLang->translateString('D3_USERMANAGER_SET_CRON_JOBID', null, true),
$aCJID['id'],
$aCJID['count']
);
}
return sprintf(
$oLang->translateString('D3_USERMANAGER_SET_CRON_JOBSID', null, true),
$aCJID['id'],
$aCJID['count']
);
}
/**
* @param bool|int $iCronJobId
*/
public function getCronTimestampVarName($iCronJobId = false): string
{
$sVarName = "sCronExecTimestamp";
if ($iCronJobId !== false) {
$sVarName .= $iCronJobId;
}
return $sVarName;
}
public function getFileGeneratorCronSh(): d3filegeneratorcronsh
{
/** @var d3filegeneratorcronsh $filegenerator */
$filegenerator = d3GetOxidDIC()->get(d3filegeneratorcronsh::class);
return $filegenerator;
}
public function getCronProviderList(): array
{
return $this->getFileGeneratorCronSh()->getContentList();
}
public function getCompatibilityAdapterHandler(): d3ShopCompatibilityAdapterHandler
{
/** @var d3ShopCompatibilityAdapterHandler $compatiblityHandler */
$compatiblityHandler = d3GetOxidDIC()->get(d3ShopCompatibilityAdapterHandler::class);
return $compatiblityHandler;
}
public function d3GetActiveShop(): Shop
{
/** @var Config $config */
$config = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Config::class);
return $config->getActiveShop();
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function generateCronShFile(): void
{
$sScriptPath = VENDOR_PATH.'bin/d3_usermanager_cron';
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$sCronId = $request->getRequestEscapedParameter('cronid');
$oShop = $this->d3GetActiveShop();
$aParameters = [
0 => 'run',
1 => $oShop->getId(),
2 => $sCronId,
];
$oD3ShGenerator = $this->getFileGeneratorCronSh();
$oD3ShGenerator->setContentType($request->getRequestEscapedParameter('crontype'));
$oD3ShGenerator->setScriptPath($sScriptPath);
$oD3ShGenerator->setSortedParameterList($aParameters);
$oD3ShGenerator->startDownload('d3usermanager_'.$oShop->getId()."_".$sCronId.".sh");
}
}

Bestand weergeven

@ -0,0 +1,490 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller\Admin;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
use D3\ModCfg\Application\Model\d3filesystem;
use D3\ModCfg\Application\Model\d3str;
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\Exception\wrongModIdException;
use D3\ModCfg\Application\Model\Log\d3log;
use D3\Usermanager\Application\Model\Constants;
use D3\Usermanager\Application\Model\d3usermanager_configurationcheck;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_execute as ManagerExecuteModel;
use D3\Usermanager\Application\Model\d3usermanager_touserassignment as ToItemAssignmentModel;
use D3\Usermanager\Application\Model\d3usermanagerlist as ManagerListModel;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\Usermanager\Application\Model\Exceptions\d3ActionRequirementInterface;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_templaterendererExceptionInterface;
use Doctrine\DBAL\Exception as DoctrineException;
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
use OxidEsales\Eshop\Application\Model\User as ItemModel;
use OxidEsales\Eshop\Core\Config;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Field;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Model\BaseModel;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\Request;
use OxidEsales\Eshop\Core\Session;
use OxidEsales\Eshop\Core\UtilsView;
use OxidEsales\Twig\Resolver\TemplateChain\TemplateType\NonTemplateFilenameException;
use ReflectionException;
class d3_usermanager_jobs extends AdminDetailsController
{
use VariablesTrait;
private string $_sModId = 'd3usermanager';
/** @var ManagerListModel */
protected $_aJobList;
protected $_sHelpLinkMLAdd;
public $_sThisTemplate = '@' . Constants::OXID_MODULE_ID . '/admin/d3_usermanager_jobs';
/**
* constructor.
*/
public function __construct()
{
// prevent the use of the global currency setting instead of the order setting
unset($_GET['cur']);
d3GetOxidDIC()->getParameter($this->_DIC_Instance_Id . 'modcfgid') === $this->_sModId or
throw oxNew(wrongModIdException::class, $this->_sModId);
parent::__construct();
}
public function getItemObject(): ItemModel
{
/** @var ItemModel $item */
$item = d3GetOxidDIC()->get('d3ox.usermanager.'.ItemModel::class);
return $item;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function render(): string
{
$tpl = parent::render();
$soxId = $this->getEditObjectId();
$this->addTplParam("oxid", $soxId);
if ($soxId != "-1") {
$oItem = $this->getItemObject();
$oItem->load($soxId);
$this->addTplParam("edit", $oItem);
}
/** @var Session $session */
$session = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Session::class);
$sJobFolder = $session->getVariable('d3FolderSelect');
$this->addTplParam("jobfolder", $sJobFolder);
$this->_aJobList = $this->_d3GetManuallyManagerJobs($sJobFolder);
return $tpl;
}
public function d3GetSession(): Session
{
/** @var Session $session */
$session = d3GetOxidDIC()->get('d3ox.usermanager.'.Session::class);
return $session;
}
public function changeFolder(): void
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$this->d3GetSession()->setVariable(
'd3FolderSelect',
$request->getRequestEscapedParameter('jobfolder')
);
}
public function getManagerList(): ManagerListModel
{
/** @var ManagerListModel $managerList */
$managerList = d3GetOxidDIC()->get(ManagerListModel::class);
return $managerList;
}
public function d3GetManagerJobs(): ManagerListModel
{
$oManagerList = $this->getManagerList();
$oManagerList->getList();
return $oManagerList;
}
/**
* @param $sFolderId
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
protected function _d3GetManuallyManagerJobs($sFolderId): ManagerListModel
{
try {
$oManagerList = $this->getManagerList();
$oList = $oManagerList->d3GetManuallyManagerJobsByFolder($sFolderId);
/** @var Manager $oManager */
foreach ($oList as $sId => $oManager) {
$oManagerExecute = $this->getManagerExecute($oManager);
if (!$oManager->getValue('sManuallyExecMeetCondition')) {
continue;
}
if (false != $oManagerExecute->userMeetsConditions($this->getEditObjectId())) {
continue;
}
$oList->offsetUnset($sId);
}
return $oList;
} catch (d3ActionRequirementInterface $d3ActionRequirement) {
/** @var UtilsView $utilsView */
$utilsView = d3GetOxidDIC()->get('d3ox.usermanager.'.UtilsView::class);
$utilsView->addErrorToDisplay($d3ActionRequirement);
}
/** @var ManagerListModel $managerList */
$managerList = d3GetOxidDIC()->get(ManagerListModel::class);
return $managerList;
}
public function d3GetJobList(): array
{
return $this->_aJobList->getArray();
}
public function getManager(): Manager
{
/** @var Manager $manager */
$manager = d3GetOxidDIC()->get(Manager::class);
return $manager;
}
public function getManagerExecute(Manager $oManager): ManagerExecuteModel
{
d3GetOxidDIC()->set(
ManagerExecuteModel::class.'.args.usermanager',
$oManager
);
/** @var ManagerExecuteModel $managerExecute */
$managerExecute = d3GetOxidDIC()->get(ManagerExecuteModel::class);
return $managerExecute;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function d3execusermanager(): void
{
try {
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id . Request::class);
$oManager = $this->getManager();
$oManager->load($request->getRequestEscapedParameter('usermanagerid'));
$oManagerExec = $this->getManagerExecute($oManager);
$this->checkForConfigurationException($oManager);
if (false == $oManager->getValue('sManuallyExecMeetCondition') ||
$oManagerExec->userMeetsConditions($this->getEditObjectId())
) {
$oManagerExec->exec4user($this->getEditObjectId());
$oManagerExec->finishJobExecution();
}
} catch (d3ActionRequirementInterface | d3usermanager_templaterendererExceptionInterface $oEx) {
// @codeCoverageIgnoreStart
if (!defined('OXID_PHP_UNIT')) {
$logger = Registry::getLogger();
$logger->error($oEx);
}
// @codeCoverageIgnoreEnd
d3GetOxidDIC()->get('d3.usermanager.log')->alert(
self::class,
__FUNCTION__,
__LINE__,
"execution error",
$oEx->getMessage()
);
/** @var UtilsView $utilsView */
$utilsView = d3GetOxidDIC()->get('d3ox.usermanager.'.UtilsView::class);
$utilsView->addErrorToDisplay($oEx);
} finally {
$oConfig = d3GetOxidDIC()->get('d3ox.usermanager.'.Config::class);
$oConfig->setAdminMode(true);
}
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DoctrineException
* @throws ReflectionException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function d3ExecChangedUserManager(): void
{
try {
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$oManager = $this->getManager();
$oManager->load($request->getRequestEscapedParameter('usermanagerid'));
$oManager->setEditedValues($request->getRequestEscapedParameter('aContent'));
$oManagerExec = $this->getManagerExecute($oManager);
$this->checkForConfigurationException($oManager);
if (false == $oManager->getValue('sManuallyExecMeetCondition') ||
$oManagerExec->userMeetsConditions($this->getEditObjectId())
) {
$oManagerExec->exec4user($this->getEditObjectId());
$oManagerExec->finishJobExecution();
}
} catch (d3ActionRequirementInterface | d3usermanager_templaterendererExceptionInterface $e) {
// @codeCoverageIgnoreStart
if (!defined('OXID_PHP_UNIT')) {
$logger = Registry::getLogger();
$logger->error($e);
}
// @codeCoverageIgnoreEnd
d3GetOxidDIC()->get('d3.usermanager.log')->alert(
self::class,
__FUNCTION__,
__LINE__,
"execution error",
$e->getMessage()
);
/** @var UtilsView $utilsView */
$utilsView = d3GetOxidDIC()->get('d3ox.usermanager.'.UtilsView::class);
$utilsView->addErrorToDisplay($e);
} finally {
$oConfig = d3GetOxidDIC()->get('d3ox.usermanager.'.Config::class);
$oConfig->setAdminMode(true);
}
}
public function getUserManagerAssignment(Manager $oManager): ToItemAssignmentModel
{
d3GetOxidDIC()->set(
ToItemAssignmentModel::class.'.args.usermanager',
$oManager
);
/** @var ToItemAssignmentModel $managerAssignment */
$managerAssignment = d3GetOxidDIC()->get(ToItemAssignmentModel::class);
return $managerAssignment;
}
/**
* @throws DoctrineException
* @throws d3ParameterNotFoundException
*/
public function d3resetUserManagerAssignment(): void
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$oManager = $this->getManager();
$oAssignment = $this->getUserManagerAssignment($oManager);
$oAssignment->resetAssignment(
$request->getRequestEscapedParameter('usermanagerid'),
$this->getEditObjectId()
);
}
/**
* @return mixed
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
*/
public function getFolderList()
{
$oManager = $this->getManager();
return $oManager->d3getSelectableFolderList();
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
public function execChangedContents(): void
{
try {
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$sItemId = $this->getEditObjectId();
$oManager = $this->getManager();
$oManager->load($request->getRequestEscapedParameter('usermanagerid'));
// check configuration exceptions
$this->checkForConfigurationException($oManager);
$contents = $oManager->getEditableContent($sItemId);
$this->addTplParam('aMailContent', $contents);
$field = oxNew(Field::class);
$field->setValue($contents['html']);
$object = oxNew(BaseModel::class);
$object->__set(
'aContent[mail][html]',
$field
);
$this->addTplParam("htmleditor", $this->generateTextEditor("95%", 180, $object, "aContent[mail][html]", "list.tpl.css"));
$this->addTplParam('sAction', __FUNCTION__);
$this->addTplParam('oManager', $oManager);
} catch (d3ActionRequirementInterface | d3usermanager_templaterendererExceptionInterface | NonTemplateFilenameException $oEx) {
// @codeCoverageIgnoreStart
if (! defined('OXID_PHP_UNIT')) {
$logger = Registry::getLogger();
$logger->error($oEx->getMessage());
}
// @codeCoverageIgnoreEnd
$this->getManager()->d3getLog()->log(d3log::ALERT, self::class, __FUNCTION__, __LINE__, "stop execution because configuration error", $oEx->getMessage());
/** @var UtilsView $utilsView */
$utilsView = d3GetOxidDIC()->get('d3ox.usermanager.' . UtilsView::class);
$utilsView->addErrorToDisplay($oEx);
} finally {
$oConfig = d3GetOxidDIC()->get('d3ox.usermanager.'.Config::class);
$oConfig->setAdminMode(true);
}
}
public function getUserMessages(): array
{
return [];
}
public function getLang(): Language
{
/** @var Language $language */
$language = d3GetOxidDIC()->get('d3ox.usermanager.'.Language::class);
return $language;
}
public function getHelpURL(): string
{
$sUrl = $this->d3GetSet()->getHelpURL();
/** @var d3str $oD3Str */
$oD3Str = d3GetOxidDIC()->get(d3str::class);
if ($this->_sHelpLinkMLAdd) {
$sUrl .= $oD3Str->unprefixedslashit($this->getLang()->translateString($this->_sHelpLinkMLAdd));
}
/** @var d3filesystem $oFS */
$oFS = d3GetOxidDIC()->get(d3filesystem::class);
$aFileName = $oFS->splitFilename($sUrl);
// has no extension
if (false == $aFileName['ext']) {
return $oD3Str->trailingslashit($sUrl);
}
return $sUrl;
}
/**
* return type can't defined, because of unmockable d3_cfg_mod class, use stdClass in test
* @return d3_cfg_mod
*/
public function d3GetSet()
{
/** @var d3_cfg_mod $modCfg */
$modCfg = d3GetOxidDIC()->get('d3.usermanager.modcfg');
return $modCfg;
}
public function getLink(): string
{
return '';
}
/**
* @throws d3ActionRequirementInterface
*/
protected function checkForConfigurationException(Manager $oManager): void
{
d3GetOxidDIC()->set(d3usermanager_configurationcheck::class.'.args.usermanager', $oManager);
/** @var d3usermanager_configurationcheck $confCheck */
$confCheck = d3GetOxidDIC()->get(d3usermanager_configurationcheck::class);
$confCheck->checkThrowingExceptions($oManager->getValue('sManuallyExecMeetCondition') ?
d3usermanager_configurationcheck::REQUIREMENTS_AND_ACTIONS :
d3usermanager_configurationcheck::ACTIONS_ONLY);
}
}

Bestand weergeven

@ -0,0 +1,360 @@
<?php
/**
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* https://www.d3data.de
*
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
* @link https://www.oxidmodule.com
*/
declare(strict_types=1);
namespace D3\Usermanager\Application\Controller;
use Assert\Assert;
use Assert\InvalidArgumentException;
use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod;
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\Exception\wrongModIdException;
use D3\ModCfg\Application\Model\Log\d3LogInterface;
use D3\Usermanager\Application\Model\d3usermanager as Manager;
use D3\Usermanager\Application\Model\d3usermanager_execute as ManagerExecuteModel;
use D3\Usermanager\Application\Model\d3usermanager_vars as VariablesTrait;
use D3\Usermanager\Application\Model\d3usermanagerlist as ManagerList;
use D3\Usermanager\Application\Model\Exceptions\d3ActionRequirementAbstract;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_actionException;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_cronUnavailableException as cronUnavailableException;
use D3\Usermanager\Application\Model\Exceptions\d3usermanager_requirementException;
use DateTime;
use Doctrine\DBAL\Exception as DoctrineException;
use OxidEsales\Eshop\Core\Base;
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
use OxidEsales\Eshop\Core\Exception\DatabaseException;
use OxidEsales\Eshop\Core\Exception\StandardException;
use OxidEsales\Eshop\Core\Language;
use OxidEsales\Eshop\Core\Registry;
use OxidEsales\Eshop\Core\Request;
use RuntimeException;
class d3usermanager_response extends Base
{
use VariablesTrait;
private string $_sModId = 'd3usermanager';
/**
* constructor.
*/
public function __construct()
{
$this->isCLI() or throw new RuntimeException('controller must called via command line interface');
d3GetOxidDIC()->getParameter($this->_DIC_Instance_Id . 'modcfgid') === $this->_sModId or
throw oxNew(wrongModIdException::class, $this->_sModId);
parent::__construct();
}
public function isCLI(): bool
{
return str_starts_with(PHP_SAPI, 'cli');
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DatabaseException
* @throws DoctrineException
* @throws StandardException
* @throws cronUnavailableException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws d3usermanager_actionException
* @throws d3usermanager_requirementException
*/
public function initCli(): void
{
startProfile(__METHOD__);
$this->_startExecution();
stopProfile(__METHOD__);
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DatabaseException
* @throws DoctrineException
* @throws StandardException
* @throws cronUnavailableException
* @throws d3ActionRequirementAbstract
* @throws d3ParameterNotFoundException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws d3usermanager_actionException
* @throws d3usermanager_requirementException
*/
protected function _startExecution()
{
startProfile(__METHOD__);
$iStartTime = microtime(true);
/** @var d3LogInterface $oLog */
$oLog = d3GetOxidDIC()->get($this->_DIC_Instance_Id.'log');
$oLog->info(self::class, __FUNCTION__, __LINE__, "start cron", "");
$this->_checkUnavailableCronjob();
$this->_getSet()->setValue($this->_getCronTimestampVarName(), (new DateTime())->format('Y-m-d H:i:s'));
$this->_getSet()->saveNoLicenseRefresh();
$this->_startJobs();
$iExecTime = microtime(true) - $iStartTime;
$oLog->info(
self::class,
__FUNCTION__,
__LINE__,
"end cron",
'execution time: '.$iExecTime." sec"
);
stopProfile(__METHOD__);
}
public function getManagerList(): ManagerList
{
/** @var ManagerList $managerList */
$managerList = d3GetOxidDIC()->get(ManagerList::class);
return $managerList;
}
public function getManagerExecute(Manager $oManager): ManagerExecuteModel
{
d3GetOxidDIC()->set(
ManagerExecuteModel::class.'.args.usermanager',
$oManager
);
/** @var ManagerExecuteModel $manager_execute */
$manager_execute = d3GetOxidDIC()->get(ManagerExecuteModel::class);
return $manager_execute;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws DatabaseException
* @throws StandardException
* @throws d3ParameterNotFoundException
* @throws d3ActionRequirementAbstract
* @throws d3usermanager_actionException
* @throws d3usermanager_requirementException
* @throws DoctrineException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
*/
protected function _startJobs()
{
startProfile(__METHOD__);
$oManagerList = $this->getManagerList();
$oManagerList->setCronJobId($this->_getCronJobIdParameter());
$oManagerList->setCustomSorting('oxsort ASC');
$oManagerList->getList();
$oHandleManager = $this->getManager();
$oHandleManagerExec = $this->getManagerExecute($oHandleManager);
// disable admin mode for using active check
$blOldAdminMode = self::$_blIsAdmin;
self::$_blIsAdmin = false;
/** @var d3LogInterface $oLog */
$oLog = d3GetOxidDIC()->get($this->_DIC_Instance_Id.'log');
$oLog->info(
self::class,
__FUNCTION__,
__LINE__,
'manager count',
$oManagerList->count()
);
/** @var $oManager Manager */
foreach ($oManagerList->getList() as $oManager) {
$oHandleManager = $this->getManager();
$oHandleManager->setLanguage(Registry::getLang()->getTplLanguage());
$oHandleManager->load($oManager->getId());
$oHandleManagerExec->setManager($oHandleManager);
self::$_blIsAdmin = $blOldAdminMode;
$oHandleManagerExec->startJobExecution();
self::$_blIsAdmin = false;
}
self::$_blIsAdmin = $blOldAdminMode;
$oHandleManagerExec->finishJobExecution();
stopProfile(__METHOD__);
}
public function getManager(): Manager
{
/** @var Manager $manager */
$manager = d3GetOxidDIC()->get(Manager::class);
return $manager;
}
protected function _checkAccessKey(): bool
{
$sSetCronPassword = $this->_getSet()->getValue('sCronPassword');
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$sGetAccessKey = $request->getRequestEscapedParameter("key");
$sRegisteredAccessKey = $sSetCronPassword ?: $this->getManager()->getBaseCronPW();
return $this->hasValidAccessKey($sRegisteredAccessKey, $sGetAccessKey);
}
/**
* return type can't defined, because of unmockable d3_cfg_mod class, use stdClass in test
* @return d3_cfg_mod
*/
protected function _getSet()
{
/** @var d3_cfg_mod $modcfg */
$modcfg = d3GetOxidDIC()->get($this->_DIC_Instance_Id.'modcfg');
return $modcfg;
}
public function isBrowserCall(): bool
{
return (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']) ||
(isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']);
}
/**
* @param $sRegisteredAccessKey
* @param $sGetAccessKey
*/
protected function hasValidAccessKey($sRegisteredAccessKey, $sGetAccessKey): bool
{
if (false == $this->isBrowserCall()) {
return true;
}
return $sRegisteredAccessKey == $sGetAccessKey;
}
/**
* @throws DatabaseConnectionException
* @throws DatabaseErrorException
* @throws StandardException
* @throws d3ShopCompatibilityAdapterException
* @throws d3_cfg_mod_exception
* @throws cronUnavailableException
*/
protected function _checkUnavailableCronjob()
{
$this->_getSet()->isActive() or throw $this->getCronUnavailableException(
$this->getLang()->translateString('D3_USERMANAGER_EXC_CRON_MODULEDISABLED')
);
$this->_checkAccessKey() or throw $this->getCronUnavailableException(
$this->getLang()->translateString('D3_USERMANAGER_EXC_CRON_WRONGPASSWORD')
);
$this->_getSet()->getValue('blCronActive') or throw $this->getCronUnavailableException(
$this->getLang()->translateString('D3_USERMANAGER_EXC_CRON_UNAVAILABLE')
);
}
/**
* @param $sMessage
*/
public function getCronUnavailableException($sMessage): cronUnavailableException
{
return oxNew(cronUnavailableException::class, $sMessage);
}
/**
* @return string|int
*/
protected function _getCronJobIdParameter()
{
/** @var Request $request */
$request = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Request::class);
$iCjId = $request->getRequestEscapedParameter('cjid');
try {
Assert::that( $iCjId )->notBlank();
} catch (InvalidArgumentException) {
return 0;
}
return $iCjId;
}
protected function _getCronTimestampVarName(): string
{
return "sCronExecTimestamp".$this->_getCronJobIdParameter();
}
public function getLastExecDate(): string
{
return (string) $this->_getSet()->getValue($this->_getCronTimestampVarName());
}
/**
* @throws DatabaseConnectionException
* @throws DoctrineException
*/
public function getLastExecDateInfo(): array
{
$sCronJobId = $this->_getCronJobIdParameter();
$taskCount = current(
array_filter(
$this->getManager()->getAvailableCronjobIds(),
fn ($entry): bool => $entry['id'] == $sCronJobId
)
)['count'];
return [
sprintf(
$this->getLang()->translateString('D3_GENERAL_USERMANAGER_TASKCOUNT_CRONID'),
$sCronJobId,
$taskCount
),
sprintf(
$this->getLang()->translateString('D3_GENERAL_USERMANAGER_LASTEXEC_CRONID'),
$sCronJobId,
$this->getLastExecDate()
),
];
}
public function getLang(): Language
{
/** @var Language $lang */
$lang = d3GetOxidDIC()->get($this->_DIC_OxInstance_Id.Language::class);
return $lang;
}
}

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand weergeven

@ -0,0 +1,2 @@
<?php ?><?php /** This Software is the property of D³ Data Development and is protected by copyright law - it is NOT Freeware. Any unauthorized use of this software without a valid license key is a violation of the license agreement and will be prosecuted by civil and criminal law. Inhaber: Thomas Dartsch Alle Rechte vorbehalten @package Kundenmanager @version 6.0.1.0 SourceGuardian (03.09.2024) @author Daniel Seifert support@shopmodule.com @copyright (C) 2024, D3 Data Development @see https://www.d3data.de */ ?><?php
if(!function_exists('sg_load')){$__v=phpversion();$__x=explode('.',$__v);$__v2=$__x[0].'.'.(int)$__x[1];$__u=strtolower(substr(php_uname(),0,3));$__ts=(@constant('PHP_ZTS') || @constant('ZEND_THREAD_SAFE')?'ts':'');$__f=$__f0='ixed.'.$__v2.$__ts.'.'.$__u;$__ff=$__ff0='ixed.'.$__v2.'.'.(int)$__x[2].$__ts.'.'.$__u;$__ed=@ini_get('extension_dir');$__e=$__e0=@realpath($__ed);$__dl=function_exists('dl') && function_exists('file_exists') && @ini_get('enable_dl') && !@ini_get('safe_mode');if($__dl && $__e && version_compare($__v,'5.2.5','<') && function_exists('getcwd') && function_exists('dirname')){$__d=$__d0=getcwd();if(@$__d[1]==':') {$__d=str_replace('\\','/',substr($__d,2));$__e=str_replace('\\','/',substr($__e,2));}$__e.=($__h=str_repeat('/..',substr_count($__e,'/')));$__f='/ixed/'.$__f0;$__ff='/ixed/'.$__ff0;while(!file_exists($__e.$__d.$__ff) && !file_exists($__e.$__d.$__f) && strlen($__d)>1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="<html><body>PHP script '".__FILE__."' is protected by <a href=\"https://www.sourceguardian.com/\">SourceGuardian</a> and requires a SourceGuardian loader '".$__f0."' to be installed.<br><br>1) <a href=\"".$__ixedurl."\" target=\"_blank\">Click here</a> to download the required '".$__f0."' loader from the SourceGuardian site<br>2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="<br>3) Edit ".$__ini." and add 'extension=".$__f0."' directive<br>4) Restart the web server";}}$__msg.="</body></html>";}die($__msg);exit();}}return sg_load('7A3737B36579762CAAQAAAAhAAAABKgAAACABAAAAAAAAAD/lnd1q3MloFGlxOjouWOhvr/HATU1gH4KlevWhjzEcJsMwWOztlUEhMrpOIGH+cZ5tUo8k14cK149cWz8yysD8+nDTWODJmZ+BokP1s4RKwLeo8/WXEk2LPvWsxd1sAFSsKgH636elTZjEUga411VCq2XWTFSj8wrufH6hBKNARMAcq6kPWwlj0gyJ/ACc93LECQ/W7ONiROBLwJkOqn5wqHO6olX2N+yCAAAAJABAABWj3kRLqh2NYmEv9poWcgKnCjaTbZ+1zP0lMAGXxaK2ozPsBoWKSDDDco4N3ULKUEn18yA4xqwovfnzNBQBqcOUMn1Cd0WLibUaitjyQuY1gboUaHoM0csn3jhaiFWbJu0EWGF+QdjtR76trUGeP2JztnbYLg+1BpXz2L0EQ0E/OeDSz073xyalmcv24CafgjL+LLIOyULel2Jl9a7pEXATBbTRbq92+r6QcVTVLe5M0IKntNKbvkkKDmeEK0Cp84ghcl80hS6Tngw5wDD+tVHk1kG97It3fKdIBKB9llcB66/QLI6YXorExG/DoZpVLuj11NeARo/W7a5gX7Hj4rZSFCWKHmwflfMV2AoWiwotpaKlIudBmLYdHqJAfF17cO8IsvbJSZyCT8nhJsyDiVaD3CjqrIX7G+zYWHfluMBTcIoHKjTF1fm77xFux3u/KRyavM05fEHSfSNnl3qJgPgWHRD6cqJQZT7EzqiRKtaWXwkEc7A+h2j0Dz/Opi0pP7038zR/IXMq9ZMwjpU+ZFGUQAAAIABAADwoOhh4HDHEdybtsHi8N2+g1BtRMFU2stNj5hr5cH4DdyqvaBCeRSvdUSRYAvngZe4gExsNK+AT69Ceakc8bKUuvx4+OjvpbU6ggRkyYaQ9FHbTwv3tWirR5+IwI+qM0FqbeOah6TlXNpxggR8pWgn/rgAS3s/AscJ2sqRpKhLU3dX3wwGbNdC3oD+sJxOkaeGWIQWMzDpdqlm4oAvBiQiWDKRaMBQ5Ewdsqt5CBPu0Xq9VeZRwwAxsFmFvRekrNePMImgqgQcI9u0wZq/btdB18OyMm4clI47oJbLe5syZTkYhKr0mwyNi7sc5wKRyRscf9srJPPoLASQJMb82wGhk7Zg5MkbVZmAyVkc5vVFjbVVZyldKAMqyD6bDB3iUSLlzRlO5IQdjo8Z04bRYy0hEMg5bj+hPxyPHZJCiZj36N9HohWfFiovF16U9O8SWWnzkPtXJegLb0naKdl/s3mbVONVCF+/5kORrjeGkEzf8IYTfTN3v6WKTU/SXO75DUNSAAAAgAEAALYm9xqXaDny7QhfaPRI78f+1sY19bKP2UQ52urtcB3HsCOGUO5qrH6JIS8Kr0rq71jHtOWetzGhCszMa/H4NEsBZXpKUTvkl1xjZhfBWSDf3IiLofHZXWVl88KMZFbnObHWNhCApX7cPWCm4VjmyzRwFyKtxg5xmdvw+ImYlC4R/Ze7Y1oCKOiWBN5OqMt5brfoUdcNF+YIwsBvndJIxK+7m7XXnRdmnLLJmA1nmkPrBl8e+wKzwlVP5H+LI4YVOD0q+HPehOze/ZLOutO6CKk/Dc96XWuG05IASvjyy0VZX3wxdxmR5iC0yJfoHFRbUAyVXKMIBjz1GT7PntgRGK1k0V2RolzspTfDBekmxad2fqgDiI4inYGLAiF23iB3OwaC6A+VUf2PXtDkAEf7jBHkfv+6QPtU9Y3P+Veba/YDnBafpfatHb6yoMNGqiWz+vYtzDCKt3DmJ5wvzx8aTLOV9fNGs320ucHt+l2TMSjENK2Dx8eALfq3PokXPeF4PAAAAAA=');

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand weergeven

@ -0,0 +1,2 @@
<?php ?><?php /** This Software is the property of D³ Data Development and is protected by copyright law - it is NOT Freeware. Any unauthorized use of this software without a valid license key is a violation of the license agreement and will be prosecuted by civil and criminal law. Inhaber: Thomas Dartsch Alle Rechte vorbehalten @package Kundenmanager @version 6.0.1.0 SourceGuardian (03.09.2024) @author Daniel Seifert support@shopmodule.com @copyright (C) 2024, D3 Data Development @see https://www.d3data.de */ ?><?php
if(!function_exists('sg_load')){$__v=phpversion();$__x=explode('.',$__v);$__v2=$__x[0].'.'.(int)$__x[1];$__u=strtolower(substr(php_uname(),0,3));$__ts=(@constant('PHP_ZTS') || @constant('ZEND_THREAD_SAFE')?'ts':'');$__f=$__f0='ixed.'.$__v2.$__ts.'.'.$__u;$__ff=$__ff0='ixed.'.$__v2.'.'.(int)$__x[2].$__ts.'.'.$__u;$__ed=@ini_get('extension_dir');$__e=$__e0=@realpath($__ed);$__dl=function_exists('dl') && function_exists('file_exists') && @ini_get('enable_dl') && !@ini_get('safe_mode');if($__dl && $__e && version_compare($__v,'5.2.5','<') && function_exists('getcwd') && function_exists('dirname')){$__d=$__d0=getcwd();if(@$__d[1]==':') {$__d=str_replace('\\','/',substr($__d,2));$__e=str_replace('\\','/',substr($__e,2));}$__e.=($__h=str_repeat('/..',substr_count($__e,'/')));$__f='/ixed/'.$__f0;$__ff='/ixed/'.$__ff0;while(!file_exists($__e.$__d.$__ff) && !file_exists($__e.$__d.$__f) && strlen($__d)>1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="<html><body>PHP script '".__FILE__."' is protected by <a href=\"https://www.sourceguardian.com/\">SourceGuardian</a> and requires a SourceGuardian loader '".$__f0."' to be installed.<br><br>1) <a href=\"".$__ixedurl."\" target=\"_blank\">Click here</a> to download the required '".$__f0."' loader from the SourceGuardian site<br>2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="<br>3) Edit ".$__ini." and add 'extension=".$__f0."' directive<br>4) Restart the web server";}}$__msg.="</body></html>";}die($__msg);exit();}}return sg_load('7A3737B36579762CAAQAAAAhAAAABKgAAACABAAAAAAAAAD/1ryfsbE1ODND2EK8yfAjQHtgv0JBlDgaACyUam3z6MlQdtaSTS0vKAO2D8KGmLri0qirQbzM5oGb75PhEYBvJ35e4XcJ2FNrUD2+3MjYTNqUzfZyTIVbtkaLCQdH/+S/uNSrEtpWq1YMWHRnJjhuZCuUONdPCuxNDWy+iup1nwTc9fTj2IUtdG58skMdRGpJBXhDiBX8y1pcK717NpQwUga2WSrvCZJCCAAAANgBAAAg1occpIoIkFwNhul4fl3PSYMefTLXiY6moXo8yxUpOoM3bUZ+0/kyZsYCQhVXjdegZIvpGY6IIAx/mZHO2K3JjymX/Z/ZvSwGvqjdmOpBdV7twYQ2r9HUiyGsNd1K55x578E36rYbikw/64JAhTu6eBtQUcWqFnDJkc8Quz87lhweaAG1bl1E5iwpKryt7Zlu0HLxTck56KR7QudS6qLOmpuYOaK5lwlC7K4QUnZgCGnfIQikGcuHtS73dh53Js9IW+csomI2Y1aIZRL/M8m8YAMWHCT9BFU0eb1e8qDFu90/mTCWSEHTyZ69B8SA08pW/T5Yud8IfhTPChs6eZ9PiipLKK9cMjSI0RVW/zVV9TB2vScgsHhPdpWbnYHqXpHCmXWTONNlFscmwbjyez2zolDWXk2ilSu1vCifQsXYeqA33K8gPg6iA8lDmz7zg1dEDISefdeDvc4ASrHsL4uFQfjOTKwPamDUe/jG5aaNmUPpZTsiZ4aqR39Npa8vuMjQq+Mq163b433ZbCifDoTyEurpxLOyFjFRK+9Ux4vRVYUBCXgSFtoskFNVSaysmKttYTOnCYyN9Bn6QT/8+A5XwqK7C0xUnDXWwwjQ8oq7oK4DsNL44lVnUQAAANABAACFpUbw/GXNDTzz39e944Bj/W3Eb1hMXCd2b9Ed2von/38Eqax5OvL+cck3a0eg7NKom3v/pMURQEGdwnql27tzkQnCmZQO7AeCzgZJEUnUKkv/iKD0NGy/Hs+uZc7ghwA6hQ6ckDmE4tYUyOorq7qzm3FJTfOyV8RB5Drezs7y+ZunGtSslRbNIt047rthg76LwHH65hdtEklgKAMv05Oh5b344RwrvPzzTmKEq/A7wBykc90F5Vu9mjOyMTGEcY8N6ESw8RLMs3gRxpbwphwFkgAKhw0JlYLHn9PSaJg0Nbo+M2x1hUfCJ373R8ZiRe85hqVInk+A0WhVf7e5SmkGSlVCUSRDa1vDxEalrsxcavps2R/+Dynlh3ZxvR3/u53ZfNsBeRhYE/N+YlpJn3IY9O+lXgittlw5sQYqDjKgsa0HcZp3z5HDf9q2FYXGJm0ScmGASL94mRHzWRYCyDCJ49DEz7uxKFHu8oebK6xHlxHvTg+L4W1LnWvPlBwEa4SnZoSpAFIC1ZJriiVb8KQDmm+K54cVsG3n97rveXH5LZGAI4WOk5E0MExmuDFlACsZ03Wnvo4IjhxsNEQrPJtvhZzNxxrhFDF+GtfC48V7zlIAAADQAQAAHWZIAdmqV007iMdmT6Alz5IXMN5LnPRfk2FFMqZ9cWOCtI/4wqk5W9qorV6F2SFNeyMUknOhZCGo0Qw1h4s1nOeEP3tNHZT6rZ9joD3WuFi3D3uRfiypzqRAJudP38Cg0XcBiGhzZLThx7bTlMX0LfEoIl/FIDEccMi70qRC2Qf+NmtFP5/Vpm35IzHOyNY2L7aOK/HWAf60qkI1sSuOfdbl5T0yLfcWlcipA4/5wOWQmWcs6qA5B6bMKMmfTmw2ozzjcRNfXiOtuKqWlOIeon6r858/e6jiznZwoqIvi3+zoJ5o1DhLMQdWRmks6vm4EqTH3i6rVqOIDqEXkm/1FfIunhbYGvBZETuCGcSgty6zNlj0zbxWhp7Ub5QRk8sEeYRB4f1Rerbv8l3qMkL0IDWbS3aCGbSDKOAehauVTW12jOwVVUotRb4bPUFmFqFnSRS4Ll+d74rVqoXbMOCc00+PAbKwdBfaF4CW3/2yjO0JyZzaOfshi0Eo+5JOVR1oSnTpSAy3D4NSCcL75BryiPJO8tak8ywUfXSwHjdBfiTX//P1Owqtjq8/+d8eVLKGwzAlG9T+bBxKNzeUzgdZgY9RsScRYefsT1SOcrTgBdoAAAAA');

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand weergeven

@ -0,0 +1,2 @@
<?php ?><?php /** This Software is the property of D³ Data Development and is protected by copyright law - it is NOT Freeware. Any unauthorized use of this software without a valid license key is a violation of the license agreement and will be prosecuted by civil and criminal law. Inhaber: Thomas Dartsch Alle Rechte vorbehalten @package Kundenmanager @version 6.0.1.0 SourceGuardian (03.09.2024) @author Daniel Seifert support@shopmodule.com @copyright (C) 2024, D3 Data Development @see https://www.d3data.de */ ?><?php
if(!function_exists('sg_load')){$__v=phpversion();$__x=explode('.',$__v);$__v2=$__x[0].'.'.(int)$__x[1];$__u=strtolower(substr(php_uname(),0,3));$__ts=(@constant('PHP_ZTS') || @constant('ZEND_THREAD_SAFE')?'ts':'');$__f=$__f0='ixed.'.$__v2.$__ts.'.'.$__u;$__ff=$__ff0='ixed.'.$__v2.'.'.(int)$__x[2].$__ts.'.'.$__u;$__ed=@ini_get('extension_dir');$__e=$__e0=@realpath($__ed);$__dl=function_exists('dl') && function_exists('file_exists') && @ini_get('enable_dl') && !@ini_get('safe_mode');if($__dl && $__e && version_compare($__v,'5.2.5','<') && function_exists('getcwd') && function_exists('dirname')){$__d=$__d0=getcwd();if(@$__d[1]==':') {$__d=str_replace('\\','/',substr($__d,2));$__e=str_replace('\\','/',substr($__e,2));}$__e.=($__h=str_repeat('/..',substr_count($__e,'/')));$__f='/ixed/'.$__f0;$__ff='/ixed/'.$__ff0;while(!file_exists($__e.$__d.$__ff) && !file_exists($__e.$__d.$__f) && strlen($__d)>1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="<html><body>PHP script '".__FILE__."' is protected by <a href=\"https://www.sourceguardian.com/\">SourceGuardian</a> and requires a SourceGuardian loader '".$__f0."' to be installed.<br><br>1) <a href=\"".$__ixedurl."\" target=\"_blank\">Click here</a> to download the required '".$__f0."' loader from the SourceGuardian site<br>2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="<br>3) Edit ".$__ini." and add 'extension=".$__f0."' directive<br>4) Restart the web server";}}$__msg.="</body></html>";}die($__msg);exit();}}return sg_load('7A3737B36579762CAAQAAAAhAAAABKgAAACABAAAAAAAAAD/1ryfsbE1ODND2EK8yfAjQHtgv0JBlDgaACyUam3z6MlQdtaSTS0vKAO2D8KGmLri0qirQbzM5oGb75PhEYBvJ35e4XcJ2FNrUD2+3MjYTNqUzfZyTIVbtkaLCQdH/+S/uNSrEtpWq1YMWHRnJjhuZCuUONdPCuxNDWy+iup1nwTc9fTj2IUtdG58skMdRGpJBXhDiBX8y1pcK717NpQwUga2WSrvCZJCCAAAAJgBAACv0Yax5qQ+GPjY+R1YORk+7XGHktLEYIyUdELRl+844bMjf0Vq9IyMJIRrHKGMFdf9cazQwLQyiHpmJ60Su0weeo5g28zRZGI3CilC+hcHAD9Qn0SknNrGsTrNDdIWCtxlwXcV2iO7GmdvoMQY87HxaKIiFylu7spp6uBKrqVzZWeLx8EFBlcabioGhJLbzldmiwn/Isa4iXA9jhHEOyJLZR8+O2uBOhEzQcRrDKJb5e+PSXs2dY7/vGeYghJytmiJ76j8NwXfm5yD4B1evsA9G0jH1hMe8ZdoYR0S5gR6EwAG4T7hMBlyu2nGXxjiSt6JCnU1Ry+bEjnqwc2GdpnAcxsd8wH9tDBbMlABRY2zn6Eg4JC8JUGJ6Ykjk0ZLw0T4BtrVFxm+lsH7hTI3upJuiips5dw5ucOLWueGtPUQXKSOTD3UG25KSxw+ylAhB2tgy3MpBCuCaOHumDVZelMioTbTJvxv2Meb67Zgzp0599dtKKXUbPelA3r9IeacL55CqmkEBwR3SzZQcK55DWU3/lYJK4cyFOlRAAAAiAEAAIliXee2wqe3kJgx7bZfITuaCJ2lsnjZ8aUA55t9g4TnC2aVEmBc5+maAEjm1aKIOEGQ3p4S8TP9L4X+tAtp7u3Nu8NWCpzogLxD6PXeZ5oJqrbBa+n0xecRfMKF3WbebwtaHEDi6KxEMr35yKc1O8LrE9/JXOYiHxfZBPO5osxtWsyrdKAZ1VJYAPwbv2x/TyfKIorAfF9AHxmg3J/xYRc3EHMkRoa4zrYbL+GIR8DgbkIRxYUSUjB1+KCNzK5/5B+SuexnuZhEhELoN6gEA5myr+DSXVIdvtMwZbQPCUx0lISqkEzwLYM8v3wDsq61qCkhC4e4zCIVsW9bbbusdfdQiMNfpvlYKgf2ioitDF3hIl9T6TDV1g7k+tFitRLE1YnBs+uxVhqyYhcxM2+WuWl8ro7IMUq+MROb+RjEOTcVbR48tqbWO7oHikdHRsB65kJnqYfTb72Dwhh1amPCwnG2/wIDGQJ2iXKAjnBfASvF4Vx5Aqjrkmr8Xyno8fFecb5LcdoHnimaUgAAAIgBAACNEJqP1d0Y4AKr5P3/aBBOzjDTDDYfGAmH8v95HdhYnxdxgvV7pePyJHR42LE69U6lM/rqSTdC0fIEHqGrLCc/foScRrrcGUg8ePtf+bv8kWRG6AqjXPsh8MEDeY+CwrDOOMCsE9bkzd1zgvPj9Am92l5341A1cRrooifj/M/d+TypuDard7aALiXNg058lmhJcr71Uj4z+32w2xfMfkVEiVnNVoHlH7axWC++2RGxAYfzb9xdN+lpwA6IpN6u737Ssfp1GQy1WP28luiPTBR68lbr8pXHifjw1q4G93XY4z0/Z4c//CfxOxZsTpJlFK+soidqoYBzipA+IuU7r0nGcdrvfcZKZvMD2maLILUjWKrPbtmeq5X/jV2kWItBmDZK9TtP9Zl4WXWurPwuEBr3vtBpbNI4+Wy1y/FKaapKSPLJlgJuVfipZe86TKJ8CtNCiJNL6bPk+Cuu6pQE+E+IhuFlc/9OrsYZ/NH6BeBNUx4GybgyiSoYyPsTUIoF3H3hhh2Sj5m4YgAAAAA=');

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand weergeven

@ -0,0 +1,2 @@
<?php ?><?php /** This Software is the property of D³ Data Development and is protected by copyright law - it is NOT Freeware. Any unauthorized use of this software without a valid license key is a violation of the license agreement and will be prosecuted by civil and criminal law. Inhaber: Thomas Dartsch Alle Rechte vorbehalten @package Kundenmanager @version 6.0.1.0 SourceGuardian (03.09.2024) @author Daniel Seifert support@shopmodule.com @copyright (C) 2024, D3 Data Development @see https://www.d3data.de */ ?><?php
if(!function_exists('sg_load')){$__v=phpversion();$__x=explode('.',$__v);$__v2=$__x[0].'.'.(int)$__x[1];$__u=strtolower(substr(php_uname(),0,3));$__ts=(@constant('PHP_ZTS') || @constant('ZEND_THREAD_SAFE')?'ts':'');$__f=$__f0='ixed.'.$__v2.$__ts.'.'.$__u;$__ff=$__ff0='ixed.'.$__v2.'.'.(int)$__x[2].$__ts.'.'.$__u;$__ed=@ini_get('extension_dir');$__e=$__e0=@realpath($__ed);$__dl=function_exists('dl') && function_exists('file_exists') && @ini_get('enable_dl') && !@ini_get('safe_mode');if($__dl && $__e && version_compare($__v,'5.2.5','<') && function_exists('getcwd') && function_exists('dirname')){$__d=$__d0=getcwd();if(@$__d[1]==':') {$__d=str_replace('\\','/',substr($__d,2));$__e=str_replace('\\','/',substr($__e,2));}$__e.=($__h=str_repeat('/..',substr_count($__e,'/')));$__f='/ixed/'.$__f0;$__ff='/ixed/'.$__ff0;while(!file_exists($__e.$__d.$__ff) && !file_exists($__e.$__d.$__f) && strlen($__d)>1){$__d=dirname($__d);}if(file_exists($__e.$__d.$__ff)) dl($__h.$__d.$__ff); else if(file_exists($__e.$__d.$__f)) dl($__h.$__d.$__f);}if(!function_exists('sg_load') && $__dl && $__e0){if(file_exists($__e0.'/'.$__ff0)) dl($__ff0); else if(file_exists($__e0.'/'.$__f0)) dl($__f0);}if(!function_exists('sg_load')){$__ixedurl='https://www.sourceguardian.com/loaders/download.php?php_v='.urlencode($__v).'&php_ts='.($__ts?'1':'0').'&php_is='.@constant('PHP_INT_SIZE').'&os_s='.urlencode(php_uname('s')).'&os_r='.urlencode(php_uname('r')).'&os_m='.urlencode(php_uname('m'));$__sapi=php_sapi_name();if(!$__e0) $__e0=$__ed;if(function_exists('php_ini_loaded_file')) $__ini=php_ini_loaded_file(); else $__ini='php.ini';if((substr($__sapi,0,3)=='cgi')||($__sapi=='cli')||($__sapi=='embed')){$__msg="\nPHP script '".__FILE__."' is protected by SourceGuardian and requires a SourceGuardian loader '".$__f0."' to be installed.\n\n1) Download the required loader '".$__f0."' from the SourceGuardian site: ".$__ixedurl."\n2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="\n3) Edit ".$__ini." and add 'extension=".$__f0."' directive";}}$__msg.="\n\n";}else{$__msg="<html><body>PHP script '".__FILE__."' is protected by <a href=\"https://www.sourceguardian.com/\">SourceGuardian</a> and requires a SourceGuardian loader '".$__f0."' to be installed.<br><br>1) <a href=\"".$__ixedurl."\" target=\"_blank\">Click here</a> to download the required '".$__f0."' loader from the SourceGuardian site<br>2) Install the loader to ";if(isset($__d0)){$__msg.=$__d0.DIRECTORY_SEPARATOR.'ixed';}else{$__msg.=$__e0;if(!$__dl){$__msg.="<br>3) Edit ".$__ini." and add 'extension=".$__f0."' directive<br>4) Restart the web server";}}$__msg.="</body></html>";}die($__msg);exit();}}return sg_load('7A3737B36579762CAAQAAAAhAAAABKgAAACABAAAAAAAAAD/xkOrMdpgx+e9VTjF1eyE1mG66vSs+PNVjPtKlgihbxPmYf/1ka7KPzjhETWB6GjoYReB6mTpxRyKSgGlri6DWGvgKszLcovey2VnPyYBKUOzpC8aEy0oBjqHuyRN0oGTNdFkiTWbb3okEFtdaSOcywBFQWjw/LWw1N8biihUOOfkdZgVoZKAUK3y5G2uCvMJU18P/4a50c2OOWatfmyqfnO8jpdOiMqCCAAAAJgBAADWAhGZ1DgvO7Bp4ikV3hXSsBTMVQnnSp29aIGs5D7AL2SaNN3QZYx4r3Hk7jE5H1s46SgpR7+q9fU2CRrE2Ok9fExx7pLoAWn4g9qQH6S0/v5RONkIDkWmPVogfQ+DpLb/wDWAfJ9I+4YUEqn6aXGgdLWQitirQnpO4/0o8sN1pdFZuzTq+5cv5fZYqjFxNZXVCtEUiCJ0fVqPPLyFeVtLLEsYivIk92NvhVJE1+8eRQdaitQ53kJjINLwnKUt7g8vkyCIkuWflejsheeZuVXsFEA9D9O1iTXjp5K7IWPn3S8nmUH979oJREw7LgVy2zeP5E7YWiAA0he5CQYi+5wBaj52H3SwJDakMSp+yjnjhGWp43/+a+oLhNNHciI3y44xJUWYj5+FesoLbJOumkzXLEhgofXzn97rVCMrWeOnwOxDtIKY87cFZEGqRyiy3ev8r+6z8f/yRRCzUxVwcCe1RpGzd8m8SNRQxZWylWg8sFNOf4YNFqE5FKyFpHWZDSRzXcNEQusE//cay8zoqFlOpdVyaXzO5qVRAAAAkAEAAAwtZiLXG1jr0owdsbMvmM1Kc+qgYTCdvKV7yGLA2EbLoupnfYoHZGc8GSxQnC71Spjo19RNgo1g6ru9+cSVToTdfyBI0LHFsSL0VmwIQNnJJp1EMyXvNTlk8ZWzEPpXmyrSGBdENCvT8xYIfU4hd3EyuscH+ZLXP4D3Qah+mGWP679OSDLM9bXyyEnAHZaehlpjfYKzKhbi7b8pXyG89Wh0d/jyGGwWuHM0L37bHPj7GcJc+PGEiACo/ijxRri+KIyIIwpib+Raa7ppko+9ckY3xXf6u2DTCNvfJ2DmvHgfi8A7uQwZvVwfUsEQwXbaCeAipxP4yEHiExmdbpat5CVzScDKvq7SUACPSX6V6Duyk0Aw0WTuoUWLuPOFr5vWmRvilm+S5ve+Cr8FHqs4MrpppDseKvmfnxDjtXbzlnx9uIeoBfQn5yOGUpnLXwAgL9lB8B7EScdXofeklhd3LsfO2LTcKwVIxgnK+Id3VNePJq0AzUPPzDP/TXduEBmS90A04Wabp7qJlxu3X3bjTXxSAAAAkAEAAMfNNk3h9ytQGCtt/75hgboOPZYg1V6IKvnIP4ooiZoMtn2x0JxFC7udue0zXxtVhjKePe6isitDhJ2vpWXEMW9fv1UAhFTMc7VA9AuA8dnu1zYveaesrIAehTlebYnDhh6YrOrmSQo+Wn7uYFDD1B7MdpYKVEKbZ8Od7yDLjIV79ic5+NAqtoXf3G3xs+J4WumBeo7YdydGEV8nBLp48/saZxbc7w6/axdutbJrrEEMh5f1VchImh9XOY6Xa8lQnzv4w9/LIbQpZBNrkYH321DvLg7wBlrolO9DRIuQD9Tx6OqkMg6vYkUpJ4PvAnnT0opqE+XqXHsmJ138EdJbpAT9xNtLHt4foFKz8pE1ZiIuzz4Axcp87D3ARXjNf+mp26B8khGTS9hhB7BZBxIpE2WrnjjjMgei7CIATGOQE3owygYN76q//iSyWGUjfAQSdWX0sr/7myQZ9OklFltqytQ0ZNFpzd+IxDhOLKNfjJyT0UjADRXVpSa0MIEwAlw/kT+O0pl0k/EZrA84o2b8AOMAAAAA');

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Bestand-diff onderdrukt omdat een of meer regels te lang zijn

Sommige bestanden werden niet getoond omdat er teveel bestanden zijn veranderd in deze diff Meer weergeven