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