Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
f146c21cf9 | |||
c96203da2c | |||
8debed2717 | |||
35c851b37f | |||
a0a2d925f8 | |||
f9fd93c7e3 | |||
7d9c9a9837 | |||
1187854c86 | |||
62413d02ef |
53
.gitignore
vendored
Normal file
53
.gitignore
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### JetBrains template
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
cmake-build-release/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
@ -1,16 +1,23 @@
|
||||
Hinweise zur Benutzung und Konfiguration sind in der Metadata-Modulbeschreibung enthalten.
|
||||
Diese können nach Installation im Backend des OXID-Shops unter "Erweiterungen -> Module" eingesehen werden.
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
=> 1.2.0.0
|
||||
- Dokuemntation ergänzt
|
||||
## Unreleased
|
||||
|
||||
## 1.2.0.0
|
||||
### Added
|
||||
- Mail-Anzeige fordert zusätzlich Authentfikation mit einem Shopadmin-Konto
|
||||
- Seitenencoding definiert
|
||||
|
||||
=> 1.1.0.0
|
||||
### Changed
|
||||
- Dokumentation ergänzt
|
||||
|
||||
## 1.1.0.0
|
||||
### Added
|
||||
- Mailversand ĂĽbers Shopframework wird blockiert oder
|
||||
- Mails werden an alternative Mailadresse umgeleitet
|
||||
|
||||
=> 1.0.0.0
|
||||
## 1.0.0.0
|
||||
### Added
|
||||
- unterbindet das Löschen des Warenkorbs nach Bestellabschluss
|
||||
- Thankyou ist ohne Bestellabschluss aufrufbar (unter Angabe der Bestellnummer auch fĂĽr eine bestimmte Bestellung)
|
||||
- Bestellbestätigungsmails und (sofern D3-Modul installiert) Anfragebestätigungsmails sind im Browser darstellbar (unter Angabe der Bestellnummer auch für eine bestimmte Bestellung)
|
21
README.md
21
README.md
@ -1,4 +1,13 @@
|
||||
# TPL Development Helper
|
||||
|
||||
## Installation
|
||||
|
||||
composer config repositories.d3 composer https://satis.oxidmodule.com
|
||||
|
||||
composer require d3/devhelper
|
||||
|
||||
## Features
|
||||
|
||||
### Entwicklungswerkzeug zur Kontrolle schwer zug<75>nglicher Shopinhalte
|
||||
|
||||
Diese Tool soll bei t<>glichen Entwicklungsaufgaben im OXID eShop helfen, die (systembedingt) vom Shopsystem erschwert werden.
|
||||
@ -10,21 +19,25 @@ Diese Tool soll bei t
|
||||
* Thankyou-Seite ist auch ohne Bestellabschluss aufrufbar (unter Angabe der Bestellnummer auch f<>r eine bestimmte Bestellung)
|
||||
* Bestellbest<73>tigungsmails und sind im Browser darstellbar (unter Angabe der Bestellnummer auch f<>r eine bestimmte Bestellung)
|
||||
|
||||
__Da hiermit gezielt Mails der Shopbestellungen angezeigt werden k<>nnen, ist das Modul mit <20>u<EFBFBD>erster Vorsicht zu verwenden. Die H<>rden f<>r die Anzeige der Mails sind daher absichtlich sehr hoch gesetzt. Vor der Verwendung sind Einstellungen zu <20>ndern. Denken Sie unbedingt daran, diese Einstellungen im Anschluss wieder zur<75>ckzusetzen. Sonst sind Kunden- und Bestelldaten frei abrufbar. Wir <20>bernehmen f<>r daraus resultierenden Sch<63>den keine Haftung.__
|
||||
## Sicherheitshinweis
|
||||
|
||||
Da hiermit gezielt Mails der Shopbestellungen angezeigt werden k<>nnen, ist das Modul mit <20>u<EFBFBD>erster Vorsicht zu verwenden. Die H<>rden f<>r die Anzeige der Mails sind daher absichtlich sehr hoch gesetzt. Vor der Verwendung sind Einstellungen zu <20>ndern. Denken Sie unbedingt daran, diese Einstellungen im Anschluss wieder zur<75>ckzusetzen. Sonst sind Kunden- und Bestelldaten frei abrufbar. Wir <20>bernehmen f<>r daraus resultierenden Sch<63>den keine Haftung.
|
||||
|
||||
## Verwendung
|
||||
|
||||
Um unser Tool verwenden zu k<>nnen, folgen Sie bitte diesen Schritten:
|
||||
|
||||
1. Produktivmodus entfernen
|
||||
|
||||

|
||||

|
||||
|
||||
2. Modul aktivieren
|
||||
|
||||

|
||||

|
||||
|
||||
3. In den Einstellungen die gew<65>nschten Funktionen freischalten
|
||||
|
||||

|
||||

|
||||
|
||||
4. <20>ber die Links im Tab <20>Stamm<6D> k<>nnen Sie die betreffenden Seiten aufrufen. Vor der Darstellung wird ein Benutzername und Passwort abgefragt. Hierf<72>r verwenden Sie die Anmeldedaten des Abminbereichs Ihres Shops.
|
||||
|
||||
|
41
composer.json
Normal file
41
composer.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "d3/devhelper",
|
||||
"description": "Manipulate shop standard processes for easier development",
|
||||
"type": "oxideshop-module",
|
||||
"keywords": [
|
||||
"oxid",
|
||||
"modules",
|
||||
"eShop",
|
||||
"d3",
|
||||
"devhelper",
|
||||
"developer",
|
||||
"development",
|
||||
"tools"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "D3 Data Development (Inh. Thomas Dartsch)",
|
||||
"email": "info@shopmodule.com",
|
||||
"homepage": "http://www.d3data.de"
|
||||
}
|
||||
],
|
||||
"homepage": "https://www.oxidmodule.com/",
|
||||
"license": [
|
||||
"proprietary"
|
||||
],
|
||||
"extra": {
|
||||
"oxideshop": {
|
||||
"source-directory": "/src",
|
||||
"target-directory": "d3/devhelper"
|
||||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.6",
|
||||
"oxid-esales/oxideshop-ce": "6.0 - 6.1"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"D3\\Devhelper\\": "../../../source/modules/d3/devhelper"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright <20> D<> Data Development, Thomas Dartsch
|
||||
* @author D<> Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_dev_thankyou_parent extends thankyou {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_oxorder_parent
|
||||
*/
|
||||
class d3_dev_oxorder_parent extends oxorder {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_d3inquiry_parent
|
||||
*/
|
||||
class d3_dev_d3inquiry_parent extends d3inquiry {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_oxorderarticle
|
||||
*/
|
||||
class d3_dev_oxorderarticle_parent extends oxOrderArticle {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_oxemail_parent
|
||||
*/
|
||||
class d3_dev_oxemail_parent extends oxemail {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_order_parent
|
||||
*/
|
||||
class d3_dev_order_parent extends order {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_oxbasket_parent
|
||||
*/
|
||||
class d3_dev_oxbasket_parent extends oxbasket {}
|
||||
|
||||
/**
|
||||
* Class d3_dev_oxbasketitem_parent
|
||||
*/
|
||||
class d3_dev_oxbasketitem_parent extends oxBasketItem {}
|
@ -1,112 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright <20> D<> Data Development, Thomas Dartsch
|
||||
* @author D<> Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3dev extends oxUBase
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$this->_authenticate();
|
||||
|
||||
parent::init();
|
||||
}
|
||||
|
||||
protected function _authenticate ()
|
||||
{
|
||||
$oConfig = oxRegistry::getConfig();
|
||||
|
||||
try {
|
||||
$sUser = $oConfig->getRequestParameter( 'usr' );
|
||||
$sPassword = $oConfig->getRequestParameter( 'pwd' );
|
||||
|
||||
if ( !$sUser || !$sPassword ) {
|
||||
$sUser = $_SERVER[ 'PHP_AUTH_USER' ];
|
||||
$sPassword = $_SERVER[ 'PHP_AUTH_PW' ];
|
||||
}
|
||||
|
||||
if ( !$sUser || !$sPassword ) {
|
||||
$sHttpAuthorization = $_REQUEST[ 'HTTP_AUTHORIZATION' ];
|
||||
if ( $sHttpAuthorization ) {
|
||||
$sUser = null;
|
||||
$sPassword = null;
|
||||
$aHttpAuthorization = explode( ' ', $sHttpAuthorization );
|
||||
if ( is_array( $aHttpAuthorization ) && count( $aHttpAuthorization ) >= 2 && strtolower( $aHttpAuthorization[ 0 ] ) == 'basic' ) {
|
||||
$sBasicAuthorization = base64_decode( $aHttpAuthorization[ 1 ] );
|
||||
$aBasicAuthorization = explode( ':', $sBasicAuthorization );
|
||||
if ( is_array( $aBasicAuthorization ) && count( $aBasicAuthorization ) >= 2 ) {
|
||||
$sUser = $aBasicAuthorization[ 0 ];
|
||||
$sPassword = $aBasicAuthorization[ 1 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/** @var oxUser $oUser */
|
||||
$oUser = oxNew( 'oxuser' );
|
||||
if ( !$sUser || !$sPassword || !$oUser->login( $sUser, $sPassword ) ) {
|
||||
$oEx = oxNew( 'oxuserexception' );
|
||||
$oEx->setMessage( 'EXCEPTION_USER_NOVALIDLOGIN' );
|
||||
throw $oEx;
|
||||
}
|
||||
}
|
||||
catch ( Exception $oEx ) {
|
||||
$oShop = $oConfig->getActiveShop();
|
||||
header( 'WWW-Authenticate: Basic realm="' . $oShop->oxshops__oxname->value . '"' );
|
||||
header( 'HTTP/1.0 401 Unauthorized' );
|
||||
exit( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
public function showOrderMailContent()
|
||||
{
|
||||
header('Content-type: text/html; charset='.oxRegistry::getLang()->translateString('charset'));
|
||||
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value
|
||||
|| false == oxRegistry::getConfig()->getConfigParam('blD3DevShowOrderMailsInBrowser')
|
||||
) {
|
||||
oxRegistry::getUtils()->redirect(oxRegistry::getConfig()->getShopUrl().'index.php?cl=start');
|
||||
}
|
||||
|
||||
$sTpl = oxRegistry::getConfig()->getRequestParameter('type');
|
||||
|
||||
/** @var d3_dev_thankyou $oThankyou */
|
||||
$oThankyou = oxNew('thankyou');
|
||||
$oOrder = $oThankyou->d3GetLastOrder();
|
||||
|
||||
/** @var d3_dev_oxemail $oEmail */
|
||||
$oEmail = oxNew('oxemail');
|
||||
echo $oEmail->d3GetOrderMailContent($oOrder, $sTpl);
|
||||
die();
|
||||
}
|
||||
|
||||
public function showInquiryMailContent()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value
|
||||
|| false == oxRegistry::getConfig()->getConfigParam('blD3DevShowOrderMailsInBrowser')
|
||||
) {
|
||||
oxRegistry::getUtils()->redirect(oxRegistry::getConfig()->getShopUrl().'index.php?cl=start');
|
||||
}
|
||||
|
||||
$sTpl = oxRegistry::getConfig()->getRequestParameter('type');
|
||||
|
||||
/** @var d3_dev_thankyou $oThankyou */
|
||||
$oThankyou = oxNew('thankyou');
|
||||
$oOrder = $oThankyou->d3GetLastInquiry();
|
||||
|
||||
/** @var d3_dev_oxemail $oEmail */
|
||||
$oEmail = oxNew('oxemail');
|
||||
echo $oEmail->d3GetInquiryMailContent($oOrder, $sTpl);
|
||||
die();
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
132
src/Application/Controller/d3dev.php
Normal file
132
src/Application/Controller/d3dev.php
Normal file
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Application\Controller;
|
||||
|
||||
use D3\Devhelper\Modules\Application\Controller as ModuleController;
|
||||
use D3\Devhelper\Modules\Core as ModuleCore;
|
||||
use OxidEsales\Eshop\Application\Controller\FrontendController;
|
||||
use OxidEsales\Eshop\Application\Controller\ThankYouController;
|
||||
use OxidEsales\Eshop\Application\Model\User;
|
||||
use OxidEsales\Eshop\Core\Email;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
||||
use OxidEsales\Eshop\Core\Exception\UserException;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
use OxidEsales\Eshop\Core\Request;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3dev extends FrontendController
|
||||
{
|
||||
public function init()
|
||||
{
|
||||
$this->_authenticate();
|
||||
|
||||
parent::init();
|
||||
}
|
||||
|
||||
protected function _authenticate ()
|
||||
{
|
||||
try {
|
||||
$sUser = Registry::get(Request::class)->getRequestEscapedParameter('usr');
|
||||
$sPassword = Registry::get(Request::class)->getRequestEscapedParameter('pwd');
|
||||
|
||||
if ( !$sUser || !$sPassword ) {
|
||||
$sUser = $_SERVER[ 'PHP_AUTH_USER' ];
|
||||
$sPassword = $_SERVER[ 'PHP_AUTH_PW' ];
|
||||
}
|
||||
|
||||
if ( !$sUser || !$sPassword ) {
|
||||
$sHttpAuthorization = $_REQUEST[ 'HTTP_AUTHORIZATION' ];
|
||||
if ( $sHttpAuthorization ) {
|
||||
$sUser = null;
|
||||
$sPassword = null;
|
||||
$aHttpAuthorization = explode( ' ', $sHttpAuthorization );
|
||||
if ( is_array( $aHttpAuthorization ) && count( $aHttpAuthorization ) >= 2 && strtolower( $aHttpAuthorization[ 0 ] ) == 'basic' ) {
|
||||
$sBasicAuthorization = base64_decode( $aHttpAuthorization[ 1 ] );
|
||||
$aBasicAuthorization = explode( ':', $sBasicAuthorization );
|
||||
if ( is_array( $aBasicAuthorization ) && count( $aBasicAuthorization ) >= 2 ) {
|
||||
$sUser = $aBasicAuthorization[ 0 ];
|
||||
$sPassword = $aBasicAuthorization[ 1 ];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$oUser = oxNew( User::class );
|
||||
if ( !$sUser || !$sPassword || !$oUser->login( $sUser, $sPassword ) ) {
|
||||
/** @var UserException $oEx */
|
||||
$oEx = oxNew( UserException::class, 'EXCEPTION_USER_NOVALIDLOGIN' );
|
||||
|
||||
throw $oEx;
|
||||
}
|
||||
}
|
||||
catch ( \Exception $oEx ) {
|
||||
$oShop = Registry::getConfig()->getActiveShop();
|
||||
header( 'WWW-Authenticate: Basic realm="' . $oShop->getFieldData('oxname') . '"' );
|
||||
header( 'HTTP/1.0 401 Unauthorized' );
|
||||
exit( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function showOrderMailContent()
|
||||
{
|
||||
header('Content-type: text/html; charset='.Registry::getLang()->translateString('charset'));
|
||||
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()
|
||||
|| false == Registry::getConfig()->getConfigParam('blD3DevShowOrderMailsInBrowser')
|
||||
) {
|
||||
Registry::getUtils()->redirect(Registry::getConfig()->getShopUrl().'index.php?cl=start');
|
||||
}
|
||||
|
||||
$sTpl = Registry::get(Request::class)->getRequestEscapedParameter('type');
|
||||
|
||||
/** @var ModuleController\d3_dev_thankyou $oThankyou */
|
||||
$oThankyou = oxNew(ThankYouController::class);
|
||||
$oOrder = $oThankyou->d3GetLastOrder();
|
||||
|
||||
/** @var ModuleCore\d3_dev_oxemail $oEmail */
|
||||
$oEmail = oxNew(Email::class);
|
||||
echo $oEmail->d3GetOrderMailContent($oOrder, $sTpl);
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
*/
|
||||
public function showInquiryMailContent()
|
||||
{
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()
|
||||
|| false == Registry::getConfig()->getConfigParam('blD3DevShowOrderMailsInBrowser')
|
||||
) {
|
||||
Registry::getUtils()->redirect(Registry::getConfig()->getShopUrl().'index.php?cl=start');
|
||||
}
|
||||
|
||||
$sTpl = Registry::get(Request::class)->getRequestEscapedParameter('type');
|
||||
|
||||
/** @var ModuleController\d3_dev_thankyou $oThankyou */
|
||||
$oThankyou = oxNew(ThankYouController::class);
|
||||
$oOrder = $oThankyou->d3GetLastInquiry();
|
||||
|
||||
/** @var ModuleCore\d3_dev_oxemail $oEmail */
|
||||
$oEmail = oxNew(Email::class);
|
||||
echo $oEmail->d3GetInquiryMailContent($oOrder, $sTpl);
|
||||
die();
|
||||
}
|
||||
}
|
@ -9,9 +9,9 @@
|
||||
* civil and criminal law.
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @package OrderManager
|
||||
* @author DÂł Data Development - Daniel Seifert <support@shopmodule.com>
|
||||
* @author DÂł Data Development - Daniel Seifert <support@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
@ -22,29 +22,29 @@ $sLangName = "Deutsch";
|
||||
// -------------------------------
|
||||
$aLang = array(
|
||||
//Navigation
|
||||
'charset' => 'ISO-8859-15',
|
||||
'charset' => 'UTF-8',
|
||||
|
||||
'SHOP_MODULE_GROUP_d3dev_order' => 'Bestellungsablauf manipulieren',
|
||||
'SHOP_MODULE_blD3DevAvoidDelBasket' => 'Warenkorb wird nach Bestellabschluss nicht geleert',
|
||||
'HELP_SHOP_MODULE_blD3DevAvoidDelBasket' => 'Damit kann auf der Bestellbestätigungsseite '.
|
||||
'(Thankyou) durch den "zurĂĽck"-Button in den Warenkorb Schritt 4 gewechselt werden und die Bestellung erneut '.
|
||||
'abgeschickt werden. Eine erneute Bestückung des Warenkorbs ist nicht nötig. Beim erneuten Absenden wird '.
|
||||
'jeweils eine weitere Bestellung angelegt werden. Eventuell verwendete Gutscheine mĂĽssen so eingestellt '.
|
||||
'werden, dass diese mehrfach verwendet werden können.',
|
||||
'HELP_SHOP_MODULE_blD3DevAvoidDelBasket' => 'Damit kann auf der Bestellbestätigungsseite '.
|
||||
'(Thankyou) durch den "zurĂĽck"-Button in den Warenkorb Schritt 4 gewechselt werden und die Bestellung erneut '.
|
||||
'abgeschickt werden. Eine erneute Bestückung des Warenkorbs ist nicht nötig. Beim erneuten Absenden wird '.
|
||||
'jeweils eine weitere Bestellung angelegt werden. Eventuell verwendete Gutscheine mĂĽssen so eingestellt '.
|
||||
'werden, dass diese mehrfach verwendet werden können.',
|
||||
'SHOP_MODULE_blD3DevShowThankyou' => 'Thankyou-Seite kann auch ohne Bestellung '.
|
||||
'aufgerufen werden',
|
||||
'HELP_SHOP_MODULE_blD3DevShowThankyou' => 'Ohne abgesendete Bestellung läßt sich die '.
|
||||
'Thankyou-Seite im Standardshop nicht aufrufen. Diese Option stellt dies fĂĽr Entwicklungszwecke zur '.
|
||||
'Verfügung. <br>Den Link zum Seitenaufruf haben wir hier im Stamm-Tab hinterlegt. Die Seite öffnet sich in '.
|
||||
'einem neuen Browserfenster. <br>FĂĽr die Anzeige wird die letzte vorliegende Bestellung geladen. Ăśber den '.
|
||||
'HELP_SHOP_MODULE_blD3DevShowThankyou' => 'Ohne abgesendete Bestellung läßt sich die '.
|
||||
'Thankyou-Seite im Standardshop nicht aufrufen. Diese Option stellt dies fĂĽr Entwicklungszwecke zur '.
|
||||
'Verfügung. <br>Den Link zum Seitenaufruf haben wir hier im Stamm-Tab hinterlegt. Die Seite öffnet sich in '.
|
||||
'einem neuen Browserfenster. <br>FĂĽr die Anzeige wird die letzte vorliegende Bestellung geladen. Ăśber den '.
|
||||
'Parameter "d3ordernr=X" kann eine bestimmten Bestellung vorgegeben werden.',
|
||||
|
||||
'SHOP_MODULE_GROUP_d3dev_mail' => 'Mailanzeige',
|
||||
'SHOP_MODULE_blD3DevShowOrderMailsInBrowser' => 'Bestellbestätigungsmails können im Browser '.
|
||||
'SHOP_MODULE_blD3DevShowOrderMailsInBrowser' => 'Bestellbestätigungsmails können im Browser '.
|
||||
'angezeigt werden',
|
||||
'HELP_SHOP_MODULE_blD3DevShowOrderMailsInBrowser' => 'Die Links zu den '.
|
||||
'jeweiligen Mails sind im Stamm-Tab aufgelistet.<br>FĂĽr die Anzeige wird ohne Angabe der Bestellnummer die '.
|
||||
'letzte vorliegende Bestellung geladen. Ăśber den Parameter "d3ordernr=X" kann eine bestimmten Bestellung '.
|
||||
'jeweiligen Mails sind im Stamm-Tab aufgelistet.<br>FĂĽr die Anzeige wird ohne Angabe der Bestellnummer die '.
|
||||
'letzte vorliegende Bestellung geladen. Ăśber den Parameter "d3ordernr=X" kann eine bestimmten Bestellung '.
|
||||
'vorgegeben werden.',
|
||||
|
||||
'SHOP_MODULE_GROUP_d3dev_mailblock' => 'Mailversand',
|
||||
@ -53,5 +53,5 @@ $aLang = array(
|
||||
'HELP_SHOP_MODULE_blD3DevBlockMails' => 'Der Mailversand wird komplett geblockt.',
|
||||
'SHOP_MODULE_sD3DevRedirectMail' => 'versendete Mails an diese Adresse umleiten',
|
||||
'HELP_SHOP_MODULE_sD3DevRedirectMail' => 'Wenn leer, erfolgt keine Umleitung. Ohne '.
|
||||
'zusätzliche Blockieroption werden die Mails dann an den original Empfänger gesendet.',
|
||||
'zusätzliche Blockieroption werden die Mails dann an den original Empfänger gesendet.',
|
||||
);
|
42
src/IntelliSenseHelper.php
Normal file
42
src/IntelliSenseHelper.php
Normal file
@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
*
|
||||
* Any unauthorized use of this software without a valid license
|
||||
* is a violation of the license agreement and will be prosecuted by
|
||||
* civil and criminal law.
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Controller
|
||||
{
|
||||
class d3_dev_thankyou_parent extends \OxidEsales\Eshop\Application\Controller\ThankYouController {}
|
||||
}
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model
|
||||
{
|
||||
class d3_dev_oxorder_parent extends \OxidEsales\Eshop\Application\Model\Order {}
|
||||
|
||||
class d3_dev_d3inquiry_parent extends d3inquiry {}
|
||||
|
||||
class d3_dev_d3inquiryarticle_parent extends d3inquiryarticle {}
|
||||
|
||||
class d3_dev_oxorderarticle_parent extends \OxidEsales\Eshop\Application\Model\OrderArticle {}
|
||||
|
||||
class d3_dev_oxbasket_parent extends \OxidEsales\Eshop\Application\Model\Basket {}
|
||||
|
||||
class d3_dev_oxbasketitem_parent extends \OxidEsales\Eshop\Application\Model\BasketItem {}
|
||||
|
||||
class d3_dev_order_parent extends \OxidEsales\Eshop\Application\Controller\OrderController {}
|
||||
}
|
||||
|
||||
namespace D3\Devhelper\Modules\Core
|
||||
{
|
||||
class d3_dev_oxemail_parent extends \OxidEsales\Eshop\Core\Email {}
|
||||
}
|
@ -1,6 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Controller;
|
||||
|
||||
// .../?cl=thankyou[&d3orderid=23]
|
||||
use D3\Devhelper\Modules\Application\Model\d3_dev_d3inquiry;
|
||||
use D3\Devhelper\Modules\Application\Model\d3_dev_oxorder;
|
||||
use OxidEsales\Eshop\Application\Model\Order;
|
||||
use OxidEsales\Eshop\Application\Model\User;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
||||
use OxidEsales\Eshop\Core\Exception\UserException;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
use OxidEsales\Eshop\Core\Request;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
@ -12,24 +23,28 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_dev_thankyou extends d3_dev_thankyou_parent
|
||||
{
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$sSessChallenge = oxRegistry::getSession()->getVariable('sess_challenge');
|
||||
$sSessChallenge = Registry::getSession()->getVariable('sess_challenge');
|
||||
|
||||
parent::init();
|
||||
|
||||
oxRegistry::getSession()->setVariable('sess_challenge', $sSessChallenge);
|
||||
Registry::getSession()->setVariable('sess_challenge', $sSessChallenge);
|
||||
|
||||
if (oxRegistry::getConfig()->getRequestParameter('d3dev')
|
||||
&& false == (bool) oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value
|
||||
&& oxRegistry::getConfig()->getConfigParam('blD3DevShowThankyou')
|
||||
if (Registry::get(Request::class)->getRequestEscapedParameter("d3dev")
|
||||
&& false == (bool) Registry::getConfig()->getActiveShop()->isProductiveMode()
|
||||
&& Registry::getConfig()->getConfigParam('blD3DevShowThankyou')
|
||||
) {
|
||||
$this->_d3authenticate();
|
||||
$oOrder = $this->d3GetLastOrder();
|
||||
@ -40,11 +55,9 @@ class d3_dev_thankyou extends d3_dev_thankyou_parent
|
||||
|
||||
protected function _d3authenticate ()
|
||||
{
|
||||
$oConfig = oxRegistry::getConfig();
|
||||
|
||||
try {
|
||||
$sUser = $oConfig->getRequestParameter( 'usr' );
|
||||
$sPassword = $oConfig->getRequestParameter( 'pwd' );
|
||||
$sUser = Registry::get(Request::class)->getRequestEscapedParameter( 'usr');
|
||||
$sPassword = Registry::get(Request::class)->getRequestEscapedParameter('pwd');
|
||||
|
||||
if ( !$sUser || !$sPassword ) {
|
||||
$sUser = $_SERVER[ 'PHP_AUTH_USER' ];
|
||||
@ -67,44 +80,47 @@ class d3_dev_thankyou extends d3_dev_thankyou_parent
|
||||
}
|
||||
}
|
||||
}
|
||||
/** @var oxUser $oUser */
|
||||
$oUser = oxNew( 'oxuser' );
|
||||
/** @var User $oUser */
|
||||
$oUser = oxNew(User::class);
|
||||
if ( !$sUser || !$sPassword || !$oUser->login( $sUser, $sPassword ) ) {
|
||||
$oEx = oxNew( 'oxuserexception' );
|
||||
$oEx->setMessage( 'EXCEPTION_USER_NOVALIDLOGIN' );
|
||||
/** @var UserException $oEx */
|
||||
$oEx = oxNew(UserException::class, 'EXCEPTION_USER_NOVALIDLOGIN');
|
||||
throw $oEx;
|
||||
}
|
||||
}
|
||||
catch ( Exception $oEx ) {
|
||||
$oShop = $oConfig->getActiveShop();
|
||||
header( 'WWW-Authenticate: Basic realm="' . $oShop->oxshops__oxname->value . '"' );
|
||||
catch ( \Exception $oEx ) {
|
||||
$oShop = Registry::getConfig()->getActiveShop();
|
||||
header( 'WWW-Authenticate: Basic realm="{' . $oShop->getFieldData('oxname') . '"' );
|
||||
header( 'HTTP/1.0 401 Unauthorized' );
|
||||
exit( 1 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return d3_dev_oxorder
|
||||
* @return bool|d3_dev_oxorder
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function d3GetLastOrder()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value) {
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @var d3_dev_oxorder $oOrder */
|
||||
$oOrder = oxNew('oxorder');
|
||||
$oOrder = oxNew(Order::class);
|
||||
$oOrder->d3getLastOrder();
|
||||
|
||||
return $oOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return d3_dev_d3inquiry
|
||||
* @return bool|d3_dev_d3inquiry
|
||||
* @throws DatabaseConnectionException
|
||||
*/
|
||||
public function d3GetLastInquiry()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value) {
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1,4 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
use OxidEsales\Eshop\Application\Model\Basket;
|
||||
use OxidEsales\Eshop\Core\DatabaseProvider;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
use OxidEsales\Eshop\Core\Request;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
@ -9,8 +19,8 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
@ -20,11 +30,13 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
|
||||
/**
|
||||
* @return d3_dev_oxbasket
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function d3DevGetOrderBasket()
|
||||
{
|
||||
/** @var oxbasket $oBasket */
|
||||
$oBasket = $this->_getInquiryBasket();
|
||||
/** @var Basket $oBasket */
|
||||
$this->_getInquiryBasket();
|
||||
|
||||
// unsetting bundles
|
||||
$oOrderArticles = $this->getInquiryArticles();
|
||||
@ -45,20 +57,24 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws DatabaseConnectionException
|
||||
*/
|
||||
public function d3getLastInquiryId()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getRequestParameter('d3inquirynr')) {
|
||||
$sWhere = ' oxinquirynr = ' . (int) oxRegistry::getConfig()->getRequestParameter('d3inquirynr');
|
||||
} else {
|
||||
$inquiryNr = (int) Registry::get(Request::class)->getRequestEscapedParameter('d3inquirynr');
|
||||
$sWhere = 1;
|
||||
if ($inquiryNr) {
|
||||
$sWhere = ' oxinquirynr = ' . $inquiryNr;
|
||||
}
|
||||
|
||||
$sSelect = "SELECT oxid FROM ".getViewName('d3inquiry')." WHERE ".$sWhere." ORDER BY oxinquirydate DESC LIMIT 1";
|
||||
|
||||
return oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getOne($sSelect);
|
||||
return DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->getOne($sSelect);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
*/
|
||||
public function d3getLastInquiry()
|
||||
{
|
||||
$this->load($this->d3getLastInquiryId());
|
||||
@ -66,24 +82,30 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
}
|
||||
|
||||
/**
|
||||
* @return oxBasket
|
||||
* @return Basket
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function getBasket()
|
||||
{
|
||||
$oBasket = parent::getBasket();
|
||||
|
||||
if (false == $oBasket && oxRegistry::getConfig()->getActiveView()->getClassName() == 'd3dev') {
|
||||
if (false == $oBasket && Registry::getConfig()->getActiveView()->getClassKey() == 'd3dev') {
|
||||
$oBasket = $this->d3DevGetOrderBasket();
|
||||
}
|
||||
|
||||
return $oBasket;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
protected function _d3AddVouchers()
|
||||
{
|
||||
$sSelect = "SELECT oxid FROM oxvouchers WHERE oxorderid = ".oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->quote($this->getId()).";";
|
||||
$sSelect = "SELECT oxid FROM oxvouchers WHERE oxorderid = ". DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->quote($this->getId()).";";
|
||||
|
||||
$aResult = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getArray($sSelect);
|
||||
$aResult = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->getAll($sSelect);
|
||||
|
||||
foreach ($aResult as $aFields) {
|
||||
$oVoucher = oxNew('oxvoucher');
|
||||
@ -97,11 +119,14 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
*
|
||||
* @param bool $blStockCheck perform stock check or not (default true)
|
||||
*
|
||||
* @return oxBasket
|
||||
* @return Basket
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
protected function _getInquiryBasket($blStockCheck = true)
|
||||
{
|
||||
$this->_oOrderBasket = oxNew("oxBasket");
|
||||
/** @var Basket _oOrderBasket */
|
||||
$this->_oOrderBasket = oxNew(Basket::class);
|
||||
$this->_oOrderBasket->enableSaveToDataBase(false);
|
||||
|
||||
//setting recalculation mode
|
||||
@ -117,9 +142,9 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
$this->_oOrderBasket->setInquiryId($this->getId());
|
||||
|
||||
// setting basket currency order uses
|
||||
$aCurrencies = $this->getConfig()->getCurrencyArray();
|
||||
$aCurrencies = Registry::getConfig()->getCurrencyArray();
|
||||
foreach ($aCurrencies as $oCur) {
|
||||
if ($oCur->name == $this->oxorder__oxcurrency->value) {
|
||||
if ($oCur->name == $this->getFieldData('oxcurrency')) {
|
||||
$oBasketCur = $oCur;
|
||||
break;
|
||||
}
|
||||
@ -129,11 +154,11 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
$this->_oOrderBasket->setBasketCurrency($oBasketCur);
|
||||
|
||||
// set basket card id and message
|
||||
$this->_oOrderBasket->setCardId($this->oxorder__oxcardid->value);
|
||||
$this->_oOrderBasket->setCardMessage($this->oxorder__oxcardtext->value);
|
||||
$this->_oOrderBasket->setCardId($this->getFieldData('oxcardid'));
|
||||
$this->_oOrderBasket->setCardMessage($this->getFieldData('oxcardtext'));
|
||||
|
||||
if ($this->_blReloadDiscount) {
|
||||
$oDb = oxDb::getDb(oxDb::FETCH_MODE_ASSOC);
|
||||
$oDb = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC);
|
||||
// disabling availability check
|
||||
$this->_oOrderBasket->setSkipVouchersChecking(true);
|
||||
|
||||
@ -145,8 +170,8 @@ class d3_dev_d3inquiry extends d3_dev_d3inquiry_parent
|
||||
}
|
||||
} else {
|
||||
$this->_oOrderBasket->setDiscountCalcMode(false);
|
||||
$this->_oOrderBasket->setVoucherDiscount($this->oxorder__oxvoucherdiscount->value);
|
||||
$this->_oOrderBasket->setTotalDiscount($this->oxorder__oxdiscount->value);
|
||||
$this->_oOrderBasket->setVoucherDiscount($this->getFieldData('oxvoucherdiscount'));
|
||||
$this->_oOrderBasket->setTotalDiscount($this->getFieldData('oxdiscount'));
|
||||
}
|
||||
|
||||
return $this->_oOrderBasket;
|
@ -9,15 +9,19 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
use OxidEsales\Eshop\Application\Model\ArticleList;
|
||||
|
||||
class d3_dev_d3inquiryarticle extends d3_dev_d3inquiryarticle_parent
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
* @return null|ArticleList
|
||||
*/
|
||||
public function getCustomerAlsoBoughtThisProducts()
|
||||
{
|
||||
@ -33,6 +37,6 @@ class d3_dev_d3inquiryarticle extends d3_dev_d3inquiryarticle_parent
|
||||
*/
|
||||
public function isBundle()
|
||||
{
|
||||
return ( bool ) $this->d3inquiryarticles__oxisbundle->value;
|
||||
return ( bool ) $this->getFieldData('oxisbundle');
|
||||
}
|
||||
}
|
@ -1,4 +1,9 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
@ -9,8 +14,8 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
@ -18,8 +23,8 @@ class d3_dev_oxbasket extends d3_dev_oxbasket_parent
|
||||
{
|
||||
public function deleteBasket()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value
|
||||
|| false == oxRegistry::getConfig()->getConfigParam('blD3DevAvoidDelBasket')
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()
|
||||
|| false == Registry::getConfig()->getConfigParam('blD3DevAvoidDelBasket')
|
||||
) {
|
||||
parent::deleteBasket();
|
||||
}
|
@ -9,11 +9,13 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
class d3_dev_oxbasketitem extends d3_dev_oxbasketitem_parent
|
||||
{
|
||||
public function d3ClearArticle()
|
||||
@ -21,12 +23,18 @@ class d3_dev_oxbasketitem extends d3_dev_oxbasketitem_parent
|
||||
$this->_oArticle = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws \OxidEsales\Eshop\Core\Exception\ArticleException
|
||||
* @throws \OxidEsales\Eshop\Core\Exception\ArticleInputException
|
||||
* @throws \OxidEsales\Eshop\Core\Exception\NoArticleException
|
||||
*/
|
||||
public function getTitle()
|
||||
{
|
||||
$oArticle = $this->getArticle();
|
||||
$this->_sTitle = $oArticle->oxarticles__oxtitle->value;
|
||||
$this->_sTitle = $oArticle->getFieldData('oxtitle');
|
||||
|
||||
if ($oArticle->oxarticles__oxvarselect->value) {
|
||||
if ($oArticle->getFieldData('oxvarselect')) {
|
||||
$this->_sTitle = $this->_sTitle . ', ' . $this->getVarSelect();
|
||||
}
|
||||
|
@ -1,4 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
use OxidEsales\Eshop\Application\Model\OrderArticle;
|
||||
use OxidEsales\Eshop\Application\Model\Voucher;
|
||||
use OxidEsales\Eshop\Core\DatabaseProvider;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
||||
use OxidEsales\Eshop\Core\Model\ListModel;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
use OxidEsales\Eshop\Core\Request;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
@ -9,8 +21,8 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
@ -25,8 +37,10 @@ class d3_dev_oxorder extends d3_dev_oxorder_parent
|
||||
$oBasket = $this->_getOrderBasket();
|
||||
|
||||
// unsetting bundles
|
||||
/** @var ListModel $oOrderArticles */
|
||||
$oOrderArticles = $this->getOrderArticles();
|
||||
foreach ($oOrderArticles as $sItemId => $oItem) {
|
||||
/** @var $oItem OrderArticle */
|
||||
if ($oItem->isBundle()) {
|
||||
$oOrderArticles->offsetUnset($sItemId);
|
||||
}
|
||||
@ -45,20 +59,25 @@ class d3_dev_oxorder extends d3_dev_oxorder_parent
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* @throws DatabaseConnectionException
|
||||
*/
|
||||
public function d3getLastOrderId()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getRequestParameter('d3ordernr')) {
|
||||
$sWhere = ' oxordernr = ' . (int) oxRegistry::getConfig()->getRequestParameter('d3ordernr');
|
||||
} else {
|
||||
$orderNr = (int) Registry::get(Request::class)->getRequestEscapedParameter('d3ordernr');
|
||||
$sWhere = 1;
|
||||
if ($orderNr) {
|
||||
$sWhere = ' oxordernr = ' . $orderNr;
|
||||
}
|
||||
|
||||
$sSelect = "SELECT oxid FROM ".getViewName('oxorder')." WHERE ".$sWhere." ORDER BY oxorderdate DESC LIMIT 1";
|
||||
|
||||
return oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getOne($sSelect);
|
||||
return DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->getOne($sSelect);
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
public function d3getLastOrder()
|
||||
{
|
||||
$this->load($this->d3getLastOrderId());
|
||||
@ -66,27 +85,31 @@ class d3_dev_oxorder extends d3_dev_oxorder_parent
|
||||
}
|
||||
|
||||
/**
|
||||
* @return oxBasket
|
||||
* @return d3_dev_oxbasket|\OxidEsales\Eshop\Application\Model\Basket
|
||||
*/
|
||||
public function getBasket()
|
||||
{
|
||||
$oBasket = parent::getBasket();
|
||||
|
||||
if (false == $oBasket && oxRegistry::getConfig()->getActiveView()->getClassName() == 'd3dev') {
|
||||
if (false == $oBasket && Registry::getConfig()->getActiveView()->getClassKey() == 'd3dev') {
|
||||
$oBasket = $this->d3DevGetOrderBasket();
|
||||
}
|
||||
|
||||
return $oBasket;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DatabaseConnectionException
|
||||
* @throws DatabaseErrorException
|
||||
*/
|
||||
protected function _d3AddVouchers()
|
||||
{
|
||||
$sSelect = "SELECT oxid FROM oxvouchers WHERE oxorderid = ".oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->quote($this->getId()).";";
|
||||
$sSelect = "SELECT oxid FROM oxvouchers WHERE oxorderid = ".DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->quote($this->getId()).";";
|
||||
|
||||
$aResult = oxDb::getDb(oxDb::FETCH_MODE_ASSOC)->getArray($sSelect);
|
||||
$aResult = DatabaseProvider::getDb(DatabaseProvider::FETCH_MODE_ASSOC)->getAll($sSelect);
|
||||
|
||||
foreach ($aResult as $aFields) {
|
||||
$oVoucher = oxNew('oxvoucher');
|
||||
$oVoucher = oxNew(Voucher::class);
|
||||
$oVoucher->load($aFields['oxid']);
|
||||
$this->_aVoucherList[$oVoucher->getId()] = $oVoucher;
|
||||
}
|
@ -9,15 +9,19 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
namespace D3\Devhelper\Modules\Application\Model;
|
||||
|
||||
use OxidEsales\Eshop\Application\Model\ArticleList;
|
||||
|
||||
class d3_dev_oxorderarticle extends d3_dev_oxorderarticle_parent
|
||||
{
|
||||
/**
|
||||
* @return array
|
||||
* @return null|ArticleList
|
||||
*/
|
||||
public function getCustomerAlsoBoughtThisProducts()
|
||||
{
|
@ -1,4 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace D3\Devhelper\Modules\Core;
|
||||
|
||||
use D3\Devhelper\Modules\Application\Model as ModuleModel;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
|
||||
/**
|
||||
* This Software is the property of Data Development and is protected
|
||||
* by copyright law - it is NOT Freeware.
|
||||
@ -9,21 +15,21 @@
|
||||
*
|
||||
* http://www.shopmodule.com
|
||||
*
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <ds@shopmodule.com>
|
||||
* @copyright © D³ Data Development, Thomas Dartsch
|
||||
* @author DÂł Data Development - Daniel Seifert <info@shopmodule.com>
|
||||
* @link http://www.oxidmodule.com
|
||||
*/
|
||||
|
||||
class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
{
|
||||
/**
|
||||
* @param d3_dev_oxorder $oOrder
|
||||
*
|
||||
* @param ModuleModel\d3_dev_oxorder $oOrder
|
||||
* @param $sType
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function d3GetOrderMailContent($oOrder, $sType)
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value) {
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -57,9 +63,9 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
|
||||
// send confirmation to shop owner
|
||||
// send not pretending from order user, as different email domain rise spam filters
|
||||
$this->setFrom($oShop->oxshops__oxowneremail->value);
|
||||
$this->setFrom($oShop->getFieldData('oxowneremail'));
|
||||
|
||||
$oLang = oxRegistry::getLang();
|
||||
$oLang = Registry::getLang();
|
||||
$iOrderLang = $oLang->getObjectTplLanguage();
|
||||
|
||||
// if running shop language is different from admin lang. set in config
|
||||
@ -71,6 +77,7 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
$this->setSmtp($oShop);
|
||||
|
||||
// create messages
|
||||
/** @var \Smarty $oSmarty */
|
||||
$oSmarty = $this->_getSmarty();
|
||||
$this->setViewData("order", $oOrder);
|
||||
|
||||
@ -81,13 +88,15 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
}
|
||||
|
||||
/**
|
||||
* @param d3_dev_d3inquiry $oInquiry
|
||||
* @param ModuleModel\d3_dev_d3inquiry $oInquiry
|
||||
*
|
||||
* @param $sType
|
||||
*
|
||||
* @return mixed|string
|
||||
*/
|
||||
public function d3GetInquiryMailContent($oInquiry, $sType)
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value) {
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()) {
|
||||
return '';
|
||||
}
|
||||
|
||||
@ -121,9 +130,9 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
|
||||
// send confirmation to shop owner
|
||||
// send not pretending from order user, as different email domain rise spam filters
|
||||
$this->setFrom($oShop->oxshops__oxowneremail->value);
|
||||
$this->setFrom($oShop->getFieldData('oxowneremail'));
|
||||
|
||||
$oLang = oxRegistry::getLang();
|
||||
$oLang = Registry::getLang();
|
||||
$iOrderLang = $oLang->getObjectTplLanguage();
|
||||
|
||||
// if running shop language is different from admin lang. set in config
|
||||
@ -135,6 +144,7 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
$this->setSmtp($oShop);
|
||||
|
||||
// create messages
|
||||
/** @var \Smarty $oSmarty */
|
||||
$oSmarty = $this->_getSmarty();
|
||||
$this->setViewData("inquiry", $oInquiry);
|
||||
|
||||
@ -146,7 +156,7 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
|
||||
protected function _sendMail()
|
||||
{
|
||||
if (oxRegistry::getConfig()->getActiveShop()->oxshops__oxproductive->value) {
|
||||
if (Registry::getConfig()->getActiveShop()->isProductiveMode()) {
|
||||
return parent::_sendMail();
|
||||
}
|
||||
|
||||
@ -177,7 +187,6 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->_aRecipients = $aRecipients;
|
||||
}
|
||||
|
||||
@ -223,10 +232,10 @@ class d3_dev_oxemail extends d3_dev_oxemail_parent
|
||||
|
||||
public function getNewRecipient($sMailAddress)
|
||||
{
|
||||
if (oxRegistry::getConfig()->getConfigParam('blD3DevBlockMails')) {
|
||||
if (Registry::getConfig()->getConfigParam('blD3DevBlockMails')) {
|
||||
return false;
|
||||
} elseif (oxRegistry::getConfig()->getConfigParam('sD3DevRedirectMail')) {
|
||||
return trim(oxRegistry::getConfig()->getConfigParam('sD3DevRedirectMail'));
|
||||
} elseif (Registry::getConfig()->getConfigParam('sD3DevRedirectMail')) {
|
||||
return trim(Registry::getConfig()->getConfigParam('sD3DevRedirectMail'));
|
||||
}
|
||||
|
||||
return $sMailAddress;
|
@ -1,10 +1,19 @@
|
||||
<?php
|
||||
|
||||
use D3\Devhelper\Modules\Core as ModuleCore;
|
||||
use D3\Devhelper\Modules\Application\Controller as ModuleController;
|
||||
use D3\Devhelper\Modules\Application\Model as ModuleModel;
|
||||
use OxidEsales\Eshop\Application\Controller as OxidController;
|
||||
use OxidEsales\Eshop\Application\Model as OxidModel;
|
||||
use OxidEsales\Eshop\Core as OxidCore;
|
||||
use OxidEsales\Eshop\Core\Registry;
|
||||
|
||||
/**
|
||||
* Metadata version
|
||||
*/
|
||||
$sMetadataVersion = '1.1';
|
||||
$sMetadataVersion = '2.0';
|
||||
|
||||
$sStyle = class_exists('d3dev') ? "background-color: darkred; color: white; padding: 0 10px;" : "";
|
||||
$sStyle = class_exists(D3\Devhelper\Application\Controller\d3dev::class) ? "background-color: darkred; color: white; padding: 0 10px;" : "";
|
||||
|
||||
/**
|
||||
* Module information
|
||||
@ -12,13 +21,13 @@ $sStyle = class_exists('d3dev') ? "background-color: darkred; color: white; padd
|
||||
$aModule = array(
|
||||
'id' => 'd3dev',
|
||||
'title' =>
|
||||
(class_exists('d3utils') ? d3utils::getInstance()->getD3Logo() : 'D³') .
|
||||
' <span style="'.$sStyle.'">TPL Development Tool</span>',
|
||||
(class_exists(D3\ModCfg\Application\Model\d3utils::class) ? D3\ModCfg\Application\Model\d3utils::getInstance()->getD3Logo() : 'D³') .
|
||||
' <span style="'.$sStyle.';">TPL Development Tool</span>',
|
||||
'description' => array(
|
||||
'de' => '<script type="text/javascript"><!--
|
||||
function showNote() {
|
||||
var _oElem = document.getElementById("secnote");
|
||||
if (_oElem.style.display == "block") {
|
||||
if (_oElem.style.display === "block") {
|
||||
_oElem.style.display = "none";
|
||||
} else {
|
||||
_oElem.style.display = "block";
|
||||
@ -28,37 +37,37 @@ $aModule = array(
|
||||
<p style="background-color: darkred; padding: 5px;"><a href="#" style="text-decoration: underline; color: white;" onclick="showNote(); return false;"><b>Sicherheitshinweis</b></a></p>
|
||||
<p style="display: none; background-color: darkred; color: white; padding: 5px;" id="secnote">Diese Shoperweiterung stellt Entwicklungshilfen zur Verfügung, die im Livebetrieb sicherheitskritisch sein können. Es können Kunden- und Bestelldaten ausgelesen und auch Shopfunktionen manipuliert werden. Aktivieren Sie diese Erweiterung daher nur in einem Umfeld, in dem Sie Missbrauch ausschließen können. Für entstandene Schäden lehnen wir jede Haftung ab.</p>
|
||||
<ul><li>unterbindet Löschen des Warenkorbs nach Bestellabschluss</li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=thankyou&d3dev=1&d3ordernr=" target="_new">Thankyou-Seite ist ohne Bestellung aufrufbar*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=thankyou&d3dev=1&d3ordernr=" target="_new">Thankyou-Seite ist ohne Bestellung aufrufbar*</a></li>'.
|
||||
'<li>Mail-Templates können im Browser ausgegeben werden'.
|
||||
'<ul>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=owner_html&d3ordernr=" target="_new">Order Owner HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=owner_plain&d3ordernr=" target="_new">Order Owner Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=user_html&d3ordernr=" target="_new">Order User HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=user_plain&d3ordernr=" target="_new">Order User Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=owner_html&d3inquirynr=" target="_new">Inquiry Owner HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=owner_plain&d3inquirynr=" target="_new">Inquiry Owner Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=user_html&d3inquirynr=" target="_new">Inquiry User HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.oxRegistry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=user_plain&d3inquirynr=" target="_new">Inquiry User Plain*</a></li></ul>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=owner_html&d3ordernr=" target="_new">Order Owner HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=owner_plain&d3ordernr=" target="_new">Order Owner Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=user_html&d3ordernr=" target="_new">Order User HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showOrderMailContent&type=user_plain&d3ordernr=" target="_new">Order User Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=owner_html&d3inquirynr=" target="_new">Inquiry Owner HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=owner_plain&d3inquirynr=" target="_new">Inquiry Owner Plain*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=user_html&d3inquirynr=" target="_new">Inquiry User HTML*</a></li>'.
|
||||
'<li><a style="text-decoration: underline;" href="'.Registry::getConfig()->getCurrentShopUrl(false).'index.php?cl=d3dev&fnc=showInquiryMailContent&type=user_plain&d3inquirynr=" target="_new">Inquiry User Plain*</a></li></ul>'.
|
||||
'</li>'.
|
||||
'<li>blockiert übers Framework versendete Mails oder leitet diese um</li>'.
|
||||
'</ul><br>Jede dieser Optionen muss aus Sicherheitsgründen unter "Einstell." aktiviert werden. Weiterhin darf der Shop nicht im Produktivmodus betrieben werden.<br><br>'.
|
||||
'* Ordernummer an URL ergänzen, wenn bestimmte Bestellungen angezeigt werden sollen',
|
||||
'en' => ''),
|
||||
// 'thumbnail' => 'picture.png',
|
||||
'version' => '1.2.0.0',
|
||||
'version' => '2.0.0.0',
|
||||
'author' => 'D³ Data Development (Inh.: Thomas Dartsch)',
|
||||
'email' => 'support@shopmodule.com',
|
||||
'url' => 'http://www.oxidmodule.com/',
|
||||
'extend' => array(
|
||||
'thankyou' => 'd3/d3dev/modules/controllers/d3_dev_thankyou',
|
||||
'oxorder' => 'd3/d3dev/modules/models/d3_dev_oxorder',
|
||||
'oxorderarticle' => 'd3/d3dev/modules/models/d3_dev_oxorderarticle',
|
||||
'oxemail' => 'd3/d3dev/modules/models/d3_dev_oxemail',
|
||||
'oxbasket' => 'd3/d3dev/modules/models/d3_dev_oxbasket',
|
||||
'oxbasketitem' => 'd3/d3dev/modules/models/d3_dev_oxbasketitem',
|
||||
OxidController\ThankYouController::class => ModuleController\d3_dev_thankyou::class,
|
||||
OxidModel\Order::class => ModuleModel\d3_dev_oxorder::class,
|
||||
OxidModel\OrderArticle::class => ModuleModel\d3_dev_oxorderarticle::class,
|
||||
OxidCore\Email::class => ModuleCore\d3_dev_oxemail::class,
|
||||
OxidModel\Basket::class => ModuleModel\d3_dev_oxbasket::class,
|
||||
OxidModel\BasketItem::class => ModuleModel\d3_dev_oxbasketitem::class,
|
||||
),
|
||||
'files' => array(
|
||||
'd3dev' => 'd3/d3dev/controllers/d3dev.php',
|
||||
'controllers' => array(
|
||||
'd3dev' => \D3\Devhelper\Application\Controller\d3dev::class,
|
||||
),
|
||||
'templates' => array(
|
||||
),
|
||||
@ -102,6 +111,6 @@ $aModule = array(
|
||||
|
||||
|
||||
if (class_exists('d3inquiry')) {
|
||||
$aModule['extend']['d3inquiry'] = 'd3/d3dev/modules/models/d3_dev_d3inquiry';
|
||||
$aModule['extend']['d3inquiryarticle'] = 'd3/d3dev/modules/models/d3_dev_d3inquiryarticle';
|
||||
$aModule['extend']['d3inquiry'] = ModuleModel\d3_dev_d3inquiry::class;
|
||||
$aModule['extend']['d3inquiryarticle'] = ModuleModel\d3_dev_d3inquiryarticle::class;
|
||||
}
|
Reference in New Issue
Block a user