<?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 PHPCS 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.PHP.NewFunctions.hash_hmacFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.json_encodeFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.json_decodeFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.hash_equalsFound"/>
        <exclude name="PHPCompatibility.PHP.NewConstants.json_pretty_printFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.json_last_error_msgFound"/>
        <exclude name="PHPCompatibility.PHP.NewInterfaces.jsonserializableFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.array_replace_recursiveFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.is_iterableFound"/>
        <exclude name="PHPCompatibility.PHP.NewFunctions.is_countableFound"/>

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

        <!-- Contained in /wp-includes/random_compat/random.php. -->
        <exclude name="PHPCompatibility.PHP.NewConstants.php_version_idFound"/>

        <!-- Contained in /wp-includes/random_compat/*.php (various files). -->
        <exclude name="PHPCompatibility.PHP.NewFunctions.random_bytesFound"/>

        <!-- Contained in /wp-includes/random_compat/random_int.php. -->
        <exclude name="PHPCompatibility.PHP.NewFunctions.random_intFound"/>

        <!-- Contained in /wp-includes/random_compat/error_polyfill.php. -->
        <exclude name="PHPCompatibility.PHP.NewClasses.errorFound"/>
        <exclude name="PHPCompatibility.PHP.NewClasses.typeerrorFound"/>
    </rule>

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

</ruleset>
