Zum Inhalt

Konfiguration

Einfache Konfiguration

Die grundlegende Konfiguration erfolgt in der Datei custom/config.php und muss dort über ein Objekt der Klasse \Areanet\PIM\Classes\Config() an \Areanet\PIM\Classes\Config\Factory übergeben werden. Die Factory-Klasse stellt dem Contentfly CMS anhand des Server-Namens die entsprechenden Konfigurationseinstellungen bereit. Damit ist es möglich für verschiedene Umgebungen (z.B. Lokal, Testserver, Live-Server,...) unterschiedliche Konfigurationseinstellungen vorzuhalten. Der einfachste Aufbau der Konfigurationsdatei sieht wie folgt aus:

custom/config.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php

use \Areanet\PIM\Classes\Config\Factory;
$configFactory = Factory::getInstance();

/*
* Lokaler Server
*/

$configDefault = new \Areanet\PIM\Classes\Config();

$configDefault->DB_HOST = 'localhost';
$configDefault->DB_NAME = 'db';
$configDefault->DB_USER = 'user';
$configDefault->DB_PASS = 'pass';
$configDefault->DB_GUID_STRATEGY = true;

$configFactory->setConfig($configDefault);

Multiple Konfigurationen

Innherhalb der Konfigurationsdatei können beliebig viele Umgebungen (z.B. lokale Entwicklungsumgebung, Testserver, Live-Server, ...) anhand des Server-Names verwaltet werden. Die unterschiedllichen Konfigurationseinstellungen können dabei voneinander erben, so dass nur die Unterschiede zwischen zwei Umgebungen angepasst werden müssen.

custom/config.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

use \Areanet\PIM\Classes\Config\Factory;
$configFactory = Factory::getInstance();

/*
* Lokaler Server
*/

$configDefault = new \Areanet\PIM\Classes\Config();
...

/*
 * Staging Server
 */
$configStaging = new \Areanet\PIM\Classes\Config('staging.server.com', $configDefault);

$configStaging->DB_HOST = 'localhost';
$configStaging->DB_NAME = 'staging_db';
$configStaging->DB_USER = 'staging_user';
$configStaging->DB_PASS = 'staging_pass';

$configFactory->setConfig($configStaging);

An die Klasse \Areanet\PIM\Classes\Config($serverName, $parentConfig) können zwei optionale Parameter übergeben werden.

Parameter Beschreibung
$serverName Server-Name für die die Konfiguration gelten soll. Das Contentfly CMS ordnet anhand der PHP-Server-Laufzeitvariablen SERVER_NAME die korrekte Konfiguration zu. Wird keine Übereinstimmung gefunden, wir die Standard-Konfiguration geladen.
$parentConfig Wird $parentConfig angegeben, werden alle Einstellung aus dieser Konfiguration übernommen und können gezielt überschrieben werden.

Zugriff über das Ionic SDK

Um über das Ionic SDK auf das Contentfly CMS zugreifen zu können, müssen CORS-Requests freigeschaltet sein:

custom/config.php

1
2
3
4
5
<?php

$configDefault->APP_ALLOW_ORIGIN            = '*';
$configDefault->APP_ALLOW_HEADERS           = 'content-type, x-xsrf-token, appcms-token, authorization';
$configDefault->APP_ALLOW_CREDENTIALS       = true;

Referenz

Authentifizierung

Das Contentfly CMS bietet die Möglichkeit die Browser-Verbindung zusätzlich über eine HTTP-Authentifizierung "abzusichern", z.B. für Testumgebungen.

Eigenschaft Typ Standard Beschreibung
APP_HTTP_AUTH_USER String null Benutzername für die HTTP-Authentifizierung
APP_HTTP_AUTH_PASS String null Passwort für die HTTP-Authentifizierung
$APP_MASTER_PASSWORD String null Setzen eines globalen Master-Passworts, um sich in jeden Account einloggen zu können (Achtung: Sicherheits- und Datenschutsrisiko!)

Backend

Eigenschaft Typ Standard Beschreibung
APP_DEBUG Boolean false Aktiviert Debug-Ausgabe bei API-Aufrufen. Sollte in der Produktivumgebung deaktiviert werden.
APP_ENABLE_SCHEMA_CACHE Boolean true Das Generieren der Schema-Dateien aus den Entity-Annotations erfordert einiges an Rechenaufwand. Aus Performance-Gründen sollte das Caching im Produktivmodus aktiviert werden.
$APP_CACHE_DRIVER String filesystem Mögliche Werte filesystem, apc, memcached - der Cache wird nur verwendet wenn APP_DEBUG auf false gesetzt ist.
APP_TOKEN_TIMEOUT Integer 1800 Standard-Gültigkeitsdauer für API-TOKEN in ms. Kann über die Benutzer-/Gruppeneinstellung individuell angepasst werden
APP_CHECK_TOKEN_TIMEOUT Boolean true Überprüfung Gültigkeitsdauer bei API-TOKEN
APP_MAILTO String Standard-E-Mail-Adresse für eventuellen PHP-Mailversand
APP_MAILFROM String Standard-E-Mail-Adresse für eventuellen PHP-Mailversand
APP_TIMEZONE String Europe/Berlin Standard-PHP-Zeitzone
APP_ENABLE_XSENDFILE Boolean false Aktivier x_sendfile (Apache/nginx-Modul) für die Auslieferung von Dateien über file/get/ID. Kann mit zusätzlicher Konfigurations-/Anpassungsaufwand am Server verbunden sein.
APP_AUTOGENERATE_PROXIES Boolean true Doctrine ORM erstellt Proxy-Klassen automatisch zur Laufzeit, ansonsten müssen die Proxy-Klassen manuell per Konsole erstellt werden.

CORS UND SECURITY

Cross-Origin Resource Sharing: Erlaubt den Zugriff von Webclients über andere Domains.

Eigenschaft Typ Standard Beschreibung
APP_ALLOW_ORIGIN String null Setzt eine Domain, über die CORS-Requests erlaubt sind, z.B. 'domain.de' oder '*'
APP_ALLOW_CREDENTIALS Boolean false Erlaubt die Übergabe von Cookies bei CORS-Requests. Zusätzlich muss im Client withCredentials aktiviert sein.
APP_ALLOW_METHODS String post,get Erlaubte HTTP-Methoden für einen CORS-Request
APP_ALLOW_HEADERS String content-type, x-xsrf-token Erlaubte HTTP-Header für einen CORS-Reques
APP_MAX_AGE Integer 0 Zeitdauer in der Prefligth-Request bei CORS-Anfragen gecached werden.
APP_CS_POLICY String default-src 'self' 'unsafe-inline' 'unsafe-eval'; HTTP-Header Content-Security-Policy

Dateien

Eigenschaft Typ Standard Beschreibung
FILE_PROCESSORS Array array('\Areanet\PIM\Classes\File\Processing\Image') Welche Dateiverarbeitungen sind im System registriert. Diese generieren abhängig vom Dateityp z.B. Vorschaubilder. Mitgeliefert werden automatische Bildgenerierungen über \Areanet\PIM\Classes\File\Processing\Image' für GDLib und \Areanet\PIM\Classes\File\Processing\ImageMagick_ für ImageMagick
FILE_IMAGE_QUALITY_JPEG Integer 90 Qualität der JPEG-Komprimierung (0=höchste Komprimierung..100=keine Komprimierung)
FILE_IMAGE_QUALITY_PNG Integer 0 Qualität der PNG-Komprimierung (0=keine Komprimierung .. 9=höchste Komprimierung)
FILE_HASH_MUST_UNIQUE Boolean false Legt fest, ob eine Datei (anhand des Datei-Hashes) nur einmal physikalisch vorhanden sein darf.
FILE_CACHE_LIFETIME Integer 604800 Laufzeit für den HTTP-Cache bei Dateiabrufen über z.B. /file/get/12 in Sekunden - der Standard ist auf 7 Tage gesetzt
IMAGEMAGICK_EXECUTABLE String convert Pfad zum ausführbaren ImageMagick-Befehl auf dem Server, sollte FILE_PROCESSORS auf array('\Areanet\PIM\Classes\File\Processing\ImageMagick') gestellt sein.

Datenbank

Eigenschaft Typ Standard Beschreibung
DB_HOST String -- Datenbank-Host
DB_NAME String -- Datenbank-Name
DB_USER String -- Datenbank-Benutzer
DB_PASS String -- Datenbank-Passwort
DB_CHARSET String utf8 Zeichensatz der Datenbank-Verbindung
DB_NESTED_LEVELS Integer 3 Bis zu welcher Ebene/Tiefe werden untergeordnete Objekte über die API mitausgegeben. Die Anzahl wirkt sich auf die Performance aus (je mehr Ebenen geladen werden, desto schlechter die Performance)
DB_GUID_STRATEGY Boolean true Neue Objekte werden standardmäßig mit UUIDs als Strings angelegt (Doctrine: @ORM\GeneratedValue(strategy=UUID)). Ansonsten werden Integer als Auto-Increment-Werte verwendet (Doctrine: @ORM\GeneratedValue(strategy=AUTO)). Nur bei UUIDs ist die automatische Synchronisations mit Clients (z.B. über das iOS- oder Android-SDK) gewährleistet!
DB_ID_INTEGER_TYPE String integer Feldtyp des ID-Feldes bei Autoincrement (DB_GUID_STRATEGY = false), kann z.B. auf bigint gestellt werden

Frontend

Eigenschaft Typ Standard Beschreibung
FRONTEND_TITLE String Contentfly CMS Zeichenkette, die als Titel angezeigt werden soll
FRONTEND_WELCOME String Willkommen im Contentfly CMS Zeichenkette, die als Willkommensseite nach dem Login angezeigt werden soll
FRONTEND_URL String / Virtueller Pfad, unter dem das Contentfly CMS über eine URL erreichbar sein soll. Im Standard ist das Login des Contentfly CMS unter der installierten Domain direkt zu erreichen, z.B. www.das-Contentfly CMS.de. Mit der Angabe von admin wäre das Login/Frontend unter www.das-Contentfly CMS.de/admin zu erreichen. Somit könnte unter www.das-Contentfly CMS.de/ eine individuelle Programmierung erfolgen.
FRONTEND_CUSTOM_NAVIGATION (deprecated) Boolean false Ist der Wert auf true, kann über das Contentfly CMS-UI eine benutzerdefinierte Navigation für die Entitäten erstellt werden.
FRONTEND_CUSTOM_LOGO Boolean false Ist der Wert auf true, wird im Frontend das Logo vom Pfad /custom/Frontend/ui/default/img/logo.png geladen.
FRONTEND_CUSTOM_LOGIN_BG Boolean false Ist der Wert auf true, wird im Loginfenster des Frontends das Hintergrundbild vom Pfad /custom/Frontend/ui/default/img/bg_login.jpg geladen.
FRONTEND_FORM_IMAGE_SQUARE_PREVIEW Boolean true Alle Vorschaubilder in Listen und Formularen werden quadratisch zugeschnitten. Bei false werden die original Dimensionen beibehalten
FRONTEND_ITEMS_PER_PAGE Integer 20 Anzahl von Einträgen pro Seite in den Auflistungen
FRONTEND_UI String default Legt fest, welches Frontend als Benutzeroberfläche geladen werden soll. Standardmäßig ist das das mitgelieferte AngularJS-Frontend im Ordner default im Pfad public/ui
FRONTEND_LOGIN_REDIRECT String / AngularJS-Route, auf die nach dem Login verwiesen wird.
FRONTEND_SHOW_ID_IN_LIST Integer 1 Zeigt die ID des Datensatzes in der Auflistung an der angegebenen Position an (0 = ID wird nicht angezeigt)
FRONTEND_SHOW_OWNER_IN_LIST Integer 1000 Zeigt den Besitzer des Datensatzes in der Auflistung an der angegebenen Position an (0 = Besitzer wird nicht angezeigt)
FRONTEND_TAB_GENERAL_NAME String Allgemein Name des Standard-Tabs im Bearbeitungsformular

Import/Export

Eigenschaft Typ Standard Beschreibung
APP_EXPORT_METHODS array ('csv' => 'CSV', 'excel' => 'EXCEL', 'json' => 'JSON', 'xml' => 'XML') Definition der Exportformaten, kann in Verbindung mit einem eigenen Export-Controller ergänzt/überschrieben werden.
APP_EXPORT_CONTROLLER String Areanet\PIM\Controller\ExportController Klasse des Export-Controllers, kann durch einen eigenen Export-Controller ersetzt werden.

Mehrspachigkeit

Eigenschaft Typ Standard Beschreibung
APP_LANGUAGES array () Wollen Sie mehrsprachige Entitäten verwenden, müssen Sie die gewünschten Sprachen definieren, z.B. array('de', 'en')

Push-Notifcations

Eigenschaft Typ Standard Beschreibung
PUSH_GOOGLE_KEY String null API-Key von Google zum Versenden von Push-Notifications
PUSH_APPLE_CERT String null Relativer Pfad/Dateiname des Push-Zertifikates unter /custom
PUSH_APPLE_SANDBOX Boolean false Versendung von Test-Push-Notifications über das Sandbox-Gateway von Apple

Sicherheit

Eigenschaft Typ Standard Beschreibung
APP_FORCE_SSL Boolean false Erzwingt eine SSL-Verbindung, bzw. leitet http-Aufrufe automatisch auf https um.

Folgende Einstellungen sind nur relevant, wenn String-/Text-Properties mit der Option encoded = true konfiguriert sind.

Eigenschaft Typ Standard Beschreibung
SECURITY_CIPHER_KEY String Wenn Verschlüsselung bei Textfeldern verwendet wird, muss ein Schlüssel/Passwort zwingend gesetzt und darf im nachhinein nicht mehr geändert werden!
SECURITY_CIPHER_METHOD String AES-128-ECB Verschlüsselungsmethode, sollte nicht geändert werden