Files
2025-10-01 23:07:32 +02:00

405 lines
15 KiB
PHP

<?php
if (isset($_GET["url"])) {
$presetedURL = $_GET["url"];
} elseif (isset($_POST["urltransmit"])) {
$presetedURL = $_POST["urltransmit"];
} else {
$presetedURL = "";
}
$nsfw = isset($_POST["nsfw"]) ? "1" : "0";
function myErrorHandler($errno, $errstr, $errfile, $errline) {
echo "<p>Custom error:</p> [$errno] $errstr<br>";
echo "Error on line $errline in $errfile<br>";
}
// Set user-defined error handler function
//set_error_handler("myErrorHandler");
$furatalog = new mysqli("10.0.0.200", "furatalog_admin_usr", "NR6tLk7c56bPT5[]", "furatalog");
if (isset($_POST["url"])) {
$givenURL = $_POST["url"];
$isExisting = $furatalog->query("SELECT * FROM content WHERE url='" . $givenURL . "'");
if ($isExisting->num_rows > 0) {
$isExistent = true;
$new_id = "";
$new_name = "";
$new_price = "";
$new_rating = "";
$new_creatorid = "";
$new_currencyid = "";
$new_url = "";
$new_image = "https://public-files.gumroad.com/nx5vne5h5y4bktwzh0gcfev59taj";
$new_nsfw = "";
$new_section = "";
} else {
if (str_contains($givenURL, "gumroad")) {
$creatorURL = implode('/', array_slice(explode('/', $givenURL), 0, 3));
$creatorRequestResult = $furatalog->query("SELECT * FROM creator WHERE `gumroad_url`='" . $creatorURL . "'");
if ($creatorRequestResult->num_rows > 0) {
$creatorID = $creatorRequestResult->fetch_assoc()["id"];
} else {
$scrapingUrl = $creatorURL;
$string = file_get_contents($scrapingUrl);
$dom = new DomDocument();
$dom->loadHTML($string);
$finder = new DomXPath($dom);
$creatorName = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' profile ')]")[0]->childNodes[0]->childNodes[0]->textContent;
$creatorUrl = $scrapingUrl;
$creatorpicture = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' profile ')]")[0]->childNodes[0]->childNodes[0]->childNodes[0]->attributes[1]->textContent;
$creatorCreateResult = $furatalog->query("INSERT INTO `creator` (`id`, `name`, `pb_url`, `booth_url`, `gumroad_url`, `payhip_url`, `jinxxy_url`) VALUES (NULL, '" . str_replace("'", "\'", $creatorName) . "', '" . $creatorpicture . "', '', '" . $creatorURL . "', '', '')");
$creatorResult = $furatalog->query("SELECT id FROM `creator` WHERE gumroad_url='" . $creatorURL . "'");
$creatorID = $creatorResult->fetch_assoc()["id"];
}
$newCreatorResult = $furatalog->query("SELECT * FROM creator WHERE id=" . $creatorID . "");
$newCreatorResultResult = $newCreatorResult->fetch_assoc();
$new_creatorid = $newCreatorResultResult["id"];
$new_creatorName = $newCreatorResultResult["name"];
$new_creatorPb = $newCreatorResultResult["pb_url"];
$new_boothURL = $newCreatorResultResult["booth_url"];
$new_gumroadURL = $newCreatorResultResult["gumroad_url"];
$new_payhipURL = $newCreatorResultResult["payhip_url"];
$new_jinxxyURL = $newCreatorResultResult["jinxxy_url"];
$tempURL = file_get_contents($givenURL);
$dom = new DomDocument();
$dom->loadHTML($tempURL);
$finder = new DomXPath($dom);
$content = $finder->query("//*[contains(concat(' ', normalize-space(@data-component-name), ' '), ' ProductPage ')]")[0]->textContent;
if ($content == "" || $content == null) {
$content = $finder->query("//*[contains(concat(' ', normalize-space(@data-component-name), ' '), ' ProfileProductPage ')]")[0]->textContent;
}
$content = json_decode($content);
$contentItem = $content->product;
$currentCurrency = $contentItem->currency_code;
$newCurrencyResult = $furatalog->query("SELECT * FROM currency WHERE currency='" . $currentCurrency . "'");
$newCurrencyResultResult = $newCurrencyResult->fetch_assoc();
$new_currencyid = $newCurrencyResultResult["id"];
$new_currencyshort = $newCurrencyResultResult["currency"];
$new_currencysymbol = $newCurrencyResultResult["symbol"];
$new_currencyfontawesome = $newCurrencyResultResult["font-awesome"];
if ($contentItem->thumbnail_url == "" || $contentItem->thumbnail_url == null) {
$newThumbnail = $contentItem->covers[0]->url;
} else {
$newThumbnail = $contentItem->thumbnail_url;
}
$newPrice = $contentItem->price_cents;
if (isset($contentItem->options[0]->price_difference_cents)) {
$newPrice = (int)$newPrice + (int)$contentItem->options[0]->price_difference_cents;
}
$furatalog->query("INSERT INTO `content` (`id`, `name`, `price`, `rating`, `creator_id`, `currency_id`, `url`, `image`, `nsfw`, `section`) VALUES (NULL, '" .
str_replace("'", "\'", $contentItem->name) . "', '" .
$newPrice . "', '" .
$contentItem->ratings->average . "', '" .
$new_creatorid . "', '" .
$new_currencyid . "', '" .
$givenURL . "', '" .
$newThumbnail . "', '" .
$nsfw . "', '" .
$_POST["section"] . "')");
$parsed_url = parse_url($givenURL);
$clean_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $parsed_url['path'];
$contentResult = $furatalog->query("SELECT * FROM content WHERE url LIKE '%" . $clean_url . "%'");
$contentResultResult = $contentResult->fetch_assoc();
$new_id = $contentResultResult["id"];
$new_name = $contentResultResult["name"];
$new_price = $contentResultResult["price"];
$new_rating = $contentResultResult["rating"];
$new_creatorid = $contentResultResult["creator_id"];
$new_currencyid = $contentResultResult["currency_id"];
$new_url = $contentResultResult["url"];
$new_image = $contentResultResult["image"];
$new_nsfw = $contentResultResult["nsfw"];
$new_section = $contentResultResult["section"];
$species = explode(" ", $_POST["species"]);
foreach ($species as $key => $value) {
$speciesResult = $furatalog->query("SELECT * FROM species WHERE tag='" . $value . "'");
$speciesResultResult = $speciesResult->fetch_assoc();
$speciesID = $speciesResultResult["id"];
$furatalog->query("INSERT INTO `content_species` (`content_id`, `species_id`) VALUES ('" . $new_id . "', '" . $speciesID . "')");
}
}
}
} else {
$new_id = "";
$new_name = "";
$new_price = "";
$new_rating = "";
$new_creatorid = "";
$new_currencyid = "";
$new_url = "";
$new_image = "https://public-files.gumroad.com/nx5vne5h5y4bktwzh0gcfev59taj";
$new_nsfw = "";
$new_section = "";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php echo file_get_contents("/var/www/furatalog-cdn/mainHead-Admin.html"); ?>
<title>Insert Data - Admin Panel - Furatalog.xyz</title>
<style>
html, body {
margin: 0;
height: 100%;
padding: 0;
}
</style>
</head>
<body>
<div class="sidebar">
<a href="logout.php">Logout</a>
<a href="/admin/">Dashboard</a>
<a class="active" href="/admin/insert.php">Insert Data (Gumroad)</a>
<a href="/admin/insert-species.php">Insert Species</a>
</div>
<div class="content">
<div class="insert">
<h2>Insert Data</h2>
<form action="/admin/insert.php" method="post">
<div>
<input type="text" id="url" name="url" placeholder="URL" autocomplete="off" value="<?php echo $presetedURL; ?>">
<select name="section" id="section">
<option value="1">Assets</option>
<option value="2">Avatars</option>
<option value="3">Bases</option>
<option value="4">Worlds</option>
</select>
</div>
<p>Species</p>
<div class="specieslist">
<?php
$requestSpeciesResult = $furatalog->query("SELECT * FROM `species` ORDER BY `name` ASC");
while ($row = $requestSpeciesResult->fetch_assoc()) {
echo "
<label>
<input type=\"checkbox\" name=\"" . $row["tag"] . "\">" . $row["name"] . "
</label>";
}
?>
</div>
<br>
<div>
<input type="checkbox" name="nsfw" id="nsfw">
<label for="nsfw">NSFW</label>
</div>
<input type="submit" value="Submit">
<input type="text" name="species" id="speciesIncluded" style="display: none;" value="props">
</form>
</div>
<div class="insert-result">
<?php
if (isset($isExistent) && $isExistent) {
echo "<p>Content already exists in the database.</p>";
}
?>
<div class="summary">
<table>
<tr>
<th>New Content Inserted</th>
</tr>
<tr>
<td>ID</td>
<td><?php echo $new_id; ?></td>
</tr>
<tr>
<td>Name</td>
<td><?php echo $new_name; ?></td>
</tr>
<tr>
<td>Price</td>
<td><?php echo $new_price; ?></td>
</tr>
<tr>
<td>Rating</td>
<td><?php echo $new_rating; ?></td>
</tr>
<tr>
<td>Creator ID</td>
<td><?php echo $new_creatorid; ?></td>
</tr>
<tr>
<td>Currency ID</td>
<td><?php echo $new_currencyid; ?></td>
</tr>
<tr>
<td>URL</td>
<td><?php echo $new_url; ?></td>
</tr>
<tr>
<td>Image</td>
<td><?php echo $new_image; ?></td>
</tr>
<tr>
<td>NSFW</td>
<td><?php echo $new_nsfw; ?></td>
</tr>
<tr>
<td>Section</td>
<td><?php echo $new_section; ?></td>
</tr>
</table>
<table>
<tr>
<th>Creator</th>
</tr>
<tr>
<td>ID</td>
<td><?php echo $new_creatorid; ?></td>
</tr>
<tr>
<td>Name</td>
<td><?php echo $new_creatorName; ?></td>
</tr>
<tr>
<td>Creator PB</td>
<td><?php echo $new_creatorPb; ?></td>
</tr>
<tr>
<td>Booth URL</td>
<td><?php echo $new_boothURL; ?></td>
</tr>
<tr>
<td>Gumroad URL</td>
<td><?php echo $new_gumroadURL; ?></td>
</tr>
<tr>
<td>Payhip URL</td>
<td><?php echo $new_payhipURL; ?></td>
</tr>
<tr>
<td>Jinxxy URL</td>
<td><?php echo $new_jinxxyURL; ?></td>
</tr>
</table>
<table>
<tr>
<th>Currency</th>
</tr>
<tr>
<td>ID</td>
<td><?php echo $new_currencyid; ?></td>
</tr>
<tr>
<td>Currency</td>
<td><?php echo $new_currencyshort; ?></td>
</tr>
<tr>
<td>Symbol</td>
<td><?php echo $new_currencysymbol; ?></td>
</tr>
<tr>
<td>Font-Awesome</td>
<td><?php echo $new_currencyfontawesome; ?></td>
</tr>
</table>
</div>
<?php
if ($new_id != "") {
echo "<div class='item-container' style=\"background-image: url('". $new_image ."')\">
<a href='". $new_url ."'><div class='item'>
<img src='". $new_image ."'>
<div class='item-info'>
<a class='name' title='". $new_name ."'>". $new_name ."</a>
<div class='info'>
<a class='creator'>
<img src=\"". $new_creatorPb ."\">
". $new_creatorName ."
</a>
<a class=\"price\">" . sprintf("%.2f", (double)($new_price / 100)) . " " . $new_currencyfontawesome ."</a>
</div>
</div>
</div></a>
</div>";
}
?>
</div>
</div>
<script>
// Select all checkboxes and the result input field
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
const resultInput = document.getElementById('speciesIncluded');
// Function to update the result input field
function updateResult() {
const selectedNames = Array.from(checkboxes) // Convert NodeList to Array
.filter(checkbox => checkbox.checked) // Filter only checked checkboxes
.map(checkbox => checkbox.name); // Map to their name attributes
// Join the names with a comma and update the result input
resultInput.value = selectedNames.join(' ');
if (resultInput.value == "" || resultInput.value == " ") {
resultInput.value = "props";
}
if (resultInput.value == "nsfw" || resultInput.value == "nsfw ") {
resultInput.value = "nsfw props";
}
}
// Add event listeners to all checkboxes
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', updateResult); // Listen for 'change' event
});
</script>
</body>
</html>