Elementor\Element_Base::is_control_visible PHP Метод

is_control_visible() публичный Метод

public is_control_visible ( $control, $values = null )
    public function is_control_visible($control, $values = null)
    {
        if (null === $values) {
            $values = $this->get_settings();
        }
        // Repeater fields
        if (!empty($control['conditions'])) {
            return Conditions::check($control['conditions'], $values);
        }
        if (empty($control['condition'])) {
            return true;
        }
        foreach ($control['condition'] as $condition_key => $condition_value) {
            preg_match('/([a-z_0-9]+)(?:\\[([a-z_]+)])?(!?)$/i', $condition_key, $condition_key_parts);
            $pure_condition_key = $condition_key_parts[1];
            $condition_sub_key = $condition_key_parts[2];
            $is_negative_condition = !!$condition_key_parts[3];
            $instance_value = $values[$pure_condition_key];
            if (null === $instance_value) {
                return false;
            }
            if ($condition_sub_key) {
                if (!isset($instance_value[$condition_sub_key])) {
                    return false;
                }
                $instance_value = $instance_value[$condition_sub_key];
            }
            $is_contains = is_array($condition_value) ? in_array($instance_value, $condition_value) : $instance_value === $condition_value;
            if ($is_negative_condition && $is_contains || !$is_negative_condition && !$is_contains) {
                return false;
            }
        }
        return true;
    }