May '21 6

Sehr geehrte Kunden,

am Freitag, dem 14.05.2021, ist unser Büro nicht besetzt.
In dringenden Fällen senden Sie bitte eine E-Mail an

Ihr D3 Team

Posted by Daniela Biewald

May '21 4
Heute haben wir eine Empfehlung aus der Technik, die wir in unseren Projekten umsetzen und sicher auch für Andere interessant ist.

Der Shop speichert seine Einstellungen (Zugangsdaten und Konfigurationen) in der Datei config.inc.php. Darin sind sensible Daten enthalten (z.B. Zugangsdaten zur Datenbank). Deshalb soll diese Datei normalerweise nicht in die Versionsverwaltung aufgenommen werden. Nun können darin aber auch Konfigurationseinstellungen enthalten sein können, die aus diversen Gründen gesichert werden sollten.

Um diesen Konflikt zu lösen, sollten sensible projektspezifische Daten nur dynamisch in die config.inc.php eingefügt werden. Ein möglicher Weg hierfür sind die Environment-Variablen. Diese werden global oder projektspezifisch auf dem Server gesetzt und können über $_ENV['…'] in die Shopkonfiguration eingebunden werden.

Für das Setzen der ENV-Variablen gibt es folgende Wege:
  • über $ set systemweit
  • über EXPORT command z.B. in der .bashrc
  • als SetEnv in .htaccess
  • mit putenv() in PHP-Scripten
  • als .env-Datei und Einbindung über ein PHP-Paket

Die meisten Möglichkeiten haben Vor- und Nachteile. So müssen die ENV-Variablen bei Aufrufen über den Webserver sowie auch bei Aufrufen über CLI (Terminal oder auch Cron-Aufrufe) verfügbar sein. Als unkomplizierte Lösung zeigt sich bislang die Verwendung der .env-Datei in Verbindung mit phpDotEnv.

Für die Einrichtung ist Folgendes auszuführen:

Dem Shopprojekt ist dieses Paket hinzuzufügen (Alternativen mit geänderten Aufrufen sind ebenfalls verfügbar):

composer require vlucas/phpdotenv

Im Shoproot wird die Datei .env mit diesem Inhalt angelegt. Diese Datei (und auch nur diese) wird Sammelbecken solcher sensiblen Daten werden:

### important notes
# use integer 0 or 1 for boolean values instead of false or true

### required
## Database
OXID_CONF_DBHOST="127.0.0.1"
OXID_CONF_DBPORT="3306"
OXID_CONF_DBNAME=""
OXID_CONF_DBUSER="${OXID_CONF_DBNAME}"
OXID_CONF_DBPWD=""

## URL and Paths
OXID_CONF_SHOPURL="https://www.myshop.com"
OXID_CONF_SSLSHOPURL="${OXID_CONF_SHOPURL}"
OXID_CONF_SHOPDIR="/www/htdocs/www.myshop.com.com/source"
OXID_CONF_COMPILEDIR="${OXID_CONF_SHOPDIR}/tmp"

### optional (disable, if unused)
## URL and Paths
OXID_CONF_ADMINSSLURL=""

## MISC
OXID_CONF_DEBUG=0
OXID_CONF_LOGERRORS=1
OXID_CONF_ERRORREPORTING=1
OXID_CONF_DISPLAYERRORS=0
# OXID_CONF_SKIPVIEWUSAGE=0


Die config.inc.php wird gleich in den ersten Zeilen wie folgt erweitert:

require_once __DIR__.DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';
$dotenv = \Dotenv\Dotenv::createImmutable(__DIR__.'/..');
$dotenv->load();
$dotenv->required([
'OXID_CONF_DBHOST', 'OXID_CONF_DBPORT', 'OXID_CONF_DBNAME',
'OXID_CONF_DBUSER', 'OXID_CONF_DBPWD', 'OXID_CONF_SHOPURL',
'OXID_CONF_SHOPDIR', 'OXID_CONF_COMPILEDIR'
])->notEmpty();


Alle weiteren Zeilen, die sensible oder installationsabhängige Daten enthalten, werden beispielhaft so umgebaut. Dies sollte für alle oben genannten Variablen durchgeführt werden:

// Database connection information
$this->dbType = 'pdo_mysql';
$this->dbHost = $_ENV['OXID_CONF_DBHOST']; // database host name
$this->dbPort = $_ENV['OXID_CONF_DBPORT']; // tcp port to which the database is bound
$this->dbName = $_ENV['OXID_CONF_DBNAME']; // database name
$this->dbUser = $_ENV['OXID_CONF_DBUSER']; // database user name
$this->dbPwd = $_ENV['OXID_CONF_DBPWD']; // database user password
$this->sShopURL = $_ENV['OXID_CONF_SHOPURL']; // eShop base url, required
$this->sSSLShopURL = $_ENV['OXID_CONF_SSLSHOPURL']; // eShop SSL url, optional
$this->sAdminSSLURL = $_ENV['OXID_CONF_ADMINSSLURL']; // eShop Admin SSL url, optional
$this->sShopDir = $_ENV['OXID_CONF_SHOPDIR'];
$this->sCompileDir = $_ENV['OXID_CONF_COMPILEDIR'];


Damit ist die Config-Datei ausreichend bereinigt und kann so nun ins Repository übernommen werden. Die .env-Datei sollte die Berechtigung 400 erhalten und darf nicht in die Versionsverwaltung aufgenommen werden. Dies kann durch einen Eintrag in der .gitignore sichergestellt werden. Als Kopiervorlage empfiehlt sich, statt dessen eine bereinigte .env.example im Repo abzulegen.

Sofern nötig, können auch für andere Fälle ENV-Variablen abgelegt werden. Denkbar ist dies z.B. für Lizenzschlüssel, die scriptbasiert im Shop hinterlegt werden.

Diese Integration ergänzt die bestehenden ENV-Variablen, sofern diese bisher nicht gesetzt wurden. Existieren diese schon aus anderen Quellen (z.B. .htaccess), bleiben diese unangetastet. Der Vorteil ergibt sich daraus, dass serverabhängig andere Einstellungen vorgegeben werden können, ohne dass die .env-Settings diese überschreiben dürfen.

Posted by Daniel Seifert

Apr '21 20
Für unser Modul "Unzer (Heidelpay)" gibt es ab sofort einen neuen Patch für die Shopversionen ab 6.0.1

Dieses Patch enthält folgenden Bugfix:
  • fehlende Artikel in Bestellbestätigungsmail durch ausverkauft-Status
Erwerben können Sie das Modul wie gewohnt über unseren Moduleshop.

Die E-Payment Komplettlösung

Posted by Daniela Biewald

Apr '21 13
Für unser Modul "Patch für die Shopversionen ab 6.0.0

Folgende Änderungen sind enthalten:
  • nicht funktionierendes Preisupdate bei EE-Subshops mit vererbten Preisen korrigiert
  • Hinweis für Preisimporte mit prozentualer Veränderung ergänzt
  • Dokumentation aktualisiert
Erwerben können Sie das Modul wie gewohnt über unseren Moduleshop.

Modul für den Import großer Artikelmengen aus einer Excel Datei

Posted by Daniela Biewald

Apr '21 6
Unsere Rufnummer +49 3721 268090 ist heute aufgrund einer Umstellung unserer Tk-Technik vorübergehend gestört.

Bitte nutzen Sie alternativ folgende Nummer:

+49 3721 339950

Vielen Dank!

Posted by Administrator

Mar '21 18
Für unser Modul "Kundenmanager" gibt es ab sofort ein neues Update für die Shopversionen 6.1.x

Folgende Änderungen sind enthalten:
  • erweiterte Konfigurationsprüfung integriert
  • CLI-Klasse für Konsolenaufrufe eingefügt
  • im Installationsprozess wird Zufallspasswort gesetzt
  • unnötige Prüfung für Plain-Template in Mail-Aktion entfernt (Plain kann aus HTML generiert werden)
  • "Einträge als erledigt markieren" ignoriert "Einträge nicht als erledigt markieren"-Option
Erwerben können Sie das Modul wie gewohnt in unserem Moduleshop.

Lassen Sie wiederkehrende Aufgaben automatisch nach frei definierbaren Regeln ausführen

Posted by Daniela Biewald

Mar '21 18
Für unser Modul "Kundenmanager" gibt es ab sofort ein neues Update für die Shopversionen 6.2.x

Folgende neue Funktionen sind enthalten:
  • erweiterte Konfigurationsprüfung integriert
  • Ausführungsabbruch mit passenden Fehlermeldungen bei Konfigurationsfehlern eingefügt
  • Debugausgaben werden auch bei Konsolenausführung gezeigt
  • statische Auswahllisten sind erweiterbar
  • Prüfung und Behandlung von Kompilierungsfehlern aufgrund fehlerhafter Smarty-Codes
  • Abfangen leerer Inhalte auf Grund von falsch encodeten Templatedateien
  • Profiling für CLI und GUI integriert
  • Historyeinträge können optional angelegt werden
  • globale Filter pro Shopmandant für Migrationsfälle konfigurierbar
Folgende Änderungen sind enthalten:
  • Bedingungen- und Aktioneninterfaces aktualisiert
  • Response-Script für automatische Ausführung als abgekündigt markiert
  • Exportdateinamen wird für gültige Dateinamen überarbeitet
  • Modul verwendet strict types
  • Remark anlegen optimiert
Folgende Fehler wurden behoben:
  • Bedingung "gesetzte Rechnungsnummer" korrigiert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Ordnernamen, die nicht aus Übersetzungen kommen, zeigen keine Fehlermeldung
  • nicht generierbare Statusmails korrigiert
  • Debugmodus verwendet SQL-Logger für optimierte Anzeige
  • nicht geladenes Manager-Objekt im Admincontroller korrigiert
  • "Einträge als erledigt markieren" ignoriert "Einträge nicht als erledigt markieren"-Option
Erwerben können Sie das Modul wie gewohnt in unserem Moduleshop.

Lassen Sie wiederkehrende Aufgaben automatisch nach frei definierbaren Regeln ausführen

Posted by Daniela Biewald

Mar '21 18
Für unser Modul "Auftragsmanager" gibt es ab sofort ein neues Update für die Shopversionen 6.1.x.

Folgende neue Funktionen sind enthalten:
  • erweiterte Konfigurationsprüfung integriert
  • Ausführungsabbruch mit passenden Fehlermeldungen bei Konfigurationsfehlern eingefügt
  • Debugausgaben werden auch bei Konsolenausführung gezeigt
  • statische Auswahllisten sind erweiterbar
  • Prüfung und Behandlung von Kompilierungsfehlern aufgrund fehlerhafter Smarty-Codes
  • Abfangen leerer Inhalte auf Grund von falsch encodeten Templatedateien
  • Profiling für CLI und GUI integriert
  • Historyeinträge können optional angelegt werden
Folgende Änderungen sind enthalten:
  • Bedingungen- und Aktioneninterfaces aktualisiert
  • Response-Script für automatische Ausführung als abgekündigt markiert
  • Exportdateinamen wird für gültige Dateinamen überarbeitet
  • Modul verwendet strict types
  • Remark anlegen optimiert
Folgende Fehler wurden behoben:
  • Bedingung "gesetzte Rechnungsnummer" korrigiert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Ordnernamen, die nicht aus Übersetzungen kommen, zeigen keine Fehlermeldung
  • nicht generierbare Statusmails korrigiert
  • Debugmodus verwendet SQL-Logger für optimierte Anzeige
  • nicht geladenes Manager-Objekt im Admincontroller korrigiert
  • "Einträge als erledigt markieren" ignoriert "Einträge nicht als erledigt markieren"-Option
Erwerben können Sie das Modul wie gewohnt in unserem Moduleshop.

Lassen Sie wiederkehrende Aufgaben automatisch nach frei definierbaren Regeln ausführen

Posted by Daniela Biewald

Mar '21 18
Für unser Modul "Auftragsmanager" gibt es ab sofort ein neues Update für die Shopversionen ab 6.2.0.

Folgende neue Funktionen sind enthalten:
  • erweiterte Konfigurationsprüfung integriert
  • Ausführungsabbruch mit passenden Fehlermeldungen bei Konfigurationsfehlern eingefügt
  • Debugausgaben werden auch bei Konsolenausführung gezeigt
  • statische Auswahllisten sind erweiterbar
  • Prüfung und Behandlung von Kompilierungsfehlern aufgrund fehlerhafter Smarty-Codes
  • Abfangen leerer Inhalte auf Grund von falsch encodeten Templatedateien
  • Profiling für CLI und GUI integriert
  • Historyeinträge können optional angelegt werden
  • globale Filter pro Shopmandant für Migrationsfälle konfigurierbar
Folgende Änderungen sind enthalten:
  • Bedingungen- und Aktioneninterfaces aktualisiert
  • Response-Script für automatische Ausführung als abgekündigt markiert
  • Exportdateinamen wird für gültige Dateinamen überarbeitet
  • Modul verwendet strict types
  • Remark anlegen optimiert
Folgende Fehler wurden behoben:
  • Bedingung "gesetzte Rechnungsnummer" korrigiert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Endlosschleifen bei Ausführung von finalizeOrder- und orderSave-Trigger verhindert
  • Ordnernamen, die nicht aus Übersetzungen kommen, zeigen keine Fehlermeldung
  • nicht generierbare Statusmails korrigiert
  • Debugmodus verwendet SQL-Logger für optimierte Anzeige
  • nicht geladenes Manager-Objekt im Admincontroller korrigiert
  • "Einträge als erledigt markieren" ignoriert "Einträge nicht als erledigt markieren"-Option
Erwerben können Sie das Modul wie gewohnt in unserem Moduleshop.

Lassen Sie wiederkehrende Aufgaben automatisch nach frei definierbaren Regeln ausführen

Posted by Daniela Biewald

Mar '21 15
Für unser Modul "Boniversum" gibt es ab sofort ein neues Update für die Shopversionen 6.0.0 - 6.2.x

Folgende Änderungen sind enthalten:
  • erforderliche Felder, die im Shop keine Pflichtfelder sind, werden an der zu prüfenden Zahlart zusätzlich abgefragt
    • funktioniert für alle Boniversum-Pflichtfelder
    • wenn die Felder unabhängig vom Pflichtfeld schon ausgefüllt sind, erfolgt keine zusätzliche Abfrage mehr
  • Templates für Verwendung in Flow- und Wave-Theme aktualisiert
  • Geburtsdatumauswahl zeigt komplette Monatsnamen anstelle der Ziffern
Erwerben können Sie das Modul wie gewohnt in unserem Moduleshop.

Posted by Daniela Biewald

(Page 1 of 81, totaling 810 entries)