HEX
Server: LiteSpeed
System: Linux node612.namehero.net 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: dfwparty (1186)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/dfwparty/dfwblogger.com/wp-content/mu-plugins/wp-toolkit/Waf/Validator/RuleValidator.php
<?php
// Copyright 1999-2026. WebPros International GmbH. All rights reserved.

namespace Webpros\WptkWpPlugin\WpToolkit\Waf\Validator;

use WP_CLI;

final class RuleValidator
{
    const STRING_FIELDS = [
        'vulnerabilityId',
        'engine',
        'provider',
    ];

    /**
     * @param array $rule
     *
     * @return void
     * @throws \WP_CLI\ExitException
     */
    public static function validate($rule)
    {
        if (\is_array($rule) === false) {
            WP_CLI::error('Rule is not an array');
        }

        foreach (self::STRING_FIELDS as $field) {
            self::validateStringField($field, $rule);
        }

        self::validateArrayField('rules', $rule);
    }

    /**
     * @param string $field
     * @param array  $rule
     *
     * @return void
     * @throws \WP_CLI\ExitException
     */
    private static function validateArrayField($field, $rule)
    {
        $value = isset($rule[$field]) ? $rule[$field] : null;

        if ($value === null) {
            WP_CLI::error($field . ' is not set');
        }

        if (\is_array($value) === false) {
            WP_CLI::error($field . ' is not an array');
        }

        if (empty($value)) {
            WP_CLI::error($field . ' is empty');
        }
    }

    /**
     * @param string $field
     * @param array  $rule
     *
     * @return void
     * @throws \WP_CLI\ExitException
     */
    private static function validateStringField($field, $rule)
    {
        $value = isset($rule[$field]) ? $rule[$field] : null;

        if ($value === null) {
            WP_CLI::error($field . ' is not set');
        }

        if (\is_string($value) === false) {
            WP_CLI::error($field . ' is not a string');
        }

        if (empty($value)) {
            WP_CLI::error($field . ' is empty');
        }
    }
}