Nochmal hallo an alle :)
Ich habe mal was in die SearchConfig.php "gebastelt". Eigentlich kann ich kein PHP.
Bei meinem Test funktioniert es ganz gut.
Die Filter werden um $DATE()$ erweitert. Der Ausdruck in Klammern ist ein strtotime-Ausdruck (zum Test:
https://strtotime.co.uk/?str=now)
Wenn ein leerer Ausdruck übergeben wird ist 'now' Standard.
Ansonsten ist eine bequeme Suche nach Datum möglich:
//apply date formula, given as strtotime
if(preg_match('/^(.*?)(?:(\$DATE\((.*?)\)\$?))(.*?)$/', $filter, $match)) {
$toparse = $match[3];
if ($toparse == '') {
$toparse = 'now';
}
if (($timestamp = strtotime($toparse)) === false) {
echo "Error in DATE-Filter: ($toparse) nothing to parse.";
} else {
$filter = str_replace($filter,date('Y-m-d',$timestamp),$filter);
}
}
In meinem Beispiel von oben:
---- struct table ----
schema: tabledata
cols: colname, coldate
filter: coldate <= $DATE(-1 year)$
filterand: colpage = $ID$
csv: 0
----
liefert am 29.04.2020 den 29.04.2019 :) und somit alle Werte, die älter als ein Jahr sind.
Ich hoffe, ich habe im Code nicht zu viel Mist gebaut. Vielleicht kann es ja noch wer gebrauchen.
Viele Grüße und bleibt gesund
saggi