|
4 | 4 | * https://gravitywiz.com/documentation/gravity-forms-read-only/ |
5 | 5 | */ |
6 | 6 | // Update "123" to your form ID. |
7 | | -add_filter( 'gform_pre_render_123', 'gpro_set_readonly_after_datetime' ); |
8 | | -add_filter( 'gform_pre_process_123', 'gpro_set_readonly_after_datetime' ); |
9 | | -function gpro_set_readonly_after_datetime( $form ) { |
| 7 | +// Update "4", "5", and "6" in the array to the field IDs which should be set as readonly after the given date/time. |
| 8 | +// Specify a date/time in the 24-hour format. |
| 9 | +gpro_set_readonly_after_datetime( 123, array( 4, 5, 6 ), '2022-09-09 16:00:00' ); |
10 | 10 |
|
11 | | - // Set your desired date and time (including timezone) at which time-sensitive fields will become readonly. |
12 | | - $datetime = '2022-09-09 14:00:00 EST'; |
13 | | - // Specify the IDs of all fields that should be marked as readonly after the above date and time. |
14 | | - $field_ids = array( 1, 2, 3 ); |
| 11 | +function gpro_set_readonly_after_datetime( $form_id, $field_ids, $datetime ) { |
15 | 12 |
|
16 | | - if ( new DateTime( substr( $datetime, -3, 3 ) ) < new DateTime( $datetime ) ) { |
17 | | - return $form; |
18 | | - } |
| 13 | + $func = function( $form ) use( $field_ids, $datetime ) { |
| 14 | + |
| 15 | + $current_time = new DateTime( wp_timezone_string() ); |
| 16 | + $readonly_time = new DateTime( $datetime . ' ' . wp_timezone_string() ); |
| 17 | + |
| 18 | + if ( $current_time < $readonly_time ) { |
| 19 | + return $form; |
| 20 | + } |
19 | 21 |
|
20 | | - foreach ( $form['fields'] as &$field ) { |
21 | | - if ( in_array( $field->id, $field_ids ) ) { |
22 | | - $field->gwreadonly_enable = true; |
| 22 | + foreach ( $form['fields'] as &$field ) { |
| 23 | + if ( in_array( $field->id, $field_ids ) ) { |
| 24 | + $field->gwreadonly_enable = true; |
| 25 | + } |
23 | 26 | } |
24 | | - } |
25 | 27 |
|
26 | | - return $form; |
| 28 | + return $form; |
| 29 | + }; |
| 30 | + |
| 31 | + add_filter( "gform_pre_render_{$form_id}", $func ); |
| 32 | + add_filter( "gform_pre_process_{$form_id}", $func ); |
| 33 | + |
27 | 34 | } |
0 commit comments