<?php
$username="vivomikix";
echo "Cerco: ".$username."<br/><br/>Friends1<br/>";
//Get level 1 friends aka user friends
$friends1=getTwitterFriends($username);
//Get level 2 friends aka friends of friends
print_r($friends1);
echo "<br/><br/>Friends2<br/>";
$friends2=array();
foreach($friends1 as $f){
	$friends2[$f]=getTwitterFriends($f);
}
print_r($friends2);
//Get level 3 friends aka go get a coffee
$friends3=array();
foreach($friends2 as $a){
	for($i=0; $i<sizeof($a); $i++){
		$friends3[$a[$i]]=getTwitterFriends($a[$i]);
	}
}
echo "<br/><br/>Friends3<br/>";
print_r($friends3);
//Create XML file for graph FORMATO:
// <node id="n1"/>
// <edge id="e1" source="n0" target="n1"/>
$VBOF='<?xml version="1.0" encoding="UTF-8"?><gexf xmlns="http://www.gexf.net/1.2draft" version="1.2"><meta lastmodifieddate="2009-03-20"><creator>mikinum7</creator><description>Your Twitter friends graph</description></meta><graph mode="static" defaultedgetype="directed">';
$VEOF='</graph></gexf>';
$xmlNodesBOF="<nodes>";
$xmlNodesEOF="</nodes>";
$xmlEdgesBOF="<edges>";
$xmlEdgesEOF="</edges>";
$xmlFriends1="";
foreach($friends1 as $f){
	$xmlFriends1.="<node id=\"".$f."\" label=\"".$f."\"/>";			
}
$xmlFriends2="";
foreach($friends2 as $a){
	$xmlFriends2.=createXMLNodes($a);
}
$xmlFriends3="";
foreach($friends3 as $a){
	$xmlFriends3.=createXMLNodes($a);
}
$xmlNodes=$xmlFriends1.$xmlFriends2.$xmlFriends3;
$xmlEdges="";
$numEdge=0;
//creo archi primo livello
foreach($friends1 as $f){
	$xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$username."\" target=\"".$f."\"/>";
	$numEdge++;
}
//creo archi secondo livello
foreach($friends1 as $f){
	foreach($friends2[$f] as $f2){
		$xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$f."\" target=\"".$f2."\"/>";
		$numEdge++;
	}
}
//create level 3 edges
foreach($friends1 as $f){
	foreach($friends2[$f] as $f2){
		foreach($friends3[$f2] as $f3){
			$xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$f2."\" target=\"".$f3."\"/>";
			$numEdge++;
		}
	}
}		

$xml=$VBOF.$xmlNodesBOF.$xmlNodes.$xmlNodesEOF.$xmlEdgesBOF.$xmlEdges.$xmlEdgesEOF.$VEOF;		
$write_file = fopen("grafo.gexf","w");
fwrite($write_file,$xml);
fclose($write_file);

function getTwitterFriends($user){
	$jsonurl = 'http://api.twitter.com/1/statuses/friends/'.$user.'.json';
	$json = @file_get_contents($jsonurl,0,null,null);
	if($json === false){
		echo 'badrequest for '.$user.'<br/>';
		//exit;
		return null;
	}
	$json_output = json_decode($json);
	$friends=array();
	for($i=0; $i<sizeof($json_output); $i++){
		$friends[$i]=$json_output[$i]->{'screen_name'};
	}
	return $friends;
}

function createXMLNodes($array){
	$nodiArray="";
	//foreach($array as $a){
		for($i=0; $i<sizeof($a); $i++){
			$nodiArray.="<node id=\"".$a[$i]."\" label=\"".$a[$i]."\"/>";				
		}
	//}
	return $nodiArray;
}
?>