375 lines
16 KiB
PHP
375 lines
16 KiB
PHP
<?php
|
|
|
|
/*
|
|
Alphaland 2021
|
|
*/
|
|
|
|
namespace Alphaland\Assets {
|
|
|
|
use Alphaland\Common\HashingUtiltity;
|
|
use Alphaland\Grid\RccServiceHelper;
|
|
use Alphaland\UI\ImageHelper;
|
|
use PDO;
|
|
|
|
class Render
|
|
{
|
|
public static function RenderHat(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." hat", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['hatthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Hat ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Hat ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderTShirt(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." tshirt", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['tshirtthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render TShirt ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/asset/?id=38",
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render TShirt ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderShirt(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." shirt", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['shirtthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Shirt ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/asset/?id=38",
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Shirt ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderPants(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." pants", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['pantsthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Pants ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/asset/?id=38",
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Pants ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderFace(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." face", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['facethumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Face ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Face ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderHead(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." head", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['headthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Head ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/asset/?id=38",
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"750",
|
|
"750"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Head ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderGear(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." gear", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['gearthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Gear ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"png",
|
|
"750",
|
|
"750",
|
|
"https://www.alphaland.cc/"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Gear ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderPackage(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." package", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['packagescript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Package ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=27112025;https://www.alphaland.cc/asset/?id=27112039;https://www.alphaland.cc/asset/?id=27112052",
|
|
"https://www.alphaland.cc/",
|
|
"https://www.alphaland.cc/asset/?id=38",
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"768",
|
|
"432"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Package ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderModel(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." model", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['modelthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Model ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"768",
|
|
"432"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Model ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function RenderMesh(int $assetid, bool $fork=false)
|
|
{
|
|
if ($fork) {
|
|
$job = popen("cd C:/Webserver/nginx/Alphaland/WebserviceTools/RenderTools && start /B php backgroundRenderJob.php ".$assetid." mesh", "r"); //throwaway background process
|
|
if ($job !== FALSE); {
|
|
pclose($job);
|
|
return true;
|
|
}
|
|
return false;
|
|
} else {
|
|
$thumbnailScript = file_get_contents($GLOBALS['meshthumbnailscript']);
|
|
$soap = new RccServiceHelper($GLOBALS['thumbnailArbiter']);
|
|
$soap = $soap->BatchJobEx(
|
|
$soap->ConstructGenericJob(gen_uuid(), 25, 0, 3, "Render Mesh ".$assetid, $thumbnailScript, array(
|
|
$assetid,
|
|
"https://www.alphaland.cc/asset/?id=".$assetid,
|
|
"https://www.alphaland.cc/",
|
|
"png",
|
|
"768",
|
|
"432"
|
|
))
|
|
);
|
|
|
|
if (!is_soap_fault($soap)) {
|
|
Render::Update($assetid, $soap);
|
|
return true;
|
|
}
|
|
logSoapFault($soap, "Render Mesh ".$assetid." Job", $thumbnailScript);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static function Update(int $assetid, $soapobject)
|
|
{
|
|
$render = base64_decode($soapobject->BatchJobExResult->LuaValue[0]->value);
|
|
|
|
if (ImageHelper::IsBase64PNGImage($render)) //PNG
|
|
{
|
|
$newhash = HashingUtiltity::VerifyMD5(md5($render));
|
|
if (!file_get_contents($GLOBALS['renderCDNPath'] . $newhash))
|
|
{
|
|
if (file_put_contents($GLOBALS['renderCDNPath'] . $newhash, $render))
|
|
{
|
|
//delete old hash
|
|
$prevhash = $GLOBALS['pdo']->prepare("SELECT * FROM assets WHERE id = :i");
|
|
$prevhash->bindParam(":i", $assetid, PDO::PARAM_INT);
|
|
$prevhash->execute();
|
|
$prevhash = $prevhash->fetch(PDO::FETCH_OBJ);
|
|
$oldhash = $prevhash->ThumbHash;
|
|
unlink($GLOBALS['renderCDNPath'] . $oldhash);
|
|
|
|
//set new hash
|
|
$newthumbhash = $GLOBALS['pdo']->prepare("UPDATE assets SET ThumbHash = :h WHERE id = :i");
|
|
$newthumbhash->bindParam(":h", $newhash, PDO::PARAM_STR);
|
|
$newthumbhash->bindParam(":i", $assetid, PDO::PARAM_INT);
|
|
$newthumbhash->execute();
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|