110 lines
3.1 KiB
PHP
110 lines
3.1 KiB
PHP
<?php
|
|
|
|
/*
|
|
Fobe 2021
|
|
This is for uploading data from studio, this requires the user to have access to the asset.
|
|
*/
|
|
|
|
use Fobe\Assets\Render;
|
|
|
|
$id = (int)$_GET['id'];
|
|
|
|
$iteminfo = getAssetInfo($id);
|
|
|
|
if($iteminfo !== FALSE) //asset id exists in Fobe db
|
|
{
|
|
if ($iteminfo->AssetTypeId == 9) //place
|
|
{
|
|
$content = gzdecode(file_get_contents('php://input'));
|
|
//TODO: implement a .RBXL parser
|
|
if (strpos($content, "Workspace") !==false and strpos($content, "PhysicsService") !==false and strpos($content, "SoundService") !==false and strpos($content, "Lighting") !==false)
|
|
{
|
|
if (isAssetApproved($id) and !isAssetModerated($id)) //if the asset is approved and not moderated
|
|
{
|
|
if ($iteminfo->CreatorId == $user->id)
|
|
{
|
|
//generate new hash for the asset
|
|
$assethash = genAssetHash(16);
|
|
// ...
|
|
|
|
//upload directory
|
|
$uploadDirectory = $GLOBALS['assetCDNPath']; //directory where the assets are stored
|
|
// ...
|
|
|
|
//lock asset db
|
|
$pdo->exec("LOCK TABLES assets WRITE"); //lock since this stuff is sensitive
|
|
// ...
|
|
|
|
//delete old hash
|
|
unlink($uploadDirectory . $iteminfo->Hash);
|
|
// ...
|
|
|
|
//change asset to use new hash
|
|
$s = $pdo->prepare("UPDATE assets SET Hash = :hash WHERE id = :id");
|
|
$s->bindParam(":hash", $assethash, PDO::PARAM_STR);
|
|
$s->bindParam(":id", $iteminfo->id, PDO::PARAM_INT);
|
|
$s->execute();
|
|
// ...
|
|
|
|
//add new asset
|
|
$success = file_put_contents($uploadDirectory . $assethash, $content);
|
|
// ...
|
|
|
|
//unlock asset db
|
|
$pdo->exec("UNLOCK TABLES"); //unlock since we are done with sensitive asset stuff
|
|
// ...
|
|
|
|
if (isPlaceUsingRender($iteminfo->id))
|
|
{
|
|
Render::RenderPlace($iteminfo->id);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo "Not Authorized to access this asset";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if ($iteminfo->AssetTypeId == 10) //model
|
|
{
|
|
$content = gzdecode(file_get_contents('php://input'));
|
|
//TODO: implement a .RBXL parser
|
|
if (isAssetApproved($id) and !isAssetModerated($id)) //if the asset is approved and not moderated
|
|
{
|
|
if ($iteminfo->CreatorId == $user->id)
|
|
{
|
|
//generate new hash for the asset
|
|
$assethash = genAssetHash(16);
|
|
// ...
|
|
|
|
//upload directory
|
|
$uploadDirectory = $GLOBALS['assetCDNPath']; //directory where the assets are stored
|
|
// ...
|
|
|
|
if (file_put_contents($uploadDirectory . $assethash, $content))
|
|
{
|
|
unlink($uploadDirectory . $iteminfo->Hash); //attempt to delete old hash, if doesnt work oh well
|
|
|
|
//lock asset db
|
|
$pdo->exec("LOCK TABLES assets WRITE"); //lock since this stuff is sensitive
|
|
|
|
//change asset to use new hash
|
|
$s = $pdo->prepare("UPDATE assets SET Hash = :hash WHERE id = :id");
|
|
$s->bindParam(":hash", $assethash, PDO::PARAM_STR);
|
|
$s->bindParam(":id", $iteminfo->id, PDO::PARAM_INT);
|
|
$s->execute();
|
|
|
|
//unlock asset db
|
|
$pdo->exec("UNLOCK TABLES"); //unlock since we are done with sensitive asset stuff
|
|
|
|
Render::RenderModel($iteminfo->id);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo "Not Authorized to access this asset";
|
|
}
|
|
}
|
|
}
|
|
} |