<?xml version="1.0"?>
<ruleset name="WordPress Coding Standards based custom ruleset for your plugin">
	<description>Generally-applicable sniffs for WordPress plugins.</description>

	<!-- What to scan -->
	<file>.</file>
	<exclude-pattern>/vendor/</exclude-pattern>
	<exclude-pattern>/node_modules/</exclude-pattern>
	<exclude-pattern>/dependencies/</exclude-pattern>

	<!-- How to scan -->
	<!-- Usage instructions: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage -->
	<!-- Annotated ruleset: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
	<arg value="sp"/> <!-- Show sniff and progress -->
	<arg name="basepath" value="./"/><!-- Strip the file paths down to the relevant bit -->
	<arg name="colors"/>
	<arg name="extensions" value="php"/>
	<arg name="parallel" value="8"/><!-- Enables parallel processing when available for faster results. -->

	<!-- Rules: Check PHP version compatibility -->
	<!-- https://github.com/PHPCompatibility/PHPCompatibility#sniffing-your-code-for-compatibility-with-specific-php-versions -->
	<config name="testVersion" value="7.4-"/>
	<!-- https://github.com/PHPCompatibility/PHPCompatibilityWP -->
	<rule ref="PHPCompatibilityWP"/>

	<!-- Rules: WordPress Coding Standards -->
	<!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards -->
	<!-- https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/wiki/Customizable-sniff-properties -->
	<config name="minimum_supported_wp_version" value="5.3"/>
	<rule ref="WordPress">
	    <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar" />
	    <exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceAfterOpenParenthesis" />
	    <exclude name="WordPress.WhiteSpace.ControlStructureSpacing.NoSpaceBeforeCloseParenthesis" />
	    <exclude name="Squiz.Commenting.VariableComment.Missing" />
	    <exclude name="WordPress.WhiteSpace.CastStructureSpacing.NoSpaceBeforeOpenParenthesis" />
	    <exclude name="WordPress.WhiteSpace.OperatorSpacing.NoSpaceBefore" />
	    <exclude name="Universal.Arrays.DisallowShortArraySyntax" />
	    <exclude name="Universal.Operators.DisallowShortTernary" />
	    <exclude name="Squiz.Commenting.FileComment.SpacingAfterOpen" />
        <exclude name="Squiz.Commenting.FileComment.SpacingAfterComment" />
        <exclude name="Squiz.Commenting.FileComment.PackageName" />
        <exclude name="WordPress.WP.GlobalVariablesOverride.Prohibited" />
        <exclude name="Generic.Commenting.DocComment.MissingShort" />
	</rule>
	<rule ref="WordPress.NamingConventions.PrefixAllGlobals">
		<properties>
			<!-- Value: replace the function, class, and variable prefixes used. Separate multiple prefixes with a comma. -->
			<property name="prefixes" type="array" value="wu_,wp_ultimo"/>
		</properties>
		<exclude-pattern>/views/</exclude-pattern>
	</rule>
	<rule ref="WordPress.WhiteSpace.ControlStructureSpacing">
		<properties>
			<property name="blank_line_check" value="true"/>
		</properties>
	</rule>
	<rule ref="PEAR.Functions.FunctionCallSignature">
        <properties>
            <property name="requiredSpacesAfterOpen" value="0"/>
            <property name="requiredSpacesBeforeClose" value="0"/>
        </properties>
    </rule>
    <rule ref="NormalizedArrays.Arrays.ArrayBraceSpacing">
        <properties>
            <property name="spacesSingleLine" value="0"/>
        </properties>
    </rule>
    <rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
		<properties>
			<property name="equalsSpacing" value="1"/>
			<property name="requiredSpacesAfterOpen" value="0"/>
			<property name="requiredSpacesBeforeClose" value="0"/>
		</properties>
	</rule>
	<rule ref="Generic.WhiteSpace.ArbitraryParenthesesSpacing">
        <properties>
            <property name="spacing" value="0"/>read_notes
            <property name="ignoreNewlines" value="true"/>
        </properties>
    </rule>
    <rule ref="WordPress.WP.Capabilities">
        <properties>
            <property name="custom_capabilities" type="array">
                <element key="0" value="wu_edit_broadcasts"/>
                <element key="1" value="wu_edit_checkout_forms"/>
                <element key="2" value="wu_edit_settings"/>
                <element key="3" value="wu_read_sites"/>
                <element key="4" value="read_notes"/>
                <element key="5" value="edit_notes"/>
                <element key="6" value="delete_notes"/>
                <element key="7" value="wu_edit_payments"/>
                <element key="8" value="wu_edit_sites"/>
            </property>
        </properties>
    </rule>

</ruleset>
