Ignore Users

By wz Last update Mar 25, 2009 — Installed 111 times.

There are 1 previous version of this script.

// ==UserScript==
// @name           Ignore Users
// @namespace      vg247.com
// @description    Ignore comments by certain users.
// @include        http://www.vg247.com/*
// ==/UserScript==

function get_ignored_users()
{
	// get array of ignored users
	var users = GM_getValue('ignored_users');
	if(!users)
		return new Array();
	return users.split(';');
}

function show_ignored_users()
{
	var ignored_users = get_ignored_users();
	if(ignored_users.length == 0)
		alert('No users are currently being ignored.');
	else
		alert(ignored_users);
}

function add_ignored_user()
{
	// get user
	var user = prompt('Ignore the following user:');
	if(!user)
		return;
	
	// make user lowercase
	user = user.toLowerCase();
	
	// get currently ignored users
	var users = get_ignored_users();
	
	// search if user is already ignored
	for(i = 0; i < users.length; ++i)
	{
		if(users[i] === user)
		{
			alert('User "' + user + '" is already being ignored.');
			return;
		}
	}
	
	// add user to ignored users
	users.push(user);
	
	// show all comments
	unignore_users();
	
	// save ignored users array
	GM_setValue('ignored_users', users.join(';'));
	
	// hide comments by user
	ignore_users();
	
	// show status message
	alert('User "' + user + '" is being ignored.');
}

function remove_ignored_user()
{
	// get user
	var user = prompt('No longer ignore the following user:');
	if(!user)
		return;
	
	// make user lowercase
	user = user.toLowerCase();
	
	// get currently ignored users
	var tmp_users = get_ignored_users();
	
	// new ignored users array
	var users = new Array();
	
	// add users not equal to user
	for(i = 0; i < tmp_users.length; ++i)
	{
		if(tmp_users[i] !== user)
			users.push(tmp_users[i]);
	}
	
	// show all comments
	unignore_users();
	
	// save ignored users array
	GM_setValue('ignored_users', users.join(';'));
	
	// hide comments by ignored users
	ignore_users();
	
	// show status message
	alert('User "' + user + '" is no longer being ignored.');
}

function ignore_users()
{
	// the list of ignored users
	var ignored_users = get_ignored_users();
	
	// the list of comments
	var comment_list;

	// find comment list
	var ordered_lists = document.getElementsByTagName('ol');
	for(i = 0; i < ordered_lists.length; ++i)
	{
		if(ordered_lists[i].className == 'commentlist')
		{
			comment_list = ordered_lists[i];
			break;
		}
	}

	if(comment_list)
	{
		// get comments
		var comments = comment_list.getElementsByTagName('li');

		// hide all comments by ignored authors
		for(i = 0; i < comments.length; ++i)
		{
			for(j = 0; j < ignored_users.length; ++j)
			{
				var user = ignored_users[j].toLowerCase();
				
				if(user.indexOf(' ') > -1)
					user = user.substr(0, user.indexOf(' '));
				
				if(comments[i].className.indexOf('comment-author-' + user) > -1)
				{
					// hide item
					comments[i].style.display = 'none';
				}
			}
		}
	}
  
	// the thread
	var thread = document.getElementById('thread');

	if(thread)
	{
		// get posts
		var posts = thread.getElementsByTagName('li');

		// hide all posts by ignored authors
		for(i = 0; i < posts.length; ++i)
		{
			var threadauthor;
			
			// find thread author div
			var post_divs = posts[i].getElementsByTagName('div');
			for(j = 0; j < post_divs.length; ++j)
			{
				if(post_divs[j].className.indexOf('threadauthor') > -1)
				{
					threadauthor = post_divs[j].innerHTML.toLowerCase();
					break;
				}
			}
			
			for(j = 0; j < ignored_users.length; ++j)
			{
				var user = ignored_users[j].toLowerCase();
				
				if(threadauthor.indexOf(user) > -1)
				{
					// hide item
					posts[i].style.display = 'none';
				}
			}
		}
	}
}

function unignore_users()
{
	// the list of ignored users
	var ignored_users = get_ignored_users();
	
	// the list of comments
	var comment_list;

	// find comment list
	var ordered_lists = document.getElementsByTagName('ol');
	for(i = 0; i < ordered_lists.length; ++i)
	{
		if(ordered_lists[i].className == 'commentlist')
		{
			comment_list = ordered_lists[i];
			break;
		}
	}

	if(comment_list)
	{
		// get comments
		var comments = comment_list.getElementsByTagName('li');

		// hide all comments by ignored authors
		for(i = 0; i < comments.length; ++i)
		{
			for(j = 0; j < ignored_users.length; ++j)
			{
				if(comments[i].className.indexOf('comment-author-' + ignored_users[j].toLowerCase()) > -1)
				{
					// show item
					comments[i].style.display = null;
				}
			}
		}
	}

	// the thread
	var thread = document.getElementById('thread');

	if(thread)
	{
		// get posts
		var posts = thread.getElementsByTagName('li');

		// show all posts by ignored authors
		for(i = 0; i < posts.length; ++i)
		{
			var threadauthor;
			
			// find thread author div
			var post_divs = posts[i].getElementsByTagName('div');
			for(j = 0; j < post_divs.length; ++j)
			{
				if(post_divs[j].className.indexOf('threadauthor') > -1)
				{
					threadauthor = post_divs[j].innerHTML.toLowerCase();
					break;
				}
			}
			
			for(j = 0; j < ignored_users.length; ++j)
			{
				var user = ignored_users[j].toLowerCase();
				
				if(threadauthor.indexOf(user) > -1)
				{
					// show item
					posts[i].style.display = null;
				}
			}
		}
	}
}

// register commands
GM_registerMenuCommand("Show ignored users", show_ignored_users);
GM_registerMenuCommand("Add ignored user", add_ignored_user);
GM_registerMenuCommand("Remove ignored user", remove_ignored_user);
GM_registerMenuCommand("Ignore users", ignore_users);
GM_registerMenuCommand("Un-Ignore users", unignore_users);

// ignore users when page loads
window.addEventListener("load", ignore_users, false);