<?xml version="1.0"?>
<ruleset name="WordPress Coding Standards for Plugins">
	<description>Generally-applicable sniffs for WordPress plugins</description>

	<rule ref="WordPress-Extra" />
	<rule ref="WordPress-Docs" />
	<rule ref="WordPress-VIP-Go" />

	<rule ref="WordPress">
		<exclude name="Generic.Arrays.DisallowShortArraySyntax.Found" />

		<!-- Ingore Empty IF, ELSE, ELSEIF Statement -->
		<exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedIf" />>
		<exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedElse" />>
		<exclude name="Generic.CodeAnalysis.EmptyStatement.DetectedElseif" />>

		<!-- Ignore Yoda ruleset -->
		<exclude name="WordPress.PHP.YodaConditions" />

		<!-- Ignore Class/Filenames ruleset -->
		<exclude name="WordPress.Files.FileName.InvalidClassFileName" />
		<exclude name="WordPress.Files.FileName.NotHyphenatedLowercase" />

		<!-- MissingTranslatorsComment on using _n() -->
		<exclude name="WordPress.WP.I18n.MissingTranslatorsComment" />

		<!-- Ignore Restricted Functions and Vars-->
		<exclude name="WordPressVIPMinimum.Functions.RestrictedFunctions.directory_mkdir" />
		<exclude name="WordPressVIPMinimum.Functions.RestrictedFunctions.flush_rewrite_rules_flush_rewrite_rules" />
		<exclude name="WordPressVIPMinimum.Variables.RestrictedVariables.user_meta__wpdb__users" />
		<!--<exclude name="WordPressVIPMinimum.Functions.RestrictedFunctions" />-->
		<!--<exclude name="WordPressVIPMinimum.Variables.RestrictedVariables" />-->

		<!-- Ignore CommentOut Code -->
		<exclude name="Squiz.Commenting.BlockComment.NoNewLine" />
		<exclude name="Squiz.PHP.CommentedOutCode.Found" />
		<exclude name="Squiz.Commenting.BlockComment.NoEmptyLineBefore" />
		<exclude name="Squiz.Commenting.FileComment.MissingPackageTag"/>
		<exclude name="Squiz.Commenting.VariableComment.Missing" />
		<exclude name="Squiz.Commenting.ClassComment.Missing" />
		<exclude name="Squiz.Commenting.FunctionComment.Missing" />
		<exclude name="Generic.Commenting.DocComment.ShortNotCapital" />>
	</rule>

	<rule ref="WordPress.NamingConventions.ValidVariableName">
		<properties>
			<property name="customPropertiesWhitelist" type="array">
				<!-- From database structure queries. -->
				<element value="Collation"/>
				<element value="Column_name"/>
				<element value="Default"/>
				<element value="Extra"/>
				<element value="Field"/>
				<element value="Index_type"/>
				<element value="Key"/>
				<element value="Key_name"/>
				<element value="Msg_text"/>
				<element value="Non_unique"/>
				<element value="Null"/>
				<element value="Sub_part"/>
				<element value="Type"/>

				<!-- From plugin/theme data. -->
				<element value="authorAndUri"/>
				<element value="Name"/>
				<element value="Version"/>

				<!-- From DOMDocument. -->
				<element value="childNodes"/>
				<element value="firstChild"/>
				<element value="formatOutput"/>
				<element value="lastChild"/>
				<element value="nextSibling"/>
				<element value="nodeName"/>
				<element value="nodeType"/>
				<element value="nodeValue"/>
				<element value="ownerDocument"/>
				<element value="parentNode"/>
				<element value="preserveWhiteSpace"/>
				<element value="previousSibling"/>
				<element value="tagName"/>
				<element value="textContent"/>

				<!-- From PHPMailer. -->
				<element value="AltBody"/>
				<element value="Body"/>
				<element value="CharSet"/>
				<element value="ContentType"/>
				<element value="Encoding"/>
				<element value="Hostname"/>
				<element value="mailHeader"/>
				<element value="MIMEBody"/>
				<element value="MIMEHeader"/>
				<element value="Sender"/>
				<element value="Subject"/>

				<!-- From PHPUnit_Util_Getopt. -->
				<element value="longOptions"/>

				<!-- From POP3. -->
				<element value="ERROR"/>

				<!-- From ZipArchive. -->
				<element value="numFiles"/>
								
			</property>
		</properties>
	</rule>

	<rule ref="PHPCompatibilityWP"/>
	<config name="testVersion" value="7.4"/>

	<arg name="extensions" value="php"/>

	<!-- Show sniff codes in all reports -->
	<arg value="s"/>

	<!-- Allow invoking just `phpcs` on command line without assuming STDIN for file input. -->
	<file>.</file>

	<exclude-pattern>*/dev-lib/*</exclude-pattern>
	<exclude-pattern>*/node_modules/*</exclude-pattern>
	<exclude-pattern>*/vendor/*</exclude-pattern>
	<exclude-pattern>*/dist/*</exclude-pattern>
</ruleset>
