eve-indy-job-tracker/import.php

88 lines
3.5 KiB
PHP
Executable file

<?php
require_once __DIR__ . "/session_bootstrap.php";
require_once "functions.php"; // Include your existing functions
// Handle POST with file upload
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_FILES["session_file"])) {
$raw = file_get_contents($_FILES["session_file"]["tmp_name"]);
$imported = json_decode($raw, true);
if (!is_array($imported)) {
http_response_code(400);
echo json_encode(["error" => "Invalid JSON session file"]);
exit();
}
// Debug: Log the original import data structure
error_log("Import data structure: " . print_r(array_keys($imported), true));
if (isset($imported["characters"])) {
error_log("Characters in import: " . print_r(array_keys($imported["characters"]), true));
}
// Thorough cleaning of the imported data
if (isset($imported["characters"]) && is_array($imported["characters"])) {
foreach (array_keys($imported["characters"]) as $charID) {
// Remove any entries with empty or non-numeric character IDs
if (empty($charID) || $charID === "" || !is_numeric($charID)) {
error_log("Removing invalid character ID: '$charID'");
unset($imported["characters"][$charID]);
}
}
}
// Only assign cleaned data to session
$_SESSION = $imported;
// Refresh tokens for each character if needed
if (isset($_SESSION["characters"]) && is_array($_SESSION["characters"])) {
// Extra validation check
foreach (array_keys($_SESSION["characters"]) as $charID) {
if (empty($charID) || $charID === "") {
error_log("Removing empty character ID from session");
unset($_SESSION["characters"][$charID]);
}
}
foreach ($_SESSION["characters"] as $charID => &$char) {
if (
empty($char["access_token"]) ||
!empty($char["refresh_token"]) // Always refresh on import
) {
error_log("Refreshing token for character $charID");
$new_tokens = refresh_token($char["refresh_token"]);
if (!empty($new_tokens["access_token"])) {
$char["access_token"] = $new_tokens["access_token"];
if (!empty($new_tokens["refresh_token"])) {
$char["refresh_token"] = $new_tokens["refresh_token"];
}
} else {
error_log("Failed to refresh token for character $charID");
}
}
}
unset($char); // Break the reference to avoid unexpected behavior
// Final validation to ensure no empty entries
if (isset($_SESSION["characters"][""])) {
error_log("Final cleanup: Removing empty character ID");
unset($_SESSION["characters"][""]);
}
}
// Log the final session structure
error_log("Final character count: " . count($_SESSION["characters"]));
error_log("Character IDs after import: " . implode(", ", array_keys($_SESSION["characters"])));
header("Content-Type: application/json");
echo json_encode([
"status" => "success",
"characters_imported" => count($_SESSION["characters"]),
]);
// After successful import, redirect to index.php
header("Location: index.php");
exit();
} else {
http_response_code(400);
echo json_encode(["error" => "POST with session_file required"]);
exit();
}