/renderAvatarsMap/getMapTexture.php |
@@ -0,0 +1,186 @@ |
<?php |
|
########################################################################### |
## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ## |
########################################################################### |
## This is a script that uses Corrade's HTTP server to get the UUID of ## |
## the current region map, then downloads the map as a PNG which then ## |
## gets encoded to a Base64 string and echoed from this script. ## |
########################################################################### |
|
########################################################################### |
## CONFIGURATION ## |
########################################################################### |
|
// The configuration file for this script containing the settings. |
include_once("config.php"); |
|
########################################################################### |
## INTERNALS ## |
########################################################################### |
|
########################################################################### |
## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ## |
########################################################################### |
function wasKeyValueGet($key, $data) { |
return array_reduce( |
explode( |
"&", |
$data |
), |
function($o, $p) { |
$x = explode("=", $p); |
return array_shift($x) != $o ? $o : array_shift($x); |
}, |
$key |
); |
} |
/////////////////////////////////////////////////////////////////////////// |
// Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 // |
/////////////////////////////////////////////////////////////////////////// |
function wasCSVToArray($csv) { |
$l = array(); |
$s = array(); |
$m = ""; |
for ($i = 0; $i < strlen($csv); ++$i) { |
switch ($csv{$i}) { |
case ',': |
if (sizeof($s) == 0 || !current($s) == '"') { |
array_push($l, $m); |
$m = ""; |
break; |
} |
$m .= $csv{$i}; |
continue; |
case '"': |
if ($i + 1 < strlen($csv) && $csv{$i} == $csv{$i + 1}) { |
$m .= $csv{$i}; |
++$i; |
break; |
} |
if (sizeof($s) == 0|| !current($s) == $csv[$i]) { |
array_push($s, $csv{$i}); |
continue; |
} |
array_pop($s); |
break; |
default: |
$m .= $csv{$i}; |
break; |
} |
} |
array_push($l, $m); |
return $l; |
} |
|
#### |
# I. Get the UUID of the map image for the current region |
$params = array( |
'command' => 'getgridregiondata', |
'group' => $GROUP, |
'password' => $PASSWORD, |
'data' => 'MapImageID' |
); |
array_walk($params, |
function(&$value, $key) { |
$value = urlencode($key)."=".urlencode($value); |
} |
); |
$postvars = implode('&', $params); |
if (!($curl = curl_init())) { |
print 0; |
return; |
} |
|
curl_setopt($curl, CURLOPT_URL, $URL); |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
curl_setopt($curl, CURLOPT_POST, true); |
curl_setopt($curl, CURLOPT_POSTFIELDS, $postvars); |
$return = curl_exec($curl); |
curl_close($curl); |
|
$success = urldecode( |
wasKeyValueGet( |
"success", |
$return |
) |
); |
|
// Unable to retrieve the map image? |
if($success == 'False') return -1; |
|
$mapUUID = wasCSVToArray( |
urldecode( |
wasKeyValueGet( |
"data", |
$return |
) |
) |
)[1]; |
|
#### |
# II. Download the map image as a PNG file. |
$params = array( |
'command' => 'download', |
'group' => $GROUP, |
'password' => $PASSWORD, |
'item' => $mapUUID, |
'type' => 'Texture', |
'format' => 'Png' |
); |
array_walk($params, |
function(&$value, $key) { |
$value = rawurlencode($key)."=".rawurlencode($value); |
} |
); |
$postvars = implode('&', $params); |
if (!($curl = curl_init())) { |
print 0; |
return; |
} |
curl_setopt($curl, CURLOPT_URL, $URL); |
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
curl_setopt($curl, CURLOPT_POST, true); |
curl_setopt($curl, CURLOPT_POSTFIELDS, $postvars); |
$return = curl_exec($curl); |
curl_close($curl); |
|
$success = urldecode( |
wasKeyValueGet( |
"success", |
$return |
) |
); |
|
// Unable to download the region map texture? |
if($success == 'False') return -1; |
|
#### |
# III. Convert the image data to a PNG of size 512x512 |
$im = imagescale( |
imagecreatefromstring( |
base64_decode( |
rawurldecode( |
wasKeyValueGet( |
"data", |
$return |
) |
) |
) |
), |
512, |
512 |
); |
|
#### |
# VI. Output the Base64 encoded image for AJAX. |
ob_start(); |
imagepng($im); |
$png = ob_get_contents(); |
imagedestroy($im); |
ob_end_clean(); |
|
echo base64_encode($png); |
|
?> |
|