405 lines
15 KiB
PHP
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>
|