<?xml version="1.0"?>
<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="WordPress Coding Standards" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/squizlabs/PHP_CodeSniffer/master/phpcs.xsd">

	<description>The Coding standard for the WordPress Coding Standards itself.</description>

	<file>.</file>

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

	<!-- Exclude Composer vendor directory. -->
	<exclude-pattern>*/vendor/*</exclude-pattern>

	<rule ref="WordPress">
		<exclude name="WordPress.Files.FileName"/>
		<exclude name="WordPress.NamingConventions.ValidVariableName"/>
		<exclude name="WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition"/>
		<exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace" />
		<exclude name="WordPress.Security.EscapeOutput.OutputNotEscaped" />
		<exclude name="WordPress.DB.PreparedSQL.InterpolatedNotPrepared" />
		<exclude name="WordPress.DB.DirectDatabaseQuery.DirectQuery" />
		<exclude name="WordPress.DB.DirectDatabaseQuery.NoCaching" />
		<exclude name="WordPress.WP.GlobalVariablesOverride.Prohibited" />
		<exclude name="Generic.Files.LineEndings.InvalidEOLChar" />
		<exclude name="WordPress.Security.NonceVerification.Recommended" />
		<exclude name="WordPress.Security.NonceVerification.Missing" />
		<exclude name="WordPress.PHP.NoSilencedErrors.Discouraged" />
		<exclude name="WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize" />
		<exclude name="WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize" />
		<exclude name="WordPress.WP.I18n.MissingTranslatorsComment" />
	</rule>

	<rule ref="WordPress.WP.I18n">
		<properties>
			<property name="text_domain" type="array" value="prevent-brute-force-login"/>
		</properties>
	</rule>

	<!-- Enforce PSR1 compatible namespaces. -->
	<rule ref="PSR1.Classes.ClassDeclaration"/>

	<rule ref="WordPress.Arrays.MultipleStatementAlignment">
		<properties>
			<property name="alignMultilineItems" value="!=100"/>
			<property name="exact" value="false" phpcs-only="true"/>
		</properties>
	</rule>

	<rule ref="PSR2.Methods.FunctionClosingBrace"/>

	<!-- Check code for cross-version PHP compatibility. -->
	<config name="testVersion" value="5.4-"/>
	<rule ref="PHPCompatibility"> -->
		<!-- Exclude PHP constants back-filled by PHPCS. -->
		<exclude name="PHPCompatibility.Constants.NewConstants.t_finallyFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_yieldFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_ellipsisFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_powFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_pow_equalFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_spaceshipFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_coalesceFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_coalesce_equalFound"/>
		<exclude name="PHPCompatibility.Constants.NewConstants.t_yield_fromFound"/>
	</rule>

	<rule ref="WordPress.NamingConventions.PrefixAllGlobals.DeprecatedWhitelistCommentFound"> -->
		<!-- False positive for whitelist comment recognition, but no use fixing this now
			 as the WPCS native whitelist comments are deprecated anyhow. -->
		<exclude-pattern>/WordPress/AbstractClassRestrictionsSniff\.php$</exclude-pattern>
	</rule>

</ruleset>
