<?xml version="1.0"?>
<ruleset name="MediaWiki">
	<rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
		<exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
		<exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
	</rule>
	<rule ref="MediaWiki.NamingConventions.ValidGlobalName">
		<properties>
			<property name="ignoreList[]" value="$IP" />
		</properties>
	</rule>
	<rule ref="MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix">
		<exclude-pattern>*/maintenance/doMaintenance\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/CommandLineInc\.php</exclude-pattern>
	</rule>
	<rule ref="Generic.PHP.RequireStrictTypes">
		<include-pattern>*/OutputTransform/*</include-pattern>
		<include-pattern>*/Parsoid/*</include-pattern>
	</rule>
	<rule ref="Generic.Files.LineLength">
		<exclude-pattern>*/languages/messages/*</exclude-pattern>
		<exclude-pattern>*/tests/*</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Files.ClassMatchesFilename.NotMatch">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/maintenance/cleanupTitles\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/edit\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/getText\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/importDump\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/install\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/jsparse\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/lag\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/date-formats\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/mysql\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/parse\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/rebuildImages\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/renderDump\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/shell\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/sql\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/update\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/userOptions\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/view\.php</exclude-pattern>
		<!-- Skip violations in some tests for now -->
		<exclude-pattern>*/tests/parser/*</exclude-pattern>
		<exclude-pattern>*/tests/phpunit/maintenance/*</exclude-pattern>
		<exclude-pattern>*/tests/phpunit/bootstrap\.php</exclude-pattern>
		<exclude-pattern>*/tests/phpunit/phpunit\.php</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Files.ClassMatchesFilename.WrongCase">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/maintenance/language/alltrans\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/digit2html\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/langmemusage\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/mctest\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/rebuildall\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/rebuildmessages\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/rebuildrecentchanges\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/rebuildtextindex\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/storage/checkStorage\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/storage/trackBlobs\.php</exclude-pattern>
	</rule>
	<rule ref="Generic.PHP.NoSilencedErrors.Discouraged">
		<exclude-pattern>*/tests/*</exclude-pattern>
	</rule>
	<rule ref="Generic.Files.OneObjectStructurePerFile.MultipleFound">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/maintenance/dumpIterator\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/findDeprecated\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/StatOutputs\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/language/generateCollationData\.php</exclude-pattern>
		<!-- We don't care that much about violations in tests -->
		<exclude-pattern>*/tests/*</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Usage.AssignmentInReturn.AssignmentInReturn">
		<exclude-pattern>*/tests/phpunit/*</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Usage.ForbiddenFunctions.popen">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/includes/GlobalFunctions\.php</exclude-pattern>
		<exclude-pattern>*/includes/libs/filebackend/FSFileBackend\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/includes/SevenZipStream\.php</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Usage.ForbiddenFunctions.proc_open">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/includes/Export/DumpPipeOutput\.php</exclude-pattern>
		<exclude-pattern>*/includes/ResourceLoader/Image\.php</exclude-pattern>
		<exclude-pattern>*/includes/shell/Command\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/includes/TextPassDumper\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/mysql\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/storage/recompressTracked\.php</exclude-pattern>
		<exclude-pattern>*/tests/parser/editTests\.php</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Usage.ForbiddenFunctions.shell_exec">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
		<exclude-pattern>*/maintenance/updateCredits\.php</exclude-pattern>
	</rule>
	<rule ref="MediaWiki.Usage.ForbiddenFunctions.system">
		<!--
			Continue to allow existing violations, but enable the sniff to prevent
			any new occurrences.
		-->
		<exclude-pattern>*/maintenance/mwdocgen\.php</exclude-pattern>
	</rule>
	<rule ref="Generic.Arrays.DisallowShortArraySyntax">
		<!--
			T273340: Rule not to be enabled on any other file.
			PHPVersionCheck.php requires syntax to be old PHP compatible.
			The rest should therefore use [] rather than array() as per the
			MediaWiki style guide.
		-->
		<include-pattern>includes/PHPVersionCheck\.php</include-pattern>
	</rule>
	<file>.</file>
	<arg name="encoding" value="UTF-8"/>
	<arg name="extensions" value="php"/>
	<exclude-pattern type="relative">^(extensions|skins|cache)/*</exclude-pattern>
	<exclude-pattern type="relative">^docs/(coverage|html|js|latex)/*</exclude-pattern>
	<exclude-pattern>LocalSettings(-installer)?\.php</exclude-pattern>
</ruleset>
