<?xml version="1.0"?>
<ruleset name="WordPress Coding Standards">
    <description>MainWP dev PHP_CodeSniffer ruleset.</description>

    <!-- Check all PHP files in directory tree by default. -->
    <file>.</file>

	<exclude-pattern>*/vendor/*</exclude-pattern>
	<exclude-pattern>*/bin/*</exclude-pattern>
	<exclude-pattern>*/.github/*</exclude-pattern>
	<exclude-pattern>*/tests/*</exclude-pattern>
	<exclude-pattern>libs/</exclude-pattern>
	<exclude-pattern>assets/js/apexcharts/*</exclude-pattern>

    <arg value="sp" />
	<arg name="extensions" value="php" />
	<arg name="basepath" value="." />
	<arg name="parallel" value="8" />

	<!-- Configs -->
	<config name="minimum_supported_wp_version" value="5.2" />

	<!-- Rules -->
	<rule ref="WordPress">
		<exclude name="WordPress.NamingConventions.ValidVariableName" />
		<exclude name="WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition" />

		<!-- Disable Strict comparison in array check. Not applicable in the mojority of cases. -->
		<exclude name="WordPress.PHP.StrictInArray" />

		<exclude name="WordPress.WP.I18n" />

		<exclude name="WordPress.Files.FileName.InvalidClassFileName" />
		<exclude name="WordPress.DB.DirectDatabaseQuery.NoCaching" />
		<exclude name="WordPress.WP.CapitalPDangit.Misspelled" />

		<exclude name="Universal.ControlStructures.DisallowAlternativeSyntax.FoundIfWithInlineHTML" />
		<exclude name="Universal.ControlStructures.DisallowAlternativeSyntax.FoundForeachWithInlineHTML" />
		<exclude name="Universal.ControlStructures.DisallowAlternativeSyntax.FoundIf" />
		<exclude name="Universal.ControlStructures.IfElseDeclaration.NoNewLine" />
		<exclude name="Universal.Classes.RequireFinalClass.NonFinalClassFound" />
		<exclude name="Universal.Namespaces.EnforceCurlyBraceSyntax.Forbidden" />

		<exclude name="Generic.Commenting.Todo" />
		<exclude name="Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition" />
		<exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedCatch" />
	</rule>

	<rule ref="WordPress">
		<exclude name="Generic.WhiteSpace.DisallowSpaceIndent" />
	</rule>

	<rule ref="Generic.WhiteSpace.ScopeIndent">
		<properties>
			<property name="indent" value="4"/>
			<property name="tabIndent" value="false"/>
		</properties>
	</rule>

	<rule ref="Generic.WhiteSpace.DisallowTabIndent" />

	<rule ref="WordPress.Files.FileName.NotHyphenatedLowercase">
		<exclude-pattern>/cron/backups_continue\.php$</exclude-pattern>
	</rule>
</ruleset>
