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
| <?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 |