<?xml version="1.0"?>
<ruleset name="PHPCompatibilityWP">
    <description>WordPress specific ruleset which checks for PHP cross version compatibility.</description>

    <!--
    The WordPress minimum PHP requirement is PHP 5.2.4.
    Add the following in your project PHP_CodeSniffer ruleset to enforce this:
    <config name="testVersion" value="5.2-"/>

    This directive is not included in this ruleset as individual projects may use
    a different (higher) minimum PHP version.
    -->

    <rule ref="PHPCompatibility">
        <!-- Contained in /wp-includes/compat.php. -->
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.hash_hmacFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.json_encodeFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.json_decodeFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.hash_equalsFound"/>
        <exclude name="PHPCompatibility.Constants.NewConstants.json_pretty_printFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.json_last_error_msgFound"/>
        <exclude name="PHPCompatibility.Interfaces.NewInterfaces.jsonserializableFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.array_replace_recursiveFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.is_iterableFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.is_countableFound"/>

        <!-- Contained in /wp-includes/spl-autoload-compat.php. -->
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.spl_autoload_registerFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.spl_autoload_unregisterFound"/>
        <exclude name="PHPCompatibility.FunctionUse.NewFunctions.spl_autoload_functionsFound"/>
    </rule>

    <!-- Contained in /wp-includes/random_compat/ -->
    <rule ref="PHPCompatibilityParagonieRandomCompat"/>

    <!-- Whitelist the WP Core mysql_to_rfc3339() function. -->
    <rule ref="PHPCompatibility.Extensions.RemovedExtensions">
        <properties>
            <!-- Contained in /wp-includes/functions.php. -->
            <property name="functionWhitelist" type="array" value="mysql_to_rfc3339"/>
        </properties>
    </rule>

</ruleset>
