Mass Moderation Script for Orkut V1.3

By Sharath Last update Aug 22, 2007 — Installed 284 times.
// ==UserScript==
// @name          Mass Moderation Script for Orkut V1.3
// @namespace     http://technowise.blogspot.com
// @description   Mass-delete and mass ban members from orukt forums.
// @include       http://*orkut.com/CommTopics.aspx*
// @include       http://*orkut.com/CommMemberManage.aspx*
// ==/UserScript==

window.addEventListener("load", function(e) 
{
    var communityIds = ['419822','6413141','1027'];
    var SIG="";
    var POST="";
    var uidIndex=0;cmmIndex=0,actionIndex=0;
    var	spamUserIds;
    var modActionValues=new Array('ban+doDeletePosts','boot+doDeletePosts','ban','doDeletePosts','boot');
    var modActionLabels=new Array('Mass Ban & delete posts','Mass Remove & delete posts','Mass ban members','Mass delete posts','Mass remove members');
    var modActionStatus=new Array('Banning and deleting post(s)...','Removing and deleting post(s)...','Banning member(s)...','Deleting post(s)...','Removing member(s)...');
    var ajaxBusyIcon = document.createElement('img');
    ajaxBusyIcon.setAttribute("src","http://avsharath.googlepages.com/ajax-loader.gif");

    getSigAndPost();
    
    function createXMLHttpRequest()
    {
    	try{ return new XMLHttpRequest(); }catch(e){}
    	try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){}
    	try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
    	return null;
    }
    
    function getSigAndPost()
    {	
    	var xml=createXMLHttpRequest();
    	xml.open("GET","Scrapbook.aspx",true);
    	xml.onreadystatechange=function()
    	{
    		if(xml.readyState==4)
    		{
    			var xmlr1=xml.responseText;
	    		if(!xmlr1.indexOf('textPanel') > -1)
    			{
    				SIG=xmlr1.match(/signature. value="(.+)"/i)[1];
    				POST=xmlr1.match(/name="POST_TOKEN" value="([^"]+)/i)[1];
    			}
    			else
    			{
    				getSigAndPost();
    			}	
    		}
    	}
    	xml.send(null);
    }
    

    function initModeration(statusMsg,spamUserIds,currentActionList)
    {
    	uidIndex=0;
    	cmmIndex=0;
    	actionIndex=0;
    	document.getElementById('statusMsg').style.display = 'block';
    	document.getElementById('statusMsgBody').parentNode.setAttribute('style', 'display:block; border: #D3BE96 1px solid; background-color: #FCF0D8');
    	messageNode = document.createTextNode(statusMsg);	
    	document.getElementById('statusMsgBody').appendChild(messageNode);		
    	document.getElementById('statusMsgBody').appendChild(ajaxBusyIcon);		
    	actionIndex=0;
    	performModerationAction(currentActionList,spamUserIds);
    }
    
    
    function performModerationAction(actionList,spamUserIds)
    {
    	send_data="POST_TOKEN="+encodeURIComponent(POST)+"&signature="+encodeURIComponent(SIG)+"&Action."+actionList[actionIndex];
    	var xmlObj= createXMLHttpRequest();
    	xmlObj.open('POST','http://www.orkut.com/CommMemberManage.aspx?cmm='+communityIds[cmmIndex]+'&uid='+spamUserIds[uidIndex], true);
    	xmlObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xmlObj.send(send_data);
        xmlObj.onreadystatechange=function()
    	{
    		if(xmlObj.readyState==4)
    		{
    			var xmlrtr=xmlObj.responseText;
    			cmmIndex++;
    			if( cmmIndex < communityIds.length )
    			{
    				performModerationAction(actionList,spamUserIds);
    			}
    			else
    			if(uidIndex < spamUserIds.length-1)
    			{
    				uidIndex++;	
    				cmmIndex=0;
    				performModerationAction(actionList,spamUserIds);
    			}
    			else
    			if( actionIndex < actionList.length-1)
    			{
    				actionIndex++;
    				uidIndex=0;	
    				cmmIndex=0;
    				performModerationAction(actionList,spamUserIds);						
    			}
    			else //Current actions finished! Remove the busy icon.
    			{
    				document.getElementById('statusMsgBody').removeChild(document.getElementById('statusMsgBody').lastChild);				
    				document.getElementById('statusMsgBody').appendChild(document.createTextNode("Done!"));		
    				document.getElementById('statusMsgBody').appendChild(document.createElement("br"));		
    			}
    		}
    	}
    }
    
    
    
    if(document.location.href.indexOf("CommTopics.aspx") != -1) //For community topics page.
    {
    
    
    	/*Remove the above list of ID's and add the list of community ID's. 
    	Make sure to put it in single quotes and saparate it with commas.
    	DO NOT EDIT ANYTHING BELOW THIS LINE (Unless you know Javascript language)*/
    
    
    	//Find if manage link is available(to know if user has moderator rights to this community).
    	for(var i=0;i<document.links.length;i++)
    	{
    		var linkIsProfile=/Profile/.test(document.links[i]);
    		if(linkIsProfile)
    		{
    			var moderatorRightsAvailable=/manage/.test(document.links[i+1].innerHTML);
    			if(  !  moderatorRightsAvailable )
    				return;
    		}
    	}
    
    	spamUserIds=new Array();
    
    
    	//Add the checkboxes to select individual topics.

	
	if(document.getElementById('selecionar1') == null)//If chckboxes are not already created by 'Orkut Mass Delete Tool'
	{
	    	for(i=2;i<document.forms.length;i++)
    		{
	    		var myChBox=document.createElement("input");
			myChBox.type='checkbox';
			myChBox.id='chBox'+i;
			folderPic = document.forms[i].parentNode.parentNode.childNodes[1];
			document.forms[i].parentNode.parentNode.insertBefore(myChBox, folderPic);   
    		}
	}
  	
    	var actionSelect= document.createElement('select');
    	actionSelect.value='Moderation action:';
    	actionSelect.id='modSelect';
    	var modDisOption=new Option("Action...");
    	modDisOption.disabled="disabled";
    	modDisOption.selected="selected";
    	actionSelect.options.add(modDisOption);
    
    	for(i=0;i<modActionValues.length;i++)
    	{
    		var modOption=new Option(modActionLabels[i]);
    		modOption.value=modActionValues[i];
    		actionSelect.options.add(modOption);
    	}

    
    	actionSelect.addEventListener('change', function()
    	{ 	
    		if(document.getElementById('modSelect').selectedIndex == 0)
    			return;
    
    		el=document.getElementsByTagName('input');
    		var k=0;
    		for(i=0;i<el.length;i++)
    		{
    			if(el[i].type=='checkbox' && el[i].checked == true  )
    			{
    				spamUserIds[k]=el[i].parentNode.innerHTML.match(/uid=([^"]+)/i)[1]
    				k++;
    			}
    
    		}
    	
    		if (k > 0 )
    		{
			if(confirm("Are you sure you want to "+modActionLabels[document.getElementById('modSelect').selectedIndex - 1 ]+"?") )
			{
    		
				var currentActionList=document.getElementById('modSelect').value.split("+");
    				statusMsg=modActionStatus[document.getElementById('modSelect').selectedIndex - 1];
	    			initModeration(statusMsg,spamUserIds,currentActionList);
			}
    		}
    		else
    		{
    			alert("No topic selected!");		
    		}
		document.getElementById('modSelect').selectedIndex=0;
    	},false);
    
    
    	var selectAllButton=document.createElement('button');
    	selectAllButton.innerHTML="All";
    	var selectNoneButton=document.createElement('button');
    	selectNoneButton.innerHTML="None";
    	selectAllButton.addEventListener("click",function(e){ selectCheckBoxes(true);},true);
    	selectNoneButton.addEventListener("click",function(e){ selectCheckBoxes(false);},true);
    
    	function selectCheckBoxes(status)
    	{
    		el=document.getElementsByTagName('input');
    		for(i=0;i<el.length;i++)
    		{
    			if(el[i].type=='checkbox')
    			{
    				el[i].checked = status;
    			}
    		}
    	}
    
    	document.forms[1].parentNode.appendChild(document.createTextNode("Select:"));		
    	document.forms[1].parentNode.appendChild(selectAllButton);
    	document.forms[1].parentNode.appendChild(selectNoneButton);
    	document.forms[1].parentNode.appendChild(actionSelect);	
    }
    else //for member manage page
    if(document.location.href.indexOf("CommMemberManage.aspx") != -1) 
    {
    
    	var userId=document.location.href.split("=")[2];
    	var actionSelect= document.createElement('select');
    	actionSelect.value='Moderation action:';
    	actionSelect.id='modSelect';
    	var modDisOption=new Option("Action...");
    	modDisOption.disabled="disabled";
    	modDisOption.selected="selected";
    	actionSelect.options.add(modDisOption);
    
    	for(i=0;i<modActionValues.length;i++)
    	{
    		var modOption=new Option(modActionLabels[i]);
    		modOption.value=modActionValues[i];
    		actionSelect.options.add(modOption);
    	}
    
    	actionSelect.addEventListener('change', function()
    	{ 	
    		if(document.getElementById('modSelect').selectedIndex == 0)
    			return;
		if(confirm("Are you sure you want to "+modActionLabels[document.getElementById('modSelect').selectedIndex - 1 ]+"?"))
		{
    
    			spamUserIds= new Array(userId);
    			var currentActionList=document.getElementById('modSelect').value.split("+");
    			statusMsg=modActionStatus[document.getElementById('modSelect').selectedIndex - 1];
	    		initModeration(statusMsg,spamUserIds,currentActionList);
		}
		document.getElementById('modSelect').selectedIndex=0;
    	},false);
    
	document.getElementsByTagName('table')[5].appendChild(actionSelect);
    
    }

},false);