Panel/modules/billing/test_integration.php
copilot-swe-agent[bot] e44519c030
Apply automated PHP8 safety transforms
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/89922108-1604-44ae-949d-358d32b9d70a

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-04-23 14:01:37 +00:00

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>";
}
?>