<?xml version="1.0"?>
<ruleset name="WordPress Coding Standards">
	<!-- See https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
	<!-- See https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/blob/develop/WordPress-Core/ruleset.xml -->

	<description>WooCommerce dev PHP_CodeSniffer rule set.</description>

	<!-- Exclude paths -->
	<exclude-pattern>docs/</exclude-pattern>
	<exclude-pattern>build/</exclude-pattern>
	<exclude-pattern>*/node_modules/*</exclude-pattern>
	<exclude-pattern>*/vendor/*</exclude-pattern>

	<!-- Configs -->
	<config name="minimum_supported_wp_version" value="4.7"/>
	<config name="testVersion" value="5.6-"/>

	<!-- Rules -->
	<rule ref="PHPCompatibility">
		<exclude name="PHPCompatibility.PHP.NewFunctions.hash_equalsFound"/>
		<exclude name="PHPCompatibility.PHP.NewInterfaces.jsonserializableFound"/>
		<exclude name="PHPCompatibility.PHP.NewKeywords.t_namespaceFound"/>
	</rule>

	<rule ref="WordPress">
		<exclude name="WordPress.VIP.DirectDatabaseQuery.NoCaching"/>
		<exclude name="WordPress.VIP.DirectDatabaseQuery.DirectQuery"/>
		<exclude name="WordPress.VIP.DirectDatabaseQuery.SchemaChange"/>
		<exclude name="WordPress.VIP.FileSystemWritesDisallow.file_ops_fwrite"/>
		<exclude name="WordPress.VIP.OrderByRand"/>
		<exclude name="WordPress.VIP.RestrictedFunctions"/>
		<exclude name="WordPress.VIP.RestrictedVariables.user_meta__wpdb__usermeta"/>
		<exclude name="WordPress.VIP.PostsPerPage.posts_per_page_posts_per_page"/>
		<exclude name="WordPress.VIP.RestrictedVariables.cache_constraints___COOKIE"/>
		<exclude name="WordPress.VIP.RestrictedVariables.cache_constraints___SERVER__REMOTE_ADDR__"/>
	</rule>
	<rule ref="WordPress.VIP.ValidatedSanitizedInput">
		<properties>
			<property name="customSanitizingFunctions" type="array" value="wc_clean,wc_sanitize_tooltip,wc_format_decimal,wc_stock_amount,wc_sanitize_permalink,wc_sanitize_textarea"/>
		</properties>
	</rule>
	<rule ref="WordPress.XSS.EscapeOutput">
		<properties>
			<property name="customEscapingFunctions" type="array" value="wc_help_tip,wc_sanitize_tooltip,wc_selected,wc_kses_notice"/>
		</properties>
	</rule>
	<rule ref="WordPress.WP.I18n">
		<properties>
			<property name="text_domain" type="array" value="woocommerce_payment_qiwi"/>
		</properties>
	</rule>
	<rule ref="WordPress.Files.FileName.InvalidClassFileName">
		<exclude-pattern>includes/**/abstract-*.php</exclude-pattern>
	</rule>
	<rule ref="Generic.Commenting"/>
	<rule ref="Squiz.Commenting">
		<exclude name="Squiz.Commenting.LongConditionClosingComment"/>
		<exclude name="Squiz.Commenting.PostStatementComment"/>
	</rule>
	<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine"/>
	<rule ref="WordPress.Files.FileName.NotHyphenatedLowercase">
		<exclude-pattern>languages/</exclude-pattern>
	</rule>

	<!-- CLI commands require PHP >= 5.5 instead of 5.2 -->
	<rule ref="PHPCompatibility.PHP.NewLanguageConstructs.t_ns_separatorFound"/>
	<rule ref="PHPCompatibility.PHP.NewFunctions.array_columnFound"/>
	<rule ref="PHPCompatibility.PHP.NewClosure.Found"/>
	<rule ref="WordPress.Files.FileName.NotHyphenatedLowercase">
		<exclude-pattern>languages/</exclude-pattern>
	</rule>
</ruleset>
