Участник:Всеслав Чародей/Помощник патруля.js

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
//Помощник патруля

//Включается на страницах историй статей без вторичного патрулирования (устаревшее ПАТ)
//Снимает подсветку с учётных записей владельцев флагов ПАТ и АПАТ, а также с УЗ, содержащих в логине «bot», «бот» или «робо»
//Скопировано со страницы Участник:Мастер_теней/Помощник_патруля.js, автор кода -- Мастер теней.

if( $('body').hasClass('ns-0') && $('body').hasClass('action-history') ) 
{
	//alert('включено');
	var history_article = request('https://ru.wikipedia.org/w/index.php?action=history&title=' + mw.config.get( 'wgPageName' ));

	var users = history_article.match( /<span\sclass=.flaggedrevs-pending.>.*?title=.Служебная:Вклад\/([A-zА-яЁё0-9\s-]*).>/g );

	var t = 0;
	var user_list = '';
	while (users && users[t])
	{
		var reg = /Служебная:Вклад\/([A-zА-яЁё0-9\s-]*)/g;
		var user = reg.exec(users[t]);

		if (user != null )
		{
			if (user_list.indexOf(user[1] + ';') > -1 ) { t++; continue; }//учётка уже проверена, пропустить итерацию

			var user_normal = user[1].toLowerCase();

			if (user_normal.indexOf('bot') > -1 || user_normal.indexOf('бот') > -1  || user_normal.indexOf('робо') > -1 || user_normal.indexOf('commonsdelinker') > -1)
			{
				//console.log(user[1]);
				$('a[title="Участник:' + user[1] + '"]').text('БОТ (' + user[1] + ')');
				$('a[title="Участник:' + user[1] + '"]').parent().parent().removeClass('flaggedrevs-pending');
			}
			else
			{
				var prava = request('https://ru.wikipedia.org/w/api.php?format=xml&action=query&list=users&usprop=groups&ususers=' + user[1]);

				var patrol = prava.match( /<g>(editor)<\/g>/ );

				if (patrol != null)
				{
					$('a[title="Участник:' + user[1] + '"]').text('ПАТ (' + user[1] + ')');
					$('a[title="Участник:' + user[1] + '"]').parent().parent().removeClass('flaggedrevs-pending');
				}
				else
				{
					var autopatrol = prava.match( /<g>(autoreview)<\/g>/ );

					if (autopatrol != null)
					{
						$('a[title="Участник:' + user[1] + '"]').text('АПАТ (' + user[1] + ')');
						$('a[title="Участник:' + user[1] + '"]').parent().parent().removeClass('flaggedrevs-pending');
					}
				}
			}
			user_list = user_list + user[1] + ';';//отсмотренные учётки
		}

	t++;
	}

	function request( URL )
	{
		var oRequest = new XMLHttpRequest();
		oRequest.open('GET', URL, false);
		oRequest.send(null);
		
		return oRequest.responseText;
	}
}