upskill-event-manager/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/clear-test-certificates.php
bengizmo 3d9599ef74 feat: Update help system with clearer content and recent improvements
- Revise welcome modal cards to focus on practical features
- Emphasize dashboard as central hub, no WordPress admin needed
- Highlight new certificate features including clickable links
- Rewrite documentation with simpler, action-oriented language
- Update FAQ section with common trainer questions
- Add tooltip text library for consistent help messages
- Include certificate clearing utility and scripts

Co-Authored-By: Ben Reed <ben@tealmaker.com>
2025-05-24 16:36:28 -03:00

266 lines
No EOL
9.4 KiB
PHP

<?php
/**
* Clear Test Certificates Script
*
* This script clears test certificate data from the staging server.
* Access it at: https://yourdomain.com/wp-content/plugins/hvac-community-events/clear-test-certificates.php
*/
// Load WordPress
require_once dirname(__FILE__) . '/../../../../wp-load.php';
// Check if user is logged in and has permission
if (!is_user_logged_in() || !current_user_can('manage_options')) {
die('Access denied. Please log in as an administrator.');
}
// Get action from URL parameter
$action = isset($_GET['action']) ? $_GET['action'] : '';
$confirm = isset($_GET['confirm']) ? $_GET['confirm'] : '';
?>
<!DOCTYPE html>
<html>
<head>
<title>Clear Test Certificates</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
line-height: 1.6;
color: #333;
max-width: 800px;
margin: 40px auto;
padding: 20px;
background: #f5f5f5;
}
.container {
background: white;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
h1 {
color: #23282d;
margin-bottom: 30px;
}
.stats {
background: #f9f9f9;
padding: 20px;
border-radius: 4px;
margin-bottom: 30px;
}
.stat-item {
margin: 10px 0;
font-size: 16px;
}
.stat-label {
font-weight: bold;
display: inline-block;
width: 200px;
}
.actions {
margin-top: 30px;
}
.button {
display: inline-block;
padding: 10px 20px;
margin: 5px;
text-decoration: none;
border-radius: 4px;
font-weight: 500;
}
.button-primary {
background: #007cba;
color: white;
}
.button-danger {
background: #dc3545;
color: white;
}
.button-secondary {
background: #6c757d;
color: white;
}
.button:hover {
opacity: 0.9;
}
.alert {
padding: 15px;
margin: 20px 0;
border-radius: 4px;
}
.alert-success {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.alert-warning {
background: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
}
.alert-danger {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
</style>
</head>
<body>
<div class="container">
<h1>Clear Test Certificates</h1>
<?php
// Get current statistics
global $wpdb;
// Get certificate count
$total_certs = $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}hvac_certificates");
// Get test user certificates
$test_user = get_user_by('login', 'test_trainer');
$test_user_id = $test_user ? $test_user->ID : 0;
$test_certs = 0;
if ($test_user_id) {
$test_certs = $wpdb->get_var($wpdb->prepare(
"SELECT COUNT(*) FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
}
// Get certificate file count
$upload_dir = wp_upload_dir();
$cert_dir = $upload_dir['basedir'] . '/hvac-certificates';
$file_count = 0;
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
$file_count = $files ? count($files) : 0;
}
// Handle actions
if ($action && $confirm === 'yes') {
echo '<div class="alert alert-warning">Processing...</div>';
switch ($action) {
case 'clear_all':
// Clear all certificates
$wpdb->query("TRUNCATE TABLE {$wpdb->prefix}hvac_certificates");
// Clear files
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
foreach ($files as $file) {
unlink($file);
}
}
// Clear transients
$wpdb->query("DELETE FROM {$wpdb->prefix}options WHERE option_name LIKE '_transient_hvac_cert_%' OR option_name LIKE '_transient_timeout_hvac_cert_%'");
echo '<div class="alert alert-success">All certificates have been cleared!</div>';
break;
case 'clear_test':
if ($test_user_id) {
// Get certificate IDs
$cert_ids = $wpdb->get_col($wpdb->prepare(
"SELECT certificate_id FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
if ($cert_ids) {
// Delete from database
$wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->prefix}hvac_certificates WHERE generated_by = %d",
$test_user_id
));
echo '<div class="alert alert-success">Test certificates have been cleared from the database!</div>';
}
}
break;
case 'clear_files':
if (is_dir($cert_dir)) {
$files = glob($cert_dir . '/*/*.pdf');
$deleted = 0;
foreach ($files as $file) {
if (unlink($file)) {
$deleted++;
}
}
echo '<div class="alert alert-success">' . $deleted . ' certificate files have been deleted!</div>';
}
break;
}
// Refresh stats
echo '<script>setTimeout(function() { window.location.href = "' . $_SERVER['PHP_SELF'] . '"; }, 2000);</script>';
}
?>
<div class="stats">
<h2>Current Statistics</h2>
<div class="stat-item">
<span class="stat-label">Total Certificates:</span>
<span><?php echo $total_certs; ?></span>
</div>
<div class="stat-item">
<span class="stat-label">Test Certificates:</span>
<span><?php echo $test_certs; ?> (by test_trainer)</span>
</div>
<div class="stat-item">
<span class="stat-label">Certificate Files:</span>
<span><?php echo $file_count; ?> PDF files</span>
</div>
<div class="stat-item">
<span class="stat-label">Certificate Directory:</span>
<span><?php echo $cert_dir; ?></span>
</div>
</div>
<?php if (!$action): ?>
<div class="actions">
<h2>Actions</h2>
<p>Choose an action to perform:</p>
<a href="?action=clear_all" class="button button-danger" onclick="return confirm('Are you sure you want to clear ALL certificates? This cannot be undone!');">Clear All Certificates</a>
<?php if ($test_certs > 0): ?>
<a href="?action=clear_test" class="button button-warning" onclick="return confirm('Clear all test certificates generated by test_trainer?');">Clear Test Certificates Only</a>
<?php endif; ?>
<?php if ($file_count > 0): ?>
<a href="?action=clear_files" class="button button-warning" onclick="return confirm('Delete all certificate PDF files?');">Clear Certificate Files Only</a>
<?php endif; ?>
<a href="/hvac-dashboard/" class="button button-secondary">Back to Dashboard</a>
</div>
<?php elseif (!$confirm): ?>
<div class="alert alert-danger">
<h3>Confirm Action</h3>
<p>You are about to: <strong><?php echo str_replace('_', ' ', $action); ?></strong></p>
<p>This action cannot be undone!</p>
<a href="?action=<?php echo $action; ?>&confirm=yes" class="button button-danger">Yes, Proceed</a>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>" class="button button-secondary">Cancel</a>
</div>
<?php endif; ?>
<hr style="margin-top: 40px;">
<div style="margin-top: 30px;">
<h3>Regenerate Test Data</h3>
<p>After clearing certificates, you can regenerate test data by:</p>
<ol>
<li>Log in as <strong>test_trainer</strong></li>
<li>Go to <a href="/generate-certificates/">Generate Certificates</a></li>
<li>Select an event and attendees</li>
<li>Click "Generate Selected Certificates"</li>
</ol>
</div>
</div>
</body>
</html>