future — date is a future date
Verification of the form field value succeeds if the passed time and date are in the future, compared to the current time.
It is possible to specify a minimum accepted time difference between the current and passed date. The specification can be any valid interval.
Example: Check for future date, displaying a custom error message
FORM_FIELD_NAME=future "Date must be in the future"
Example: Check for future date, at least 2 days ahead
FORM_FIELD_NAME=future 2 days "Date must be at least two days ahead"
Example: Check for date within 60 minutes behind the current time
FORM_FIELD_NAME=future -60 minutes "Time must be within an hour behind"
This order check makes sense with date fields and widgets only.
The time difference can be specified as a negative value as well, effectively allowing you to check whether the passed date is "too behind" the current date.
Interchange 5.9.0:
Source: code/OrderCheck/future.oc
Lines: 50
# Copyright 2005-2007 Interchange Development Group and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the LICENSE file for details. # # $Id: future.oc,v 1.5 2007-03-30 23:40:48 pajamian Exp $ CodeDef future OrderCheck 1 CodeDef future Description Future date CodeDef future Routine <<EOR sub { my($ref, $name, $value, $code) = @_; my $message; my @code = Text::ParseWords::shellwords($code); if($code =~ /(["']).+?\1$/) { $message = pop(@code); } my $adjust = join " ", @code; if(! $message) { $message = errmsg( "Date must be in the future at least %s", $adjust, ); } if($value =~ /\0/) { $value = Vend::Interpolate::filter_value( 'date_change', $value, ); } my $current = Vend::Interpolate::mvtime( undef, { adjust => $adjust }, "%Y%m%d%H%M", ); # reject invalid dates if($value !~ /^[12]\d\d\d[01]\d[0123]\d(?:[0-2]\d[0-5]\d(?:[0-5]\d)?)?$/) { return (0, $name, $message); } if($value lt $current) { return (0, $name, $message); } return (1, $name, ''); } EOR