141 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			141 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|  | <? | ||
|  | define('ROOT_DIR', dirname(__FILE__)); | ||
|  | define('RATING_DIR', ROOT_DIR."/uploads/rating/"); | ||
|  | header("Content-type: image/png"); | ||
|  | 
 | ||
|  | $id = intval($_REQUEST['id']); | ||
|  | $query = $_REQUEST['query']; | ||
|  | 
 | ||
|  | $file = RATING_DIR."{$query}/{$id}.png"; | ||
|  | $timelife = 86400; | ||
|  | 
 | ||
|  | if(file_exists($file)){ | ||
|  | 	$modif= time() - @filemtime($file); | ||
|  | 	if($modif < $timelife) | ||
|  | 	{ | ||
|  | 		readfile($file); | ||
|  | 		exit; | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | ob_start(); | ||
|  | function show_error_image($error_text = "Some error with this image!"){ | ||
|  | 	$error_picture_width = strlen($error_text) * 7 + 12; | ||
|  | 	$img = @imagecreatetruecolor($error_picture_width, 30) or die("Cannot Initialize new GD image stream"); | ||
|  | 	$text_color = imagecolorallocate($img, 255, 0, 0); | ||
|  | 	imagestring($img, 3, 7, 8, $error_text, $text_color); | ||
|  | 	header("Content-type: image/png"); | ||
|  | 	imagepng($img); | ||
|  | 	imagedestroy($img); | ||
|  | 	exit; | ||
|  | } | ||
|  | 
 | ||
|  | if(strlen($id) > 6) show_error_image("The request can have maximum 6 characters"); | ||
|  | 
 | ||
|  | if($query == 'game'){ | ||
|  |     function get_xml($url) | ||
|  |     	{ | ||
|  |     	$ch = curl_init($url); | ||
|  |     	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); | ||
|  |     	curl_setopt($ch, CURLOPT_HEADER, 0); | ||
|  |     	curl_setopt($ch, CURLOPT_ENCODING, ""); | ||
|  |     	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"); | ||
|  |     	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); | ||
|  |     	curl_setopt($ch, CURLOPT_TIMEOUT, 120); | ||
|  | 
 | ||
|  |     	$content = curl_exec($ch); | ||
|  |     	curl_close($ch); | ||
|  |     	preg_match("!<ip_rate>(.*?)</ip_rate>!si", $content, $contens); | ||
|  |     	$content = $contens[1]; | ||
|  |     	return $content; | ||
|  |     	} | ||
|  | 
 | ||
|  |     $content = get_xml("http://www.igropoisk.com/rating/{$id}.xml"); | ||
|  | 
 | ||
|  |     $pic = imagecreatefrompng(RATING_DIR."game.png"); | ||
|  |     $color = ImageColorAllocate($pic, 255, 255, 255); | ||
|  |     imagealphablending($pic, true); | ||
|  | 
 | ||
|  |     imagestring($pic, 3, 6, 19, $content, $color); | ||
|  | 
 | ||
|  | } elseif ($query == 'film'){ | ||
|  |     function subX($dbl){ | ||
|  |     	switch ($dbl) { | ||
|  |     		case 1: | ||
|  |     			return 9; | ||
|  |     			break; | ||
|  |     		case 2: | ||
|  |     			return 8; | ||
|  |     			break; | ||
|  |     		case 3: | ||
|  |     			return 7; | ||
|  |     			break; | ||
|  |     		case 4: | ||
|  |     			return 6; | ||
|  |     			break; | ||
|  |     		case 5: | ||
|  |     			return 5; | ||
|  |     			break; | ||
|  |     		case 6: | ||
|  |     			return 4; | ||
|  |     			break; | ||
|  |     		case 7: | ||
|  |     			return 4; | ||
|  |     			break; | ||
|  |     		case 8: | ||
|  |     			return 3; | ||
|  |     			break; | ||
|  |     		case 9: | ||
|  |     			return 2; | ||
|  |     			break; | ||
|  |     	} | ||
|  |     } | ||
|  | 
 | ||
|  | 	$rating = file_get_contents("http://rating.kinopoisk.ru/{$id}.xml"); | ||
|  | 
 | ||
|  | 	preg_match("/kp_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $kp); | ||
|  | 	$kino_rating = $kp[2]; | ||
|  | 	$kino_votes = ($kino_rating) ? $kp[1] : ""; | ||
|  | 	$kino_votes = number_format($kino_votes); | ||
|  | 
 | ||
|  | 	preg_match("/imdb_rating num_vote=['\"](.+)['\"]>(.+)</isU", $rating, $imdb); | ||
|  | 	$imdb_rating = $imdb[2]; | ||
|  | 	$imdb_votes = ($imdb_rating) ? $imdb[1] : ""; | ||
|  | 	$imdb_votes = number_format($imdb_votes); | ||
|  | 
 | ||
|  | 	$pic = ($imdb_rating > 0) ? imagecreatefrompng(RATING_DIR."rating.png") : imagecreatefrompng(RATING_DIR."kinopoisk.png"); | ||
|  | 	$star = imagecreatefrompng(RATING_DIR."star.png"); | ||
|  | 	$color = ImageColorAllocate($pic, 0, 0, 0); | ||
|  | 	$colorDown = ImageColorAllocate($pic, 120, 120, 120); | ||
|  | 	imagealphablending($pic, true); | ||
|  | 
 | ||
|  | 	($kino_rating > 10) ? $kino_rating = 10 : ""; | ||
|  | 	imagestring($pic, 3, 5, 19, $kino_rating, $color); | ||
|  | 	imagestring($pic, 1, 5+(strlen($kino_rating)+1)*6, 23, $kino_votes, $colorDown); | ||
|  | 
 | ||
|  | 	if($imdb_rating > 0) { | ||
|  | 		($imdb_rating > 10) ? $imdb_rating = 10 : ""; | ||
|  | 		imagestring($pic, 3, 191 - (strlen($imdb_rating)-1) * 7, 1, $imdb_rating, $color); | ||
|  | 		imagestring($pic, 1, 188 - (strlen($imdb_votes)-2) * 5, 17, $imdb_votes, $colorDown); | ||
|  | 
 | ||
|  | 		for ($i = 0, $next = 0; $i != (int)$imdb_rating; $i++, $next = $next + 10) { | ||
|  | 			imagecopy($pic, $star, 109 + $next, 26, 0, 0, imagesx($star), imagesy($star)); | ||
|  | 		} | ||
|  | 		$imdb_rating = explode(".", $imdb_rating); | ||
|  | 		if(is_array($imdb_rating) and $imdb_rating[1] != 0) { | ||
|  | 			$dbl = (int)$imdb_rating[1]; | ||
|  | 			imagecopy($pic, $star, 109 + $next, 26, 0, 0, imagesx($star) - subX($dbl), imagesy($star)); | ||
|  | 		} | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | imagesavealpha($pic, true); | ||
|  | imagepng($pic); | ||
|  | imagedestroy($pic); | ||
|  | $cache = ob_get_contents(); | ||
|  | ob_end_clean(); | ||
|  | echo $cache; | ||
|  | $fp = @fopen ($file, "w"); | ||
|  | @fwrite($fp, $cache); | ||
|  | @fclose($fp); | ||
|  | ?>
 |