get_forms() ); } /* * Create tab panel */ public function uacf7_cf_add_panel( $panels ) { $panels['uacf7-cf-panel'] = array( 'title' => __( 'UACF7 Conditional Fields', 'ultimate-addons-cf7' ), 'callback' => array( $this, 'uacf7_create_conditional_panel_fields' ), ); return $panels; } /* * Form tag */ public static function add_shortcodes() { if( function_exists('wpcf7_add_form_tag') ){ wpcf7_add_form_tag( 'conditional', array( __CLASS__, 'custom_conditional_form_tag_handler' ), true ); } } public static function custom_conditional_form_tag_handler( $tag ) { ob_start(); $tag = new WPCF7_FormTag( $tag ); ?>
content; ?>
documentation' ); ?>




×

documentation' ); ?>
id(), 'uacf7_cf_count', true ); $uacf7_conditions = !empty( get_post_meta( $post->id(), 'uacf7_conditions', true ) ) ? get_post_meta( $post->id(), 'uacf7_conditions', true ) : array(); for( $i = 0; $i < $uacf7_cf_count; $i++ ) : $uacf7_cf_id = is_array( $uacf7_conditions[ $i ] ) ? $uacf7_conditions[ $i ] : array(); $uacf7_cf_hs = !empty( $uacf7_cf_id['uacf7_cf_hs'] ) ? $uacf7_cf_id['uacf7_cf_hs'] : ''; $uacf7_cf_group = !empty( $uacf7_cf_id['uacf7_cf_group'] ) ? $uacf7_cf_id['uacf7_cf_group'] : ''; $uacf7_cf_conditions_for = !empty( $uacf7_cf_id['uacf_cf_condition_for'] ) ? $uacf7_cf_id['uacf_cf_condition_for'] : ''; $uacf7_cf_conditions = is_array( $uacf7_cf_id['uacf7_cf_conditions'] ) ? $uacf7_cf_id['uacf7_cf_conditions'] : array(); $uacf7_cf_all_tags_array = is_array( $uacf7_cf_conditions['uacf7_cf_tn'] ) ? $uacf7_cf_conditions['uacf7_cf_tn'] : array(); $uacf7_cf_conditions_quantity = count( $uacf7_cf_all_tags_array ); $uacf7_cf_conditions_tag_name = $uacf7_cf_conditions['uacf7_cf_tn']; $uacf7_cf_conditions_operator = $uacf7_cf_conditions['uacf7_cf_operator']; $uacf7_cf_conditions_value = $uacf7_cf_conditions['uacf7_cf_val']; ?>



id(), 'uacf7_conditions_count_ruleid_'.esc_attr($i).'', true ); ?>
×

id(), 'uacf7_cf_count', true ); ?>
sanitize_text_field($_POST['uacf7_cf_hs_'.$i.'']), 'uacf7_cf_group' => sanitize_text_field($_POST['uacf7_cf_group_'.$i.'']), 'uacf_cf_condition_for' => sanitize_text_field($_POST['uacf7_cf_condition_for_'.$i.'']), 'uacf7_cf_conditions' => array( 'uacf7_cf_tn' => $tag_names, 'uacf7_cf_operator' => $operators, 'uacf7_cf_val' => $filed_values, ), ); //Update rule condition quantity update_post_meta( $post->id(), 'uacf7_conditions_count_ruleid_'.$i.'', intval($_POST['uacf7_conditions_count_ruleid_'.$i.'']) ); } update_post_meta( $post->id(), 'uacf7_conditions', $data ); } public function uacf7_save_contact_form( $form ) { if ( ! isset( $_POST ) || empty( $_POST ) ) { return; } if ( ! wp_verify_nonce( $_POST['uacf7_cf_nonce'], 'uacf7_cf_nonce_action' ) ) { return; } update_post_meta( $form->id(), 'uacf7_cf_count', intval($_POST['uacf7_cf_count']) ); } public function get_forms() { $args = array( 'post_type' => 'wpcf7_contact_form', 'posts_per_page' => -1, ); $query = new WP_Query( $args ); $forms = array(); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); $post_id = get_the_ID(); $forms[ $post_id ] = get_post_meta( get_the_ID(), 'uacf7_conditions', true ); endwhile; wp_reset_postdata(); endif; return $forms; } public function uacf7_properties($properties, $cfform) { if (!is_admin() || (defined('DOING_AJAX') && DOING_AJAX)) { $form = $properties['form']; $form_parts = preg_split('/(\[\/?conditional(?:\]|\s.*?\]))/',$form, -1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); ob_start(); $stack = array(); foreach ($form_parts as $form_part) { if (substr($form_part,0,13) == '[conditional ') { $tag_parts = explode(' ',rtrim($form_part,']')); array_shift($tag_parts); $tag_id = $tag_parts[0]; $tag_html_type = 'div'; array_push($stack,$tag_html_type); echo '<'.$tag_html_type.' class="uacf7_conditional '.$tag_id.'">'; } else if ($form_part == '[/conditional]') { echo ''; } else { echo $form_part; } } $properties['form'] = ob_get_clean(); } return $properties; } function skip_validation_for_hidden_fields($result, $tags) { if(isset($_POST)) { $this->set_hidden_fields_arrays($_POST); } $invalid_fields = $result->get_invalid_fields(); $return_result = new WPCF7_Validation(); if (count($this->hidden_fields) == 0 || !is_array($invalid_fields) || count($invalid_fields) == 0) { $return_result = $result; } else { foreach ($invalid_fields as $invalid_field_key => $invalid_field_data) { if (!in_array($invalid_field_key, $this->hidden_fields)) { $return_result->invalidate($invalid_field_key, $invalid_field_data['reason']); } } } return apply_filters('uacf7_validate', $return_result, $tags); } public function uacf7_form_hidden_fields($hidden_fields) { $current_form = wpcf7_get_current_contact_form(); $current_form_id = $current_form->id(); return array_merge($hidden_fields, array( '_uacf7_hidden_conditional_fields' => '', )); } public function remove_hidden_post_data($posted_data) { $this->set_hidden_fields_arrays($posted_data); foreach( $this->hidden_fields as $name => $value ) { unset( $posted_data[$name] ); } return $posted_data; } public function set_hidden_fields_arrays($posted_data = false) { if (!$posted_data) { $posted_data = WPCF7_Submission::get_instance()->get_posted_data(); } if(isset($posted_data['_uacf7_hidden_conditional_fields'])){ $hidden_fields = json_decode(stripslashes($posted_data['_uacf7_hidden_conditional_fields'])); }else{ $hidden_fields = []; } if (is_array($hidden_fields) && count($hidden_fields) > 0) { foreach ($hidden_fields as $field) { $this->hidden_fields[] = $field; } } } /* Skip validation for hidden file field */ function skip_validation_for_hidden_file_field($result, $tag, $args=[]) { if (!count($result->get_invalid_fields())) { return $result; } if(isset($_POST)) { $this->set_hidden_fields_arrays($_POST); } $invalid_field_keys = array_keys($result->get_invalid_fields()); if (isset($this->hidden_fields) && is_array($this->hidden_fields) && in_array($tag->name, $this->hidden_fields) && count($invalid_field_keys) == 1) { return new WPCF7_Validation(); } return $result; } public function uacf7_config_validator_validate(WPCF7_ConfigValidator $wpcf7_config_validator) { $cf = $wpcf7_config_validator->contact_form(); $all_group_tags = $cf->scan_form_tags(); foreach ($wpcf7_config_validator->collect_error_messages() as $err_type => $err) { $parts = explode('.',$err_type); $property = $parts[0]; if ($property == 'form') continue; $sub_prop = $parts[1]; $prop_val = $cf->prop($property)[$sub_prop]; if (strpos($prop_val, '[/') !== false) { $wpcf7_config_validator->remove_error($err_type, WPCF7_ConfigValidator::error_invalid_mailbox_syntax); continue; } } return new WPCF7_ConfigValidator($wpcf7_config_validator->contact_form()); } } new UACF7_CF();