Datensatzliste bearbeiten (Jobqueue)

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von mare, 14. Juni 2011.

  1. mare

    mare Member

    Hallo,

    Ich möchte mir basierend auf der Jobqueue eine Anzeige der Nutzeraktionen im ISPConfig bauen.

    Gibt es eine Möglichkeit die Daten aus dem data Feld der sys_datalog vor der Anzeige noch durch einen "Parser" zu schicken?

    Die blanke Anzeige ist zu verwirrend. Ich würde das gerne etwas aufbereiten.

    /LG mare
     
  2. Till

    Till Administrator

    Es handelt sich dabei ja um ein serialisiertes PHP Array, as kannst Du mit der PHP Funktion unserailize() wieder in ein Array zurück wandeln und dann die Daten beliebig als HTML aufbereiten.
     
  3. mare

    mare Member

    Hallo Till,

    Das habe ich hinbekommen und mir auch eine Detailsseite dazu gebaut.
    Ich hätte gerne das array_diff_assoc zwischen new und alt in der Tabellenansicht und wollte eigentlich wissen, an welcher Stelle ich die Variable data noch bearbeiten kann bevor sie in der List ausgegeben wird.

    /LG René
     
  4. Till

    Till Administrator

    Ich verstehe glaube ich nicht so ganz, was Du meinst. Du kannst doch Daten beliebig mit PHP ausgeben und auch zu einem beliebigen Zeitpunkt laden und bearbeiten. Der Inhalt von Data ist unveränderlich und gibt den alten und neuen Zustand der DTabelle bei einer Änderung wieder.
     
  5. mare

    mare Member

    HI,

    Ok, ich versuchs nochmal ;-)

    Ich habe die Jobqueue genommen und als History umgebaut. Dabei kann man noch die Nutzer einschränken und auch die Volltextsuche im Feld data der sys_datalog funktioniert. (Um z.B: nach E-Mailadressen zu suchen.)
    (liste.png)

    In den Details werden dann die Daten des Array im DB Feld data angezeigt.
    (details.png)

    Meine Frage war jetzt, ob/wie/wo ich in der Listenansicht (liste.png) die Daten aus dem Feld sys_datalog.data vorher noch bearbeiten kann.
    Wenn ich dort {tmpl_var name="data"} eintrage habe ich ja die Rohdaten.
    Ich würde diese gerne für die Listenansicht aufbereiten und dann ausgeben.
     

    Anhänge:

  6. Till

    Till Administrator

    Das kannst Du durch überschreiben bzw. erweitern der Funktion prepareDataRow($rec) der Klasse listform_actions erreichen, von der die Listenansicht abgeleitet ist. Siehe dazu auch listform_actions.inc.php Datei in interface/lib/classes/
     
  7. mare

    mare Member

    Hallo Till,

    Volltreffer ;-)
    Genau das meinte ich . Danke.

    Allerdings bekomme ich bei einem

    if ($key=="data") $tmp = unserialize(stripslashes($rec[$key]));
    oder
    if ($key=="data") $tmp = unserialize($rec[$key]);


    die Fehlermeldung
    unserialize(): Error at offset 5 of 3200 bytes in ...

    in $rec[$key] steht
    a:2:{s:3:"old";a:28{s:11:"mailuser_id";s:3:"183";s:10:"sys_userid";s:1:"1";s:11:" ............
     
  8. Till

    Till Administrator

    Welchen Datentyp hat die data Spalte in der mysql DB bei Dir? Möglicherweise ist die zu klein, falls Du nicht das aktuelle ISPConfig 3.0.3.3 einsetzt.
     
  9. mare

    mare Member

    Ich habe die 3.0.3.3 als Basisversion im Einsatz.
    Der Datensatztyp ist longtext.

    Wenn ich (in der Detailansicht) die Daten direkt aus der DB lese und durchs unserialize schicke funktioniert es auch. Ich kann nur leider keinen Unterschied zwischen der direkten Ausgabe und dem $row[$key] sehen.
     
  10. Till

    Till Administrator

    Lass Dir am besten mal beides vor dem unserialize ausgeben, kopier es zeile unter zeile in einen text-editor und vergleiche sie mal. Es könnte sein dass die Daten bereits in der listform bzw. listform_actions Klasse "bearbeitet" worden sind.
     
  11. mare

    mare Member

    Im Browser sahen die Strings identisch aus.
    (Muß ja auch so sein :cool:)

    Ich habe ein
    $fp = fopen("/tmp/detail.txt",w) ;
    fputs($fp,$record['data']) ;
    fclose($fp) ;

    eingebaut und dann das Übel gefunden :
    a:2:{s:3:"old";a

    Ein :
    $tmp = unserialize(htmlspecialchars_decode($rec[$key]));
    hat es dann gerichtet.

    Danke für deine Hilfe.
     

Diese Seite empfehlen