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; ?>
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 ''.array_pop($stack).'>';
} 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();