source: trunk/www.guidonia.net/wp/wp-content/plugins/contact-form-7/modules/text.php@ 44

Last change on this file since 44 was 44, checked in by luciano, 14 years ago
File size: 3.4 KB
Line 
1<?php
2/**
3** A base module for [text], [text*], [email], and [email*]
4**/
5
6/* Shortcode handler */
7
8function wpcf7_text_shortcode_handler( $tag ) {
9 global $wpcf7_contact_form;
10
11 if ( ! is_array( $tag ) )
12 return '';
13
14 $type = $tag['type'];
15 $name = $tag['name'];
16 $options = (array) $tag['options'];
17 $values = (array) $tag['values'];
18
19 if ( empty( $name ) )
20 return '';
21
22 $atts = '';
23 $id_att = '';
24 $class_att = '';
25 $size_att = '';
26 $maxlength_att = '';
27
28 if ( 'email' == $type || 'email*' == $type )
29 $class_att .= ' wpcf7-validates-as-email';
30
31 if ( 'text*' == $type || 'email*' == $type )
32 $class_att .= ' wpcf7-validates-as-required';
33
34 foreach ( $options as $option ) {
35 if ( preg_match( '%^id:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
36 $id_att = $matches[1];
37
38 } elseif ( preg_match( '%^class:([-0-9a-zA-Z_]+)$%', $option, $matches ) ) {
39 $class_att .= ' ' . $matches[1];
40
41 } elseif ( preg_match( '%^([0-9]*)[/x]([0-9]*)$%', $option, $matches ) ) {
42 $size_att = (int) $matches[1];
43 $maxlength_att = (int) $matches[2];
44 }
45 }
46
47 if ( $id_att )
48 $atts .= ' id="' . trim( $id_att ) . '"';
49
50 if ( $class_att )
51 $atts .= ' class="' . trim( $class_att ) . '"';
52
53 if ( $size_att )
54 $atts .= ' size="' . $size_att . '"';
55 else
56 $atts .= ' size="40"'; // default size
57
58 if ( $maxlength_att )
59 $atts .= ' maxlength="' . $maxlength_att . '"';
60
61 // Value
62 if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) && $wpcf7_contact_form->is_posted() ) {
63 if ( isset( $_POST['_wpcf7_mail_sent'] ) && $_POST['_wpcf7_mail_sent']['ok'] )
64 $value = '';
65 else
66 $value = $_POST[$name];
67 } else {
68 $value = $values[0];
69 }
70
71 $html = '<input type="text" name="' . $name . '" value="' . esc_attr( $value ) . '"' . $atts . ' />';
72
73 $validation_error = '';
74 if ( is_a( $wpcf7_contact_form, 'WPCF7_ContactForm' ) )
75 $validation_error = $wpcf7_contact_form->validation_error( $name );
76
77 $html = '<span class="wpcf7-form-control-wrap ' . $name . '">' . $html . $validation_error . '</span>';
78
79 return $html;
80}
81
82wpcf7_add_shortcode( 'text', 'wpcf7_text_shortcode_handler', true );
83wpcf7_add_shortcode( 'text*', 'wpcf7_text_shortcode_handler', true );
84wpcf7_add_shortcode( 'email', 'wpcf7_text_shortcode_handler', true );
85wpcf7_add_shortcode( 'email*', 'wpcf7_text_shortcode_handler', true );
86
87
88/* Validation filter */
89
90function wpcf7_text_validation_filter( $result, $tag ) {
91 global $wpcf7_contact_form;
92
93 $type = $tag['type'];
94 $name = $tag['name'];
95
96 $_POST[$name] = trim( strtr( (string) $_POST[$name], "\n", " " ) );
97
98 if ( 'text*' == $type ) {
99 if ( '' == $_POST[$name] ) {
100 $result['valid'] = false;
101 $result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
102 }
103 }
104
105 if ( 'email' == $type || 'email*' == $type ) {
106 if ( 'email*' == $type && '' == $_POST[$name] ) {
107 $result['valid'] = false;
108 $result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_required' );
109 } elseif ( '' != $_POST[$name] && ! is_email( $_POST[$name] ) ) {
110 $result['valid'] = false;
111 $result['reason'][$name] = $wpcf7_contact_form->message( 'invalid_email' );
112 }
113 }
114
115 return $result;
116}
117
118add_filter( 'wpcf7_validate_text', 'wpcf7_text_validation_filter', 10, 2 );
119add_filter( 'wpcf7_validate_text*', 'wpcf7_text_validation_filter', 10, 2 );
120add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter', 10, 2 );
121add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter', 10, 2 );
122
123?>
Note: See TracBrowser for help on using the repository browser.