website fix
This commit is contained in:
parent
e14794bc59
commit
309d08497b
58 changed files with 1690 additions and 363 deletions
|
|
@ -11,6 +11,9 @@ ini_set('display_errors', 1);
|
|||
ini_set('display_startup_errors', 1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
// Require login
|
||||
require_once(__DIR__ . '/includes/login_required.php');
|
||||
|
||||
// Include database configuration
|
||||
require_once(__DIR__ . '/includes/config.inc.php');
|
||||
|
||||
|
|
@ -20,7 +23,41 @@ if (!$db) {
|
|||
die("Connection failed: " . mysqli_connect_error());
|
||||
}
|
||||
|
||||
// Include menu
|
||||
// Admin quick-create handler: create a free "paid" record for an in-cart order
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['create_free_for'])) {
|
||||
session_start();
|
||||
if (!empty($_SESSION['website_user_role']) && strtolower($_SESSION['website_user_role']) === 'admin') {
|
||||
$orderId = (int)$_POST['create_free_for'];
|
||||
if ($orderId > 0) {
|
||||
$stmt = $db->prepare("UPDATE ogp_billing_orders SET status = 'paid' WHERE order_id = ? LIMIT 1");
|
||||
if ($stmt) { $stmt->bind_param('i', $orderId); $stmt->execute(); $stmt->close(); }
|
||||
|
||||
// write a simulated webhook file
|
||||
require_once(__DIR__ . '/includes/config.inc.php');
|
||||
$dataDir = (isset($SITE_DATA_DIR) && $SITE_DATA_DIR) ? $SITE_DATA_DIR : realpath(__DIR__ . '/') . DIRECTORY_SEPARATOR . 'data';
|
||||
@mkdir($dataDir, 0775, true);
|
||||
$rec = [
|
||||
'event_type' => 'PAYMENT.CAPTURE.COMPLETED',
|
||||
'status' => 'PAID',
|
||||
'amount' => 0.00,
|
||||
'currency' => 'USD',
|
||||
'payer' => $_SESSION['website_user_email'] ?? ($_SESSION['website_username'] ?? ''),
|
||||
'invoice' => 'FREE-' . $orderId . '-' . time(),
|
||||
'custom' => 'admin_free_create_order_' . $orderId,
|
||||
'resource_id' => 'FREE-' . bin2hex(random_bytes(6)),
|
||||
'items' => [],
|
||||
'ts' => date('c'),
|
||||
];
|
||||
$fname = $dataDir . DIRECTORY_SEPARATOR . $rec['invoice'] . '.json';
|
||||
file_put_contents($fname, json_encode($rec, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
|
||||
header('Location: return.php?invoice=' . urlencode($rec['invoice']));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Include top bar and menu
|
||||
include(__DIR__ . '/includes/top.php');
|
||||
include(__DIR__ . '/includes/menu.php');
|
||||
|
||||
$user_id=$_SESSION['user_id'] ?? 0;
|
||||
|
|
@ -71,51 +108,60 @@ if ($db){
|
|||
|
||||
?>
|
||||
|
||||
<div style="width:100%; max-width:1000px; margin:auto; padding:1rem; background-color:#ffffff; border-radius:0.75rem; box-shadow:0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -2px rgba(0,0,0,0.05);">
|
||||
<h2 style="font-size:1.5rem; font-weight:bold; color:#1f2937; margin-bottom:1.5rem; text-align:center;">Your Cart</h2>
|
||||
<div class="site-panel">
|
||||
<h2 class="site-panel-title">Your Cart</h2>
|
||||
|
||||
<!--
|
||||
This is our cart form just for display and deletion. There is a different form below that has the paypal button and fills in all the hidden fields
|
||||
-->
|
||||
|
||||
<table style="border-collapse:separate; border-spacing:0; width:100%; color:#000000;">
|
||||
<thead style="background-color:#f9fafb;">
|
||||
<tr>
|
||||
<th style="padding:1rem 1.5rem; text-align:center; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;"></th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Server ID</th>
|
||||
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Game Name</th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Location</th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Max Players</th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Price per Player</th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Months</th>
|
||||
<th style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb; font-weight:600; text-transform:uppercase; font-size:0.75rem; letter-spacing:0.05em;">Total</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody style="background-color:#ffffff;">
|
||||
<table class="cart-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-compact text-center"></th>
|
||||
<th>Server ID</th>
|
||||
<th>Game Name</th>
|
||||
<th>Location</th>
|
||||
<th>Max Players</th>
|
||||
<th>Price per Player</th>
|
||||
<th>Months</th>
|
||||
<th>Total</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
$grandTotal = 0; // Initialize grand total variable
|
||||
|
||||
if (isset($carts) && $carts instanceof mysqli_result && $carts->num_rows > 0) {
|
||||
while ($row = $carts->fetch_assoc()) {
|
||||
?>
|
||||
<tr data-cart-id="<?php echo htmlspecialchars($row['order_id']); ?>" style="color:#000000;">
|
||||
<td style="padding:1rem 1.5rem; text-align:center; border-bottom:1px solid #e5e7eb;">
|
||||
<form method="post" action="" style="margin:0; display:inline;">
|
||||
<button type="submit" name="delete_single" value="<?php echo htmlspecialchars($row['order_id']); ?>" style="background-color:#ef4444; color:#fff; border:none; border-radius:0.25rem; width:2rem; height:2rem; font-weight:bold; cursor:pointer; display:flex; align-items:center; justify-content:center;">
|
||||
✕
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;"><?php echo htmlspecialchars($row['home_id']); ?></td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;"><?php echo htmlspecialchars($row['home_name']); ?></td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;"><?php echo htmlspecialchars($row['ip']); ?></td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;"><?php echo htmlspecialchars($row['max_players']); ?></td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;">$<?php echo number_format($row['price'], 2); ?></td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;"><?php echo htmlspecialchars($row['qty']); ?></td>
|
||||
<?php $rowtotal = $row['price'] * $row['qty'] * $row['max_players'];?>
|
||||
<tr data-cart-id="<?php echo htmlspecialchars($row['order_id']); ?>">
|
||||
<td>
|
||||
<form method="post" action="" class="inline-form">
|
||||
<button type="submit" name="delete_single" value="<?php echo htmlspecialchars($row['order_id']); ?>" class="btn-square text-danger">
|
||||
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
<td><?php echo htmlspecialchars($row['home_id']); ?></td>
|
||||
<td><?php echo htmlspecialchars($row['home_name']); ?></td>
|
||||
<td><?php echo htmlspecialchars($row['ip']); ?></td>
|
||||
<td><?php echo htmlspecialchars($row['max_players']); ?></td>
|
||||
<td>$<?php echo number_format($row['price'], 2); ?></td>
|
||||
<td><?php echo htmlspecialchars($row['qty']); ?></td>
|
||||
<?php $rowtotal = $row['price'] * $row['qty'] * $row['max_players'];?>
|
||||
<?php if ((float)$row['price'] == 0.0 && isset($_SESSION['website_user_role']) && strtolower($_SESSION['website_user_role']) === 'admin'): ?>
|
||||
<td>
|
||||
<form method="post" action="" class="inline-form">
|
||||
<input type="hidden" name="create_free_for" value="<?php echo (int)$row['order_id']; ?>">
|
||||
<button type="submit" class="btn-primary">Create (Free)</button>
|
||||
</form>
|
||||
</td>
|
||||
<?php else: ?>
|
||||
<td> </td>
|
||||
<?php endif; ?>
|
||||
<?php $grandTotal += $rowtotal; // Add to grand total ?>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-bottom:1px solid #e5e7eb;">$<?php echo number_format($rowtotal, 2); ?></td>
|
||||
<td>$<?php echo number_format($rowtotal, 2); ?></td>
|
||||
|
||||
|
||||
</tr>
|
||||
|
|
@ -124,20 +170,20 @@ if ($db){
|
|||
|
||||
// Add total row
|
||||
?>
|
||||
<tr style="background-color:#f9fafb; font-weight:bold;">
|
||||
<td colspan="7" style="padding:1rem 1.5rem; text-align:right; border-top:2px solid #374151; font-weight:600; color:#374151;">
|
||||
<tr class="cart-total-row">
|
||||
<td colspan="7" class="cart-total-label">
|
||||
Cart Total:
|
||||
</td>
|
||||
<td style="padding:1rem 1.5rem; text-align:left; border-top:2px solid #374151; font-weight:600; color:#374151; font-size:1.1rem;">
|
||||
$<?php echo number_format($grandTotal, 2); ?>
|
||||
</td>
|
||||
<td class="cart-total-value">
|
||||
$<?php echo number_format($grandTotal, 2); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
} else {
|
||||
// Display a message if no cart items are found
|
||||
?>
|
||||
<tr>
|
||||
<td colspan="7" style="text-align:center; padding:1rem; color:#6b7280;">No items in your cart.</td>
|
||||
<td colspan="7" class="text-center muted">No items in your cart.</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
|
|
@ -186,17 +232,17 @@ $description = 'Game server order (' . count($lineItems) . ' item' . (count($lin
|
|||
|
||||
// URLs
|
||||
$siteBase = 'https://panel.iaregamer.com';
|
||||
$returnUrl = $siteBase . '/paypal/return.php?invoice=' . urlencode($invoiceId);
|
||||
$cancelUrl = $siteBase . '/paypal/return.php?invoice=' . urlencode($invoiceId) . '&cancel=1';
|
||||
$returnUrl = $siteBase . '/_website/return.php?invoice=' . urlencode($invoiceId);
|
||||
$cancelUrl = $siteBase . '/_website/return.php?invoice=' . urlencode($invoiceId) . '&cancel=1';
|
||||
|
||||
// API base (relative)
|
||||
$apiBase = '/paypal/api';
|
||||
$apiBase = '/_website/api';
|
||||
?>
|
||||
<!-- PayPal JS SDK (Sandbox). Use LIVE client-id when going live. -->
|
||||
<script src="https://www.paypal.com/sdk/js?client-id=AfvY_C2zA_hTHxHq7TIhtOeub4xBdySYrt_Hjj3d_WYQwjWI9NfOAVOTeResx2rgZ_nP5tOoxQSAHw8c¤cy=USD&intent=capture"></script>
|
||||
|
||||
<div id="paypal-button-container"></div>
|
||||
<div id="pp-status" style="margin-top:12px;font:14px system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;"></div>
|
||||
<div id="pp-status" class="mt-12" style="font:14px system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;"></div>
|
||||
|
||||
<script>
|
||||
(function(){
|
||||
|
|
@ -278,5 +324,6 @@ $apiBase = '/paypal/api';
|
|||
// Close database connection
|
||||
mysqli_close($db);
|
||||
?>
|
||||
<?php include(__DIR__ . '/includes/footer.php'); ?>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue