/ Markus Gärtner * @copyright (C) 2011, D3 Data Development * @see http://www.shopmodule.com * */ namespace D3\Points\Application\Controller\Admin; use D3\ModCfg\Application\Controller\Admin\d3_cfg_mod_main; use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception; use OxidEsales\Eshop\Core\Config; use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Request; use D3\Points\Application\Model\utils_points; use OxidEsales\Eshop\Core\Registry; use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod; use D3\ModCfg\Application\Model\d3str; use D3\ModCfg\Application\Model\Filegenerator\d3filegeneratorcronsh; use D3\ModCfg\Application\Model\Shopcompatibility\d3ShopCompatibilityAdapterHandler; use OxidEsales\Eshop\Application\Model\Shop; use OxidEsales\Eshop\Core\Module\Module; use OxidEsales\Eshop\Core\ViewConfig; use D3\Points\Application\Model\d3points; class settings extends d3_cfg_mod_main { protected $_sThisTemplate = 'd3points_settings.tpl'; protected $_sModId = 'd3points'; protected $_sMenuItemTitle = 'd3mxd3points'; protected $_sMenuSubItemTitle = 'd3mxd3points_SETTINGS'; protected $_sHelpLinkMLAdd = 'D3POINTS_HELPLINK_CONFIG'; protected $_blHasDebugSwitch = TRUE; protected $_blHasTestModeSwitch = TRUE; protected $_sDebugHelpTextIdent = 'D3_CFG_d3points_DEBUG_MODUS_HELP'; protected $_sTestModeHelpTextIdent = 'D3_CFG_d3points_TEST_MODUS_HELP'; /** * @return string * @throws DatabaseConnectionException * @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\StandardException * @throws d3_cfg_mod_exception */ public function render() { $ret = parent::render(); #echo __LINE__; #dumpvar($this->d3GetSet()->oValue); return $ret; } /** * Add some arrays to config * transform SELECTIONGROUPS[SELECTION_GROUPS_4_POINTS][] to "d3points_SELECTION_GROUPS_4_POINTS" and save it under "d3_cfg_mod__d3points_SELECTION_GROUPS_4_POINTS" * * @return void * @throws DatabaseConnectionException * @throws \D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\StandardException * @throws d3_cfg_mod_exception */ public function save() { parent::save(); $ad3Points = Registry::get(Request::class)->getRequestEscapedParameter('SELECTIONGROUPS'); #dumpvar($ad3Points); if ($ad3Points != 0 && count($ad3Points) > 0) { foreach (Registry::get(Request::class)->getRequestEscapedParameter('SELECTIONGROUPS') AS $key => $aGroup) { #echo $key; #dumpvar($aGroup); $this->d3GetSet()->setValue('d3points_' . $key, array()); $this->d3GetSet()->setValue('d3points_' . $key, serialize($aGroup)); //neu #$this->getSet()->save(); } } #parent::save(); $this->d3GetSet()->prepareSaveData(); $this->d3GetSet()->save(); } /** * Kundengruppen freigeben * * @return array alist * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ public function d3_PrepareGroups4Points() { $oGroups = array(); $aGroups = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_GROUPS_4_POINTS')); foreach ($this->d3_GetGroups() as $oGroup) { if (is_array($aGroups)) { if (in_array($oGroup->oxgroups__oxid->getRawValue(), $aGroups)) { $oGroup->select = 1; #$oGroup->save(); } } $oGroups[] = $oGroup; } return $oGroups; } /** * Kundengruppen ausschließen * * @return array alist * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ public function d3_PrepareGroups4NoPoints() { $oGroups = array(); $aGroups = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_GROUPS_4_NO_POINTS')); foreach ($this->d3_GetGroups() as $oGroup) { if (is_array($aGroups)) { if (in_array($oGroup->oxgroups__oxid->getRawValue(), $aGroups)) { $oGroup->select = 1; #$oGroup->save(); } } $oGroups[] = $oGroup; } return $oGroups; } /** * Load Groups * * @return object alist * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ protected function d3_GetGroups() { $oGroups = utils_points::d3_d3pointsUtils_LoadGroups(); return $oGroups; } /** * Gesetztes "bezahlt am"-Datum * * @return array alist * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ public function d3_PreparePaymentsPaid4Points() { $oPayments = array(); $aPayments = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_PAYMENTS_PAID_4_POINTS')); foreach ($this->d3_GetPayments() as $oPayment) { if (is_array($aPayments)) { if (in_array($oPayment->oxpayments__oxid->getRawValue(), $aPayments)) { $oPayment->select = 1; #$oPayment->save(); } } $oPayments[] = $oPayment; } return $oPayments; } /** * Bezahlarten für "Keine Punkte bei folgenden Zahlarten" * * @return array $oPayment * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ public function d3_PreparePayments4NoPoints() { $oPayments = array(); $aPayments = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_PAYMENTS_4_NO_POINTS')); foreach ($this->d3_GetPayments() as $oPayment) { if (is_array($aPayments)) { if (in_array($oPayment->oxpayments__oxid->getRawValue(), $aPayments)) { $oPayment->select = 1; #$oPayment->save(); } } $oPayments[] = $oPayment; } #dumpvar($oPayments); return $oPayments; } /** * Versandtdatum bei folgenden Bezahlarten prüfen * * @return array alist * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ public function d3_PrepareDeliveryDate4NoPoints() { $oPayments = array(); $aPayments = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_DELIVERYDATE_4_NO_POINTS')); foreach ($this->d3_GetPayments() as $oPayment) { if (is_array($aPayments)) { if (in_array($oPayment->oxpayments__oxid->getRawValue(), $aPayments)) { $oPayment->select = 1; #$oPayment->save(); } } $oPayments[] = $oPayment; } return $oPayments; } /** * Load Payment methods * * @return object alist * @throws \OxidEsales\Eshop\Core\Exception\SystemComponentException */ protected function d3_GetPayments() { /* @var $d3Utils utils_points */ $d3Utils = oxnew(utils_points::class); return $d3Utils->d3_d3pointsUtils_LoadPayments(); } /** * Return URL-Paramete with String * only if is in subshop * * @return string */ public function d3GetShopId() { $sShopId = Registry::getConfig()->getShopId(); if ($sShopId != '1') { return "&shp=" . $sShopId; } return ""; } /** * @return string * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException */ public function d3GetRandomCode() { /* @var $d3Utils utils_points */ $d3Utils = oxnew(utils_points::class); return $d3Utils->d3_d3pointsUtils_d3GetRandomVoucher(); } /** * @return array * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException */ public function d3GetOxFolders4Points() { $oFolders = array(); $aFolders = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_FOLDERS_4_POINTS')); foreach ($this->getFolderFromOxConfig() as $key => $sColor) { $oFolder = NULL; $oFolder->id = $key; $oFolder->color = $sColor; if (is_array($aFolders)) { if (in_array($key, $aFolders)) { $oFolder->select = 1; #$oPayment->save(); } } $oFolders[] = $oFolder; } return $oFolders; } /** * @return array * @throws DatabaseConnectionException * @throws \Doctrine\DBAL\DBALException * @throws \OxidEsales\Eshop\Core\Exception\DatabaseErrorException */ public function d3GetOxFolders4NoPoints() { $oFolders = array(); $aFolders = unserialize($this->d3GetSet()->getValue('d3points_SELECTION_FOLDERS_4_NO_POINTS')); #dumpvar($aFolders); foreach ($this->getFolderFromOxConfig() as $key => $sColor) { $oFolder = NULL; $oFolder->id = $key; $oFolder->color = $sColor; if (is_array($aFolders)) { if (in_array($key, $aFolders)) { $oFolder->select = 1; #$oPayment->save(); } } $oFolders[] = $oFolder; } return $oFolders; } /** * @return mixed */ public function getFolderFromOxConfig() { return Registry::get(Request::class)->getConfigParam('aOrderfolder'); } /** * @param bool $blUsePw * @param bool|int $iCronJobId * * @return string * @throws DatabaseConnectionException * @throws \Exception */ public function getCronLink($blUsePw, $iCronJobId = false) { $sBaseUrl = $this->getViewConfig()->getModuleUrl('d3points').'public/d3_cron_points.php'; $aParameters = array( 'shp' => $this->getViewConfig()->getActiveShopId(), ); if ($iCronJobId !== false) { $aParameters['cjid'] = $iCronJobId; } if ($blUsePw == true) { $aParameters['key'] = $this->d3GetSet()->getValue('d3points_ACCESSKEY') ? $this->d3GetSet()->getValue('d3points_ACCESSKEY') : $this->d3GetRandomCode(); } //$sURL = $this->getD3Str()->generateParameterUrl($sBaseUrl, $aParameters); $oD3Str = oxNew(d3str::class); $sURL = $oD3Str->generateParameterUrl($sBaseUrl, $aParameters); return $sURL; } /** * @return array */ public function getCronProviderList() { /** @var d3filegeneratorcronsh $oD3ShGenerator */ $oD3ShGenerator = oxNew(d3filegeneratorcronsh::class); return $oD3ShGenerator->getContentList(); } public function generateCronShFile() { $oModule = oxNew(Module::class); $oD3CompatibilityAdapterHandler = oxNew(d3ShopCompatibilityAdapterHandler::class); $sModulePath = $oD3CompatibilityAdapterHandler->call( 'oxmodule__getModuleFullPath', array($oModule, d3_cfg_mod::get($this->_sModId)->getMetaModuleId()) ); $sScriptPath = $sModulePath . "/public/d3_cron_points.php"; //$sCronId = Registry::get(Request::class)->getRequestEscapedParameter('cronid'); $oShop = Registry::getConfig()->getActiveShop(); $aParameters = array( //0 => $oShop->getId(), //1 => $sCronId, ); $oD3ShGenerator = oxNew(d3filegeneratorcronsh::class); $oD3ShGenerator->setContentType(Registry::get(Request::class)->getRequestParameter('crontype')); $oD3ShGenerator->setScriptPath($sScriptPath); $oD3ShGenerator->setSortedParameterList($aParameters); $oD3ShGenerator->startDownload('d3_cron_points_'.$oShop->getId().".sh"); } }