Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/89922108-1604-44ae-949d-358d32b9d70a Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
139 lines
4.7 KiB
PHP
139 lines
4.7 KiB
PHP
<?php
|
|
/**
|
|
* Test script to verify billing module panel integration
|
|
* Place this in modules/billing/ and access via: home.php?m=billing&p=test_integration
|
|
*
|
|
* This script checks:
|
|
* 1. Navigation.xml exists and is readable
|
|
* 2. All page files exist
|
|
* 3. Database tables exist
|
|
* 4. Sample order status counts
|
|
*/
|
|
|
|
function exec_ogp_module()
|
|
{
|
|
global $db;
|
|
|
|
echo "<h2>Billing Module Integration Test</h2>";
|
|
|
|
// Test 1: Check navigation.xml
|
|
echo "<h3>1. Navigation Configuration</h3>";
|
|
$nav_file = "modules/billing/navigation.xml";
|
|
if (file_exists($nav_file)) {
|
|
echo "<div class='success'>✓ navigation.xml found</div>";
|
|
$xml = simplexml_load_file($nav_file);
|
|
echo "<ul>";
|
|
foreach ($xml->page as $page) {
|
|
echo "<li>Page: <strong>".$page['key']."</strong> → ".$page['file']." (access: ".$page['access'].")</li>";
|
|
}
|
|
echo "</ul>";
|
|
} else {
|
|
echo "<div class='failure'>✗ navigation.xml NOT FOUND</div>";
|
|
}
|
|
|
|
// Test 2: Check page files
|
|
echo "<h3>2. Page Files</h3>";
|
|
$pages = array(
|
|
'create_servers.php' => 'Server provisioning script',
|
|
'my_orders_panel.php' => 'User order list',
|
|
'admin_orders.php' => 'Admin order management'
|
|
);
|
|
|
|
foreach ((array)$pages as $file => $desc) {
|
|
$path = "modules/billing/".$file;
|
|
if (file_exists($path)) {
|
|
echo "<div class='success'>✓ $file - $desc</div>";
|
|
} else {
|
|
echo "<div class='failure'>✗ $file - MISSING</div>";
|
|
}
|
|
}
|
|
|
|
// Test 3: Check database tables
|
|
echo "<h3>3. Database Tables</h3>";
|
|
$tables = array(
|
|
'billing_orders' => 'Order records',
|
|
'billing_services' => 'Available services',
|
|
'billing_invoices' => 'Payment records'
|
|
);
|
|
|
|
foreach ((array)$tables as $table => $desc) {
|
|
$result = $db->query("SHOW TABLES LIKE 'OGP_DB_PREFIX".$table."'");
|
|
if ($result && $db->num_rows($result) > 0) {
|
|
echo "<div class='success'>✓ $table - $desc</div>";
|
|
} else {
|
|
echo "<div class='failure'>✗ $table - NOT FOUND</div>";
|
|
}
|
|
}
|
|
|
|
// Test 4: Order status counts
|
|
echo "<h3>4. Order Statistics</h3>";
|
|
$stats = $db->resultQuery("SELECT status, COUNT(*) as count FROM OGP_DB_PREFIXbilling_orders GROUP BY status");
|
|
|
|
if (!empty($stats)) {
|
|
echo "<table class='tablesorter'>";
|
|
echo "<thead><tr><th>Status</th><th>Count</th></tr></thead><tbody>";
|
|
foreach ((array)$stats as $stat) {
|
|
echo "<tr><td>".$stat['status']."</td><td>".$stat['count']."</td></tr>";
|
|
}
|
|
echo "</tbody></table>";
|
|
} else {
|
|
echo "<div class='info'>No orders in database yet</div>";
|
|
}
|
|
|
|
// Test 5: Check user access
|
|
echo "<h3>5. User Access</h3>";
|
|
$user_id = $_SESSION['user_id'];
|
|
$isAdmin = $db->isAdmin($user_id);
|
|
echo "<p>Logged in as: <strong>".$_SESSION['users_login']."</strong></p>";
|
|
echo "<p>User ID: <strong>".$user_id."</strong></p>";
|
|
echo "<p>Group: <strong>".$_SESSION['users_group']."</strong></p>";
|
|
echo "<p>Admin: <strong>".($isAdmin ? 'Yes' : 'No')."</strong></p>";
|
|
|
|
// Test 6: Page access URLs
|
|
echo "<h3>6. Test Page Access</h3>";
|
|
echo "<ul>";
|
|
echo "<li><a href='home.php?m=billing&p=my_orders'>My Orders (user)</a></li>";
|
|
if ($isAdmin) {
|
|
echo "<li><a href='home.php?m=billing&p=admin_orders'>Admin Orders (admin only)</a></li>";
|
|
}
|
|
echo "</ul>";
|
|
|
|
// Test 7: Sample paid order check
|
|
echo "<h3>7. Paid Orders Ready for Provisioning</h3>";
|
|
if ($isAdmin) {
|
|
$paid_orders = $db->resultQuery("SELECT COUNT(*) as count FROM OGP_DB_PREFIXbilling_orders WHERE status='paid'");
|
|
} else {
|
|
$paid_orders = $db->resultQuery("SELECT COUNT(*) as count FROM OGP_DB_PREFIXbilling_orders WHERE status='paid' AND user_id=".$db->realEscapeSingle($user_id));
|
|
}
|
|
|
|
if (!empty($paid_orders)) {
|
|
$count = $paid_orders[0]['count'];
|
|
if ($count > 0) {
|
|
echo "<div class='success'>✓ $count paid order(s) ready for provisioning</div>";
|
|
echo "<p><a href='home.php?m=billing&p=my_orders' class='btn'>View Orders</a></p>";
|
|
} else {
|
|
echo "<div class='info'>No paid orders awaiting provisioning</div>";
|
|
}
|
|
}
|
|
|
|
// Test 8: Module loading mechanism
|
|
echo "<h3>8. Module Loading Test</h3>";
|
|
echo "<p>If you can see this page, the module loading mechanism is working correctly!</p>";
|
|
echo "<div class='success'>✓ Navigation system functional</div>";
|
|
echo "<div class='success'>✓ exec_ogp_module() called successfully</div>";
|
|
|
|
// Summary
|
|
echo "<h3>Integration Status Summary</h3>";
|
|
echo "<div class='success'>";
|
|
echo "<h4>✓ Billing Module Panel Integration Complete</h4>";
|
|
echo "<p>All components are in place. The billing module can now:</p>";
|
|
echo "<ul>";
|
|
echo "<li>Display user orders via <code>home.php?m=billing&p=my_orders</code></li>";
|
|
echo "<li>Provision servers via <code>home.php?m=billing&p=provision_servers</code></li>";
|
|
if ($isAdmin) {
|
|
echo "<li>Admin management via <code>home.php?m=billing&p=admin_orders</code></li>";
|
|
}
|
|
echo "</ul>";
|
|
echo "</div>";
|
|
}
|
|
?>
|