HEX
Server: LiteSpeed
System: Linux l24.yourwebhosting.net 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: turkishi (1582)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //proc/self/cwd/wp-content/plugins/extensions-for-cf7/admin/include/class.cf7-condition-setup.php
<?php

if( ! defined( 'ABSPATH' ) ) exit(); // Exit if accessed directly

/**
 * HT CF7 Condition Setup
*/

class Extensions_Cf7_Condition_Setup{

	/**
     * [$_instance]
     * @var null
    */
    private static $_instance = null;

    /**
     * [instance] Initializes a singleton instance
     * @return [Extensions_Cf7_Condition_Setup]
    */
    public static function instance() {
        if ( is_null( self::$_instance ) ) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }

    /**
     * save the conditions to the post_meta
     * @param string form_id
    */
    public static function set_conditions_value($form_id, $conditions) {
        return update_post_meta($form_id,'extcf7_conditional_options',$conditions); 
    }

    /**
     * load the conditions from the post_meta
     * @param string $form_id
    */
    public static function get_conditions_value($form_id) {
        // make sure conditions are an array.
        $options = get_post_meta($form_id,'extcf7_conditional_options',true);
        return is_array($options) ? $options : array();
    }

    public static function setup_conditions_string_to_array($condition_string){
        
    	$conditions = [];

    	$condition_process = explode("show ", $condition_string);

    	foreach ($condition_process as $k => $value_process){
    		if($k > 0){
    			$set_condition = preg_split("/\n /",$value_process);
    			foreach ($set_condition as $j => $c_str) {

                    preg_match('/equal|not-equal/i', $c_str, $operator_input_value);
                    preg_match('/".*?"/', $c_str, $if_conditions_value);

    				if( 0 == $j){
                        preg_match_all("/\[(.*?)\]/", $c_str, $rule_applied_field);
    					$condition_rules['rule_applied_field']  = str_replace( array('[',']'), '', $rule_applied_field[0][0] );
    					$condition_rules['and_condition_rules'] = [
                            [
                                'if_field_input' => str_replace( array('[',']'), '', $rule_applied_field[0][1] ),
                                'if_type_input'  => '',
                                'operator_input' => $operator_input_value[0],
                                'if_value_input' => str_replace('"', '', $if_conditions_value[0]),
                            ]
                        ];
    					continue;
    				}

    				preg_match('/\[(.*?)\]/', $c_str, $if_field_input_value);
                    preg_match('/and|or/i', $c_str, $if_type_input_value);
    				$condition_rules['and_condition_rules'][] = [
    					'if_field_input' => str_replace( array('[',']'), '', $if_field_input_value[0] ),
                        'if_type_input'  => $if_type_input_value[0],
    					'operator_input' => $operator_input_value[0],
    					'if_value_input' => str_replace('"', '', $if_conditions_value[0]),
    				];
    			}
    			array_push($conditions, $condition_rules);
    			$condition_rules['and_condition_rules'] = [];
    		}
    	}

    	return $conditions;
    }

    public static function serialize_conditions_value($array){

    	$conditions_lines = [];

        foreach ($array as $entry) {
            $rule_applied_field = $entry['rule_applied_field'];
            $and_condition_rules = $entry['and_condition_rules'];

            foreach ($and_condition_rules as $i => $rule) {
                $if_field_input = $rule['if_field_input'];
                $if_type_input  = isset($rule['if_type_input']) ? $rule['if_type_input'] : 'and';
                $operator_input = $rule['operator_input'];
                $if_value_input = $rule['if_value_input'];

                if ($i == 0){
                    $conditions_lines[] = "show [{$rule_applied_field}] if-[{$if_field_input}]-{$operator_input}-\"{$if_value_input}\"";
                }else{
                    $conditions_lines[] =" {$if_type_input}-[{$if_field_input}]-{$operator_input}-\"{$if_value_input}\"";
                }
            }
        }
        
        return implode("\n", $conditions_lines);
    }

}

Extensions_Cf7_Condition_Setup::instance();

add_filter( 'wpcf7_contact_form_properties', 'extcf7_properties', 10, 1 );

function extcf7_properties($form_properties) {

	if (!is_admin() || ( class_exists( '\Elementor\Plugin' ) && ( \Elementor\Plugin::$instance->editor->is_edit_mode() || \Elementor\Plugin::$instance->preview->is_preview_mode() ) )) {

        $cf7_form = $form_properties['form'];

	    $cf7_form_parts = preg_split('/(\[\/?fields_group(?:\]|\s.*?\]))/',$cf7_form, -1,PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

	    ob_start();

	    foreach ($cf7_form_parts as $cf7_form_part) {
	    	if (substr($cf7_form_part,0,14) == '[fields_group ') {
	    		$form_tag_parts = explode(' ',rtrim($cf7_form_part,']'));

	    		array_shift($form_tag_parts);

	    		$form_tag_id = $form_tag_parts[0];

                if(in_array('clear_field_on_hide' , $form_tag_parts)){
                    $clear_on_hide = ' data-clear= clear_field_on_hide';
                 }else{
                    $clear_on_hide = '';
                }

			    echo '<div data-id="'.esc_attr($form_tag_id).'"'.esc_attr($clear_on_hide).' data-class="extcf7_group">';
		    } else if ($cf7_form_part == '[/fields_group]') {
	    		echo '</div>';
		    } else {
	    		echo $cf7_form_part; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		    }
	    }

        $form_properties['form'] = ob_get_clean();
    }
    return $form_properties;
}

add_action('wpcf7_form_hidden_fields', 'extcf7_conditional_form_hidden_fields',10,1);

function extcf7_conditional_form_hidden_fields($form_hidden_fields) {

    $current_form = wpcf7_get_current_contact_form();
    $current_form_id = $current_form->id();
    $conditions = Extensions_Cf7_Condition_Setup::get_conditions_value($current_form_id);
    foreach ($conditions as $k1 => $condition) {
        foreach ($condition['and_condition_rules'] as $k2 => $cnd_props) {
            if(!isset($cnd_props['if_type_input'])){
                if($k2 > 0){
                    $conditions[$k1]['and_condition_rules'][$k2]['if_type_input'] = 'and';
                }else{
                    $conditions[$k1]['and_condition_rules'][$k2]['if_type_input'] = '';
                }
            } 
        }
    }
    $options = array(
        'form_id' => $current_form_id,
        'conditions' => $conditions
    );

	return array_merge($form_hidden_fields, array(
        '_extcf7_conditional_options' => ''.wp_json_encode($options),
    ));
}