( jc – 29.03.2009 15:33)
class.xform.validate.date_diff.inc.php
Diese XFORM Klasse ermöglich es zwei vom User eingetragene Datumsangaben auf ihren Abstand zueinander zu vergleichen und je nach Über/Unterschreitung eine passende Fehlermeldung auszugeben
Installation
Die Klasse nach redaxo/include/addons/xform/classes/validate/ kopieren.
Anwendung
Die Einbindung in ein XFORM Formular folgt den gewohnten Konventionen – im Detail ist die Feldbelegung wie folgt:
validate|date_diff|start_date|end_date|min_diff|max_diff|min_warn_message|max_warn_message
- start_date: Feldbezeichnung des ersten bzw. Anfangsdatums
- end_date: Feldbezeichnung des zweiten bzw. Enddatums
- min_diff: Mindestabstand [in Sekunden]
- max_diff: Maximaler Abstand [in Sekunden], darf leer sein
- min_warn_message: Fehlermeldung bei zu geringem Abstand
- max_warn_message: Fehlermeldung bei zu großem Abstand
Source
class.xform.validate.date_diff.inc.php
<?PHP /** * rex_xform_validate_date_diff.inc.php * * @author rexdev.de * @version 0.1 * * $Id: class.xform.validate_date_diff.inc.php 1 2009-03-27 18:33:24Z jeffe $: */ class rex_xform_validate_date_diff extends rex_xform_validate_abstract { function enterObject(&$warning, $send, &$warning_messages) { if($send=="1") { foreach($this->Objects as $o) { if ($o->elements[1]==$this->xaElements[2]) { $id_1 = $o->getId(); $start_date = $o->getValue(); $start_date = strtotime($start_date[day].'.'.$start_date[month].'.'.$start_date[year]); } if ($o->elements[1]==$this->xaElements[3]) { $id_2 = $o->getId(); $end_date = $o->getValue(); $end_date = strtotime($end_date[day].'.'.$end_date[month].'.'.$end_date[year]); } } $date_diff = $end_date - $start_date; if ($date_diff < $this->xaElements[4]) { $warning["el_" . $id_1] = $this->params["error_class"]; $warning["el_" . $id_2] = $this->params["error_class"]; $warning_messages[] = $this->xaElements[6]; } if ($this->xaElements[5] !='') { if ($date_diff > $this->xaElements[5]) { $warning["el_" . $id_1] = $this->params["error_class"]; $warning["el_" . $id_2] = $this->params["error_class"]; $warning_messages[] = $this->xaElements[7]; } } } } function getDescription() { return "date_diff -> prüft Abstand zwischen zwei Datumseingaben: validate|date_diff|start_date|end_date|min_diff|max_diff|min_warn_message|max_warn_message "; } } ?>