Uname: Linux p3plzcpnl499967.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Software: Apache
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 208.109.40.231
Your Ip: 216.73.216.26
User: nayff91c5tsx (10005085) | Group: nayff91c5tsx (10005085)
Safe Mode: OFF
Disable Function:
NONE

name : AdvancedFormValidation.php
<?php
namespace FluentFormPro\classes;

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

use FluentForm\App\Services\ConditionAssesor;
use FluentForm\Framework\Helpers\ArrayHelper;

class AdvancedFormValidation
{
    public function validateAdvancedConditions($errors, $data, $form, $fields)
    {
        $conditionals = $this->getAdvancedCondition($form->id);
        if(!ArrayHelper::get($conditionals, 'status')) {
            return $errors;
        }

        $isMatched = $this->checkCondition([
            'conditionals' => $conditionals
        ], $data);

        $validationType = ArrayHelper::get($conditionals, 'validation_type', 'fail_on_condition_met');

        $ifFailedOnTrue = $validationType == 'fail_on_condition_met';

        if( ($ifFailedOnTrue && $isMatched) || (!$ifFailedOnTrue && !$isMatched)) {
            $errorMessage = $conditionals['error_message'];
            if(!$errorMessage) {
                $errorMessage = __('Form validation has been failed', 'fluentformpro');
            }
            $errors['advanced_validation_error'] = $errorMessage;
        }

        return $errors;
    }

    private function getAdvancedCondition($formId)
    {
        $settingsMeta = wpFluent()->table('fluentform_form_meta')
            ->where('form_id', $formId)
            ->where('meta_key', 'advancedValidationSettings')
            ->first();

        if(!$settingsMeta || !$settingsMeta->value) {
            return false;
        }

        return \json_decode($settingsMeta->value, true);
    }

    private function checkCondition($settings, $formData)
    {
        $conditionSettings = ArrayHelper::get($settings, 'conditionals');

        if (
            !$conditionSettings ||
            !count(ArrayHelper::get($conditionSettings, 'conditions'))
        ) {
            return true;
        }

        return ConditionAssesor::evaluate($settings, $formData);
    }
}
© 2026 GrazzMean