( 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

  1. start_date: Feldbezeichnung des ersten bzw. Anfangsdatums
  2. end_date: Feldbezeichnung des zweiten bzw. Enddatums
  3. min_diff: Mindestabstand [in Sekunden]
  4. max_diff: Maximaler Abstand [in Sekunden], darf leer sein
  5. min_warn_message: Fehlermeldung bei zu geringem Abstand
  6. 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 ";
  }
}
 
?>