<?php

$appid="your yahoo app id";
$termExtractionUrl="http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction";

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>

<script type="text/javascript"> 
function emptyDisplay(){
 	if (confirm("Are you sure you want to delete the current text?")){ 
		window.document.MyForm.inputcontent.value='';
		document.getElementById('myresponses').innerHTML="";return false;
	}
	return false;
}


</script>

<link rel="stylesheet" rel="text/css" href="./style.css"/>
<title>Yahoo! Term Extractor</title>
</head>
<body>
<?php

require "GenericHTTPResponse.php";


if (array_key_exists('_submit_check', $_POST)) {
	// form has been posted
	// Submit content to yahoo service
	// get result
	$arguments=array("appid"=>$appid, "context"=>$_POST['inputcontent']); 
	$result_of_post=HTTP_Post($termExtractionUrl, $arguments);
	$xml=strip_headers($result_of_post);
	$xml_array=inputxml2php($xml);
    $printable_result="";
	for($i=1;$i<count($xml_array)-1; $i++){
		if($i>1&&$i<count($xml_array)-1){
			$printable_result.=", ";
		}	
		$printable_result.=$xml_array[$i]['value'];
	}
}

function strip_headers($response){
	$myresponse=&New GenericHTTPResponse;
	$myresponse->chewRestResponse($response);
	return $myresponse->getHTTPBody(); 
}

function inputxml2php($inputxml) {

   $xml_parser = xml_parser_create();
   xml_parse_into_struct($xml_parser, $inputxml, $arr_vals,$index);
   xml_parser_free($xml_parser);
   return $arr_vals;

}

function HTTP_Post($URL,$data, $referrer="") {
	// expects data to be an array !!!
        // parsing the given URL
        $URL_Info=parse_url($URL);

        // Building referrer
        if($referrer=="") // if not given use this script as referrer
          $referrer=$_SERVER["PHP_SELF"];

        // making string from $data 
	
        foreach ($data as $key=>$value)
          $values[]="$key=".urlencode($value);
        $data_string=implode("&",$values);
      
        // Find out which port is needed - if not given use standard (=80)
        if(!isset($URL_Info["port"]))
          $URL_Info["port"]=80;
  
	    $request="";
        // building POST-request:
        $request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
        $request.="Host: ".$URL_Info["host"]."\n";
        $request.="Referer: $referrer\n";
        $request.="Content-type: application/x-www-form-urlencoded\n";
        $request.="Content-length: ".strlen($data_string)."\n";
        $request.="Connection: close\n";
        $request.="\n";
        $request.=$data_string."\n";


		$result="";
        $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
        fputs($fp, $request);
        while(!feof($fp)) {
            $result .= fgets($fp, 128);
        }
        fclose($fp);

        return $result;
      }

?>

<div class="title">
Yahoo! Term Extraction tag guesser
</div>
<div class="leftcolumn">
<form method="post" name="MyForm"  action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="_submit_check" value="1"/> 
<div class="textarea">
<textarea name="inputcontent"  COLS=40 ROWS=6 >
<?php 
	if(isset($_POST['inputcontent'])){
			echo htmlentities(stripcslashes($_POST['inputcontent'])); 
		}?>
</textarea>
</div>
<div class="controls">
<input type="submit" value="Get keywords!" />
<input type="button" value="Reset" onClick="emptyDisplay();" />
</div>
</form>
</div>
<div class="responses">
<div class="subtitle">
Tag suggestions:
</div>
<div id="myresponses">
<?php if(isset($printable_result)){
	echo $printable_result;
	}
	?>
</div>
</div>

</body>
</html>
