ad_page_contract_filter_proc_date (public)
ad_page_contract_filter_proc_date name date_varname
Defined in packages/acs-tcl/tcl/tcl-documentation-procs.tcl
Validates date type variables
- Parameters:
- name
date_varname
- Author:
- Yonatan Feldman <yon@arsdigita.com>
- Created:
- 25 July 2000
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- ad_page_contract_filters
Source code: upvar $date_varname date foreach date_element { day month year } { if { ![info exists date($date_element)] } { ad_complain [_ acs-tcl.lt_Invalid_date_date_ele] return 0 } } # check if all elements are blank if { "$date(day)$date(month)$date(year)" eq ""} { set date(date) {} return 1 } foreach date_element { day year } { if { ![regexp {^(0*)(([1-9][0-9]*|0))$} $date($date_element) match zeros real_value] } { ad_complain [_ acs-tcl.lt_Invalid_date_date_ele_1] return 0 } set date($date_element) $real_value } if { $date(year) ne "" && [string length $date(year)] != 4 } { ad_complain [_ acs-tcl.lt_Invalid_date_The_year] return 0 } if { [regexp {^(0*)(([1-9][0-9]*|0))$} $date(month) match zeros real_value] } { set date(month) $real_value } else { set months_list {January February March April May June July August September October November December} set date(month) [expr {[lsearch $months_list $date(month)] + 1}] } if { "" eq $date(month) || "" eq $date(day) || "" eq $date(year) || $date(month) < 1 || $date(month) > 12 || $date(day) < 1 || $date(day) > 31 || $date(year) < 1 || ($date(month) == 2 && $date(day) > 29) || (($date(year) % 4) != 0 && $date(month) == 2 && $date(day) > 28) || ($date(month) == 4 && $date(day) > 30) || ($date(month) == 6 && $date(day) > 30) || ($date(month) == 9 && $date(day) > 30) || ($date(month) == 11 && $date(day) > 30) } { ad_complain [_ acs-tcl.lt_Invalid_date_datemont] return 0 } set date(date) [format "%04d-%02d-%02d" $date(year) $date(month) $date(day)] return 1XQL Not present: Generic, PostgreSQL, Oracle