fobe-web/html/catalog/view.php

263 lines
8.2 KiB
PHP

<?php
use Fobe\Economy\EconomyHelper;
use Fobe\Users\User;
use Fobe\Web\WebContextManager;
$body = "";
if(isset($_GET['id']))
{
$id = (int)$_GET['id'];
$aInfo = getAssetInfo($id);
$alert = "";
//handle purchasing items
if(isset($_POST['buyitem']))
{
try {
if (EconomyHelper::PurchaseItem($user->id, $id)) {
WebContextManager::Redirect("/catalog/view?id=". $id . "");
}
} catch (Exception $e) {
$alert = "<div class='alert alert-danger' role='alert'>".$e->getMessage()."</div>";
}
}
// ...
//Query
$q = $pdo->prepare("SELECT * FROM assets WHERE id = :i");
$q->bindParam(":i", $id, PDO::PARAM_INT);
$q->execute();
if($q->rowCount() > 0)
{
$i = $q->fetch(PDO::FETCH_OBJ);
$sales = itemSalesCount($id);
$itemrender = getAssetRender($id);
$ownerrender = getPlayerRender($i->CreatorId);
$itemtypeint = $i->AssetTypeId;
$approved = $i->IsApproved;
$description = '';
//handle item descriptions
if (empty($i->Description))
{
$description = 'No description available.'; //default description if none is set
}
else
{
$description = cleanOutput($i->Description);
}
// ...
//proper named category
$types = assetTypeArray();
//so we can show the item type and view the proper image
$itemtype = $types[$i->AssetTypeId];
// ...
//redirect if a game
if ($i->AssetTypeId == 9)
{
WebContextManager::Redirect("/games/view?id=" . $id);
}
// ...
$buy_button = "";
$confirmbuy_button = "";
if (User::OwnsAsset($user->id, $id))
{
//already owns the hat
$buy_button = '<button class="btn btn-danger" style="width:12rem;" disabled><b>Owned</b></button>';
$confirmbuy_button = '<button class="btn btn-danger" style="width:12rem;" disabled><b>Owned</b></button>';
// ...
}
else
{
if ($i->IsForSale == 0 || isAssetModerated($id))
{
//offsale
$buy_button = '<button class="btn btn-secondary" style="width:12rem;" disabled><b>Offsale</b></button>';
$confirmbuy_button = '<button class="btn btn-secondary" style="width:12rem;" disabled><b>Offsale</b></button>';
// ...
}
else
{
$price = 0;
if ($i->PriceInAlphabux == 0)
{
$ButtonText = "";
$src = "";
if ($i->AssetTypeId == 10) //models
{
$ButtonText = "Take";
}
else
{
$ButtonText = "FREE!";
$src = getCurrentThemeAlphabuxLogo();
}
$buy_button = '<button type="button" data-toggle="modal" data-target="#buyitem" class="btn btn-danger w-100"><img style="max-width:20px;" src="'.$src.'"> <b>'.$ButtonText.'</b></button>';
$confirmbuy_button = '<button type="submit" name="buyitem" class="btn btn-danger" style="width:12rem;"><img style="max-width:20px;" src="'.$src.'"> <b>'.$ButtonText.'</b></button>';
// ...
}
else
{
//aw, its paid
$buy_button = '<button type="button" data-toggle="modal" data-target="#buyitem" class="btn btn-danger w-100"><img style="max-width:20px;" src="/fobe/cdn/imgs/alphabux-white-1024.png"> <b>'.cleanOutput($i->PriceInAlphabux).'</b></button>';
$confirmbuy_button = '<button type="submit" name="buyitem" class="btn btn-danger" style="width:12rem;"><img style="max-width:20px;" src="/fobe/cdn/imgs/alphabux-white-1024.png"> <b>'.cleanOutput($i->PriceInAlphabux).'</b></button>';
// ...
}
}
}
//only allow shirts, pants and t shirts to be modified by the end user (admins can regardless)
$configbutton_html = "";
if ($itemtypeint == 2 or $itemtypeint == 11 or $itemtypeint == 12 or $user->IsAdmin())
{
if (isOwner($id) && !isAssetModerated($id)) //owner of the item or admin
{
$configbutton_html = <<<EOT
<div class="col-sm">
<a style="float:right;" class="btn btn-danger text-white" href="config?id={$id}">Configure</a>
</div>
EOT;
}
}
// ...
$body = '
<div class="container-fluid">
<div class="container">
<div id = "success_alert" class="alert alert-success" role="alert" style="display:none";></div>
<div id = "error_alert" class="alert alert-danger" role="alert" style="display:none";></div>
'.$alert.'
<div class="row marg-bot-15">
<div class="col-sm-9 marg-bot-15">
<div class="card marg-auto">
<div class="card-body">
<div class="row">
<div clas="col-sm" style="padding-left:16px;">
<h5>'.cleanOutput($i->Name).'</h5>
</div>
'.$configbutton_html.'
</div>
<div class="container text-center">
'.
($itemtypeint == 3 && $approved ?
'<audio controls style="width:100%;margin:15px 0 15px 0;" src="'.$itemrender.'" />' :
'<img class="img-fluid" style="width:22rem;'.($itemtypeint == 18 ? 'background-color: rgba(255, 255, 255, 0.15);' : '').'" src="'.$itemrender.'">')
.'
</div>
<h5>Item Description</h5>
<hr>
<div style="overflow:hidden;">
<p>'.$description.'</p>
</div>
</div>
</div>
</div>
<div class="col-sm-3 marg-bot-15">
<div class="card">
<div class="card-body marg-auto">
<div class="card marg-bot-15" style="width:12rem;">
<a href="/profile/view?id='.($i->CreatorId).'">
<div class="card-body">
<img class="card-img" src="'.$ownerrender.'">
</div>
</a>
</div>
<div class="text-center">
<p>Creator: <a class="red-a" href="/profile/view?id='.$i->CreatorId.'">'.getUsername($i->CreatorId).'</a></p>
</div>
<hr>
<div class="text-center">
<h6>Item Stats</h6>
</div>
<div class="row mt-2">
<div class="col-sm">
<b>Sales:</b>
<p>'.$sales.'</p>
<b>Created:</b>
<p> '.date("m/d/Y", $i->Created).'</p>
<b>Item Type:</b>
<p>'.$itemtype.'</p>
<hr>
'.$buy_button.'
<div class="modal fade" id="buyitem" tabindex="-1" role="dialog" aria-labelledby="buyitemLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
Are you sure you want to purchase this item for <img style="max-width:16px;" src="'.getCurrentThemeAlphabuxLogo().'"> <b>'.cleanOutput($i->PriceInAlphabux).'</b> ?
</div>
<div class="modal-footer">
<form action="" method="post">
'.$confirmbuy_button.'
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="comments_html" class="row" style="display:none">
<div class="col-sm">
<div class="card">
<div class="card-body">
<h5 class="mb-2">Comments</h5>
<div class="input-group">
<input type="text" class="form-control" id="comment_input" autocomplete="off" placeholder="New Comment">
<div class="input-group-append">
<button onclick="comments.submitComment($(\'#comment_input\').val())" class="btn btn-danger">Submit</button>
</div>
</div>
<hr>
<div id="comments-container" class="container">
</div>
<div id="page-buttons-container" class="text-center mt-2">
<div id="page-buttons" class="btn-group" role="group" aria-label="First group">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
comments = new Comments(new URLSearchParams(window.location.search).get("id"), "#comments_html", "#comments-container", "#page-buttons", "#success_alert", "#error_alert", "#comment_input", 2000, "comments")
</script>';
}
else
{
//item doesnt exist
WebContextManager::Redirect("/404");
}
}
else
{
//no url parameter
WebContextManager::Redirect("/");
}
pageHandler();
$ph->pageTitle(cleanOutput($i->Name));
$ph->body = $body;
$ph->output();