<?xml version="1.0"?>
<ruleset name="Eventim US Event Listings">
    <description>WordPress Coding Standards for Eventim US Event Listings Plugin</description>

    <!-- What to scan -->
    <file>.</file>

    <!-- Only check PHP files -->
    <arg name="extensions" value="php"/>

    <!-- Exclude directories -->
    <exclude-pattern>*/node_modules/*</exclude-pattern>
    <exclude-pattern>*/vendor/*</exclude-pattern>
    <exclude-pattern>*/.git/*</exclude-pattern>
    <exclude-pattern>*/acf-fields/*</exclude-pattern>
    <exclude-pattern>*/images/*</exclude-pattern>
    <exclude-pattern>*/css/*</exclude-pattern>
    <exclude-pattern>*/js/*</exclude-pattern>
    <exclude-pattern>*/languages/*</exclude-pattern>
    <exclude-pattern>*/templates/*</exclude-pattern>
    <exclude-pattern>*/apache-config/*</exclude-pattern>
    <exclude-pattern>docker-compose.yaml</exclude-pattern>
    <exclude-pattern>setup.sh</exclude-pattern>
    <exclude-pattern>README.md</exclude-pattern>
    <exclude-pattern>readme.txt</exclude-pattern>
    <exclude-pattern>composer.json</exclude-pattern>
    <exclude-pattern>composer.lock</exclude-pattern>
    <exclude-pattern>phpcs.xml</exclude-pattern>

    <!-- How to scan -->
    <config name="testVersion" value="8.1-"/>
    <config name="minimum_supported_wp_version" value="5.7"/>

    <!-- Rules: Check PHP version compatibility -->
    <rule ref="PHPCompatibilityWP"/>

    <!-- Rules: WordPress Coding Standards -->
    <rule ref="WordPress">
        <!-- Allow short array syntax -->
        <exclude name="Generic.Arrays.DisallowShortArraySyntax"/>
        <!-- Allow camelCase variables (too invasive to change) -->
        <exclude name="WordPress.NamingConventions.ValidVariableName"/>
        <exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase"/>
        <!-- Allow inline comments without punctuation (too many to fix) -->
        <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar"/>
        <!-- Allow non-Yoda conditions (style preference) -->
        <exclude name="WordPress.PHP.YodaConditions"/>
        <!-- Exclude false positives for parameter comments inside function bodies -->
        <exclude name="Squiz.Commenting.FunctionComment.MissingParamComment"/>
        <!-- Exclude false positives for short descriptions inside function bodies -->
        <exclude name="Squiz.Commenting.FunctionComment.MissingShortDescription"/>
    </rule>

    <!-- Rules: WordPress Extra -->
    <rule ref="WordPress-Extra">
        <!-- Allow short array syntax -->
        <exclude name="Generic.Arrays.DisallowShortArraySyntax"/>
        <!-- Allow camelCase variables -->
        <exclude name="WordPress.NamingConventions.ValidVariableName"/>
        <exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase"/>
    </rule>

    <!-- Rules: WordPress-Docs -->
    <rule ref="WordPress-Docs"/>

    <!-- Custom rules for this plugin -->
    <rule ref="WordPress.NamingConventions.PrefixAllGlobals">
        <properties>
            <property name="prefixes" type="array">
                <element key="0" value="evusel"/>
                <element key="1" value="EVUSEL"/>
            </property>
        </properties>
    </rule>

    <!-- Set the minimum PHP version -->
    <config name="php_version" value="80100"/>
</ruleset>

