Dokumentation DeDi-Log

Aus DeDi-Help

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

[bearbeiten] Erweiterung - Frontend-Logging

[bearbeiten] Allgemeines/Voraussetzungen

Diese Beschreibung soll helfen, das dedilog-Plugin für ein Frontend-Logging verwenden zu können.

Um Benutzeraktionen im Frontent zu loggen, muss das dedilog-Plugin installiert werden. Informationen zum Plugin und Download erhält man hier:

Download dedilog
Informationen zum Plugin
DEDI Standard Events

Bei der Installation des Plugins wird/kann leider ein falscher Eintrag in der DB erzeugt werden, der die Fehlermeldung

Warning: main(/home/www/XXX/html/backend/plugins/): failed to open stream: Success in /home/www/XXX/html/backend/inc/inc.plugin.php on line 33

verursacht. Dieser Fehler kann wie folgt behoben werden:


In der Tabelle PRÄFIX_backendmenu den Eintrag für das dedilog Plugin suchen (entry_langstring Wert = nav_dedilog) und den Wert in entry_url von


main.php?area=plugin&cms_plugin=dedilog/inc.log.php


ändern in


main.php?area=plugin&dedi_plugin=dedilog/inc.log.php




[bearbeiten] Plugin-Dateien

Um das Logging für den Frontend-Bereich zu erweitern, duplizieren wir die Datei lang/langstring_de.php und geben der duplizierten Datei einen eindeutigen (Projektbezogenen Namen). Im Beispiel nennen wir die Datei langstring_de_eigen.php.

Nun öffnen wir die Datei langstring_de.php und fügen am Ende der Datei folgenden PHP Code hinzu, um unsere duplizierte Datei in das dedi Plugin einzubinden in die darin befindlichen Inhalte zu inkludieren.

require_once("langstring_de_eigen.php");

Aus der Datei langstring_de_eigen.php löschen wir alles, sodass in der Datei nur noch folgendes steht:

 <?PHP
    $dedi_lang['log_'] = "";
 ?>

[bearbeiten] Datenbank

Das dedilog Plugin verwendet die Tabelle {PRÄFIX}_plug_log um die Log-Einträge zu speichern und die Tabelle {PRÄFIX}_values um die für das Plugin bekannten DEDI Events zu speichern.

Weitere Infos über Standard DEDI Events findet man unter

DEDI Events

Alle Standard DEDI Events, die es zum Zeitpunkt der Erstellung des Plugins gab, werden für den Backendbereich bereits berücksichtigt.

[bearbeiten] Funktionsprinzip zum ausführen von DEDI Events

(Funktionsweise wie ich Sie teilweise verstanden habe. Wenn etwas fehlt, bitte ergänzen oder ändern)

Um ein Event auszuführen, wird die Standard DEDI Funktion (vorhanden in fnc.general.php)

 fire_event('con_side_new', array('schluessel1' => 'wert1', 'schluessel' => 'wert2'));

verwendet.

Diese Funktion bekommt den Event-Namen und ein assoziatives Array mit Werten übergeben.

Der übergebene Event-Name wird in der Datenbanktabelle {PRÄFIX}_values ermittelt und der dazugehörige PHP Code (in der Spalte values) wird ausgeführt.

Die im Array übergebenen Werte können im auszuführenden, gespeicherten PHP Code verwendet werden.

[bearbeiten] Eigene Log-Events erstellen

Um in einem geschätzten Bereich des Frontends das Logging einzubauen, kann man eigene Events erstellen, die in der Log-Übersicht in der Administration dann ausgewertet werden.

So kann mann zum Beispiel speichern "Benutzer Meier hat Benutzerdaten aktualisiert."

Um eigene Events zu verwenden, müssen diese in der Datenbanktabelle {PRÄFIX}_values wie folgt angelegt werden:

Spalte Wert
idvalues autom. vergeben
idclient 0
idlang 0
group_name events
key1 EIGENER_EVENT_NAME
key2 actions
key3 log
key4
value
  include_once ($cfg_dedi['path'].'plugins/dedilog/class.con_log.php');
  if (!is_object ($log))
  {
      $log = &new con_log();
  }
  
  $log->write_log('EIGENER_EVENT_NAME');
conf_sortindex 0
conf_desc_langstring
conf_head_langstring
conf_input_type
conf_input_type_val
conf_input_type_langstring
conf_visible

EIGENER_EVENT_NAME ist die eindeutige Bezeichnung für das neue Event. Dieser Eventname darf maximal 32 Zeichen lang sein. In unserem Beispiel verwenden wir hierfür den Eventnamen frontend_event_aktualisiert.

In unserer zuvor erstellten Datei langstring_de_eigen.php fügen wir folgende Variable hinzu:

 $dedi_lang['log_frontend_event_aktualisiert'] = "Benutzer hat Daten aktualisiert";

Wobei wir als Key useren Eventnamen und als Wert eine Beschreibung unseres Eventnamens verwenden. Zu beachten ist, dass ein Key immer mit "log_" am Anfang beginnt!

Zum Schluß wird der Code

 fire_event('frontend_event_aktualisiert', array());

an der Stelle innerhalb der Seite/des Moduls/PHP Codes eingefügt, an der eine Aktion geloggt werden soll. In einer Seite wird zum Beispiel das Modul "Sourcecode" am Anfang eingebaut und dort kann der o.g. Funktionsaufruf eingesetzt werden. Somit wird immer, wenn die Seite aufgerufen wird, das Event ausgeführt.

[bearbeiten] Hinweise zum Speichern eines Log-Eintrags

Der Funktion fire_event() kann ein assoziatives Array übergeben werden, um dynamische Werte zu verarbeiten.

  fire_event('EIGENER_EVENT_NAME', array('WERT1' => 'XXXXXXX', 'WERT2' => 'YYYYYYY'), 'WERT3' => 'ZZZZZZZZ');

Die Methode write_log() der Klasse dedi_log speichert einen Log-Eintrag in der Datenbanktabelle {PRÄFIX}_plug_log, die in der Administration zur Übersicht der Log-Aktionen ausgelesen/verwendet wird.

Bisher werden nur Log-Meldungen angezeigt, die fest als Werte in der Datei langstring_de_eigen.php eingetragen wurden. Möchte man dynamische Werte in den Log-Einträgen speichern, kann der Methode write_log() bis zu fünfe Werte übergeben werden. Auf die in fire_event() übergebenen Werte wird über

  $args['WERT1'];

zugegriffen.

Beispiel:

  $log->write_log('EIGENER_EVENT_NAME', $args['WERT1'], $args['WERT2'], $args['WERT3'], $args['WERT4'], $args['WERT5']);

Um diese Werte in der Log-Übersicht im Backend Bereich anzeigen zu lassen, wird die Bezeichnung

  value1
  value2
  ...
  value5

dem Wert des jeweiligen Eventnamens in der Datei langstring_de_eigen.php hinzugefügt.

Beispiel:

 $dedi_lang['frontend_event_aktualisiert'] = "Daten bearbeitet - Name = value1, Strasse = value2, Plz = value3";

[bearbeiten] Zusammenfassung - Eigene Events

  • Event in der Datenbanktabelle {PRÄFIX}_values hinzufügen
  • Variable für den neuen Eventnamen in der Datei langstring_de_eigen.php hinzufügen
  • DEDI Funktion fire_event() an die Stelle der Seite platzieren, an der geloggt werden soll.
Persönliche Werkzeuge