Zum Inhalt springen

wfqbe: Problem mit preprocessquery-hook

Erstellt am 27. Januar 2009 · 2 Antworten · letzte Antwort am 28. Januar 2009

Tags: Frage

zabinetta ·

Hallo,
ich setzte die wfqbe-extension ein und habe mir schon die Hälfte aller Haare ausgerissen wegen einem echt blöden problem mit dem preprocessquery-hook.

also ich habe eine Suchabfrage mit zwei feldern und will leere Marker entfernen.
bin nach Anleitung vorgegangen.
ein Marker wird entfernt (where... like '%,'), der andere Marker (where ... in ('')) zeigt sich völlig unbeeindruckt. ich würde ihn auch mit werten füllen, finde aber nirgends etwas über den processCheckinsertvalues-hook.

kann mir jemand helfen und die andere Hälfte meiner Haare retten?
viele Grüße und allerbesten Dank im Voraus,
Sabine

raui ·

Hallo Sabine,

ich hatte vor kurzem eine ähnliche Fragestellung zu den Hooks, deren Lösung auch erst reifen musste. Kurzum habe ich versucht, mit meinen mäßigen php-Kenntnissen den Code zu analysieren und mittels debug-messages die übergeben Arrays auszuwerten.

Nachdem sich die Hooks an verschiedenen Stellen im Code der Extension verstecken, kann ich mit meinen Erfahrungen nur allgemein sagen, dass die wfqbe-extension sehr genau mit den zurück gegebenen Werten aus dem Hook ist.

Bau' Dir temporär einfach ein paar Debug-Zeilen in Dein Hook, wie auch an geeigneter Stelle im wfqbe-Code (bei Hook "processCheckInsertValues": pi1/class.tx_wfqbe_insert.php ab Zeile 1407). Mit Ausgabe der Werte aus dem/den Array(s) via "echo", "print_r", etc. wirst Du sehen was mit Deinen Daten passiert.

Ach ja, was man bei den den Hooks beachten sollte ist, dass die richtigen Variablen/Arrays übergeben werden. Diese können mitunter von der Doku abweichen. Am besten entsprechenden Hook im Code suchen und dann die aufrufende Funktion anschauen:

#Zeile 1411:
$required['custom_validation'] = $_procObj->]custom_validation_insert_values($data, $blocks, $this);

Viel Spass beim suchen ....

... Haare ausreissen tut doch weh, bei mir gings doch auch ohne.

Grüße
Andreas

zabinetta ·

hallo Andreas,
gestern abend ist mir noch ein workaround eingefallen, und er geht. im endeffekt hab ich eine Hintertür in die Query eingebaut und mit einem ts-marker gefüllt aber nur wenn dir entwsprechende gpvar drin ist
die neue query:

SELECT .... WHERE termin.uid >= '0' AND lehrgang.lg_hauptgrup LIKE '%,###WFQBE_HAUPTGRUP###%' AND ( termin.begin_utimestamp > '###TS_WFQBE_TIMESTAMP###' OR termin.begin_utimestamp = '0' ) AND ( termin.mandant IN ( '###WFQBE_MANDANT###' ) OR termin.mandant < '###TS_WFQBE_KEINMANDANT###' )

und das typoscript für den Setup.

plugin.tx_wfqbe_pi1.customQuery.11 {
TS_WFQBE_KEINMANDANT = TEXT
TS_WFQBE_KEINMANDANT.value = 9999
TS_WFQBE_KEINMANDANT.overrideAlways = 1
TS_WFQBE_KEINMANDANT.if.isFalse.data = GPvar:tx_wfqbe_pi1|MANDANT|0
}

ist zwar nicht wirklich fein, aber so gut wie ich php kann....