89 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
require_once __DIR__ . "/session_bootstrap.php";
 | 
						|
require_once __DIR__ . "/functions.php";
 | 
						|
 | 
						|
// Refresh session and tokens
 | 
						|
if (session_status() === PHP_SESSION_ACTIVE) {
 | 
						|
    $tokens_refreshed = false;
 | 
						|
    $cache_cleared = false;
 | 
						|
    
 | 
						|
    // Check if we need to refresh tokens
 | 
						|
    if (isset($_SESSION["characters"]) && !empty($_SESSION["characters"])) {
 | 
						|
        $page_load_time = time();
 | 
						|
        $last_token_refresh = $_SESSION['last_token_refresh'] ?? 0;
 | 
						|
        
 | 
						|
        // Only refresh tokens if it's been at least 5 minutes since the last refresh
 | 
						|
        if ($page_load_time - $last_token_refresh > 300) {
 | 
						|
            foreach ($_SESSION["characters"] as $character_id => &$charData) {
 | 
						|
                // Skip invalid character entries
 | 
						|
                if (empty($character_id)) continue;
 | 
						|
                
 | 
						|
                if (isset($charData["refresh_token"])) {
 | 
						|
                    // Check if the access token is expired or missing
 | 
						|
                    if (!isset($charData["access_token"]) || 
 | 
						|
                        is_token_expired($charData["access_token"])) {
 | 
						|
                        $new_tokens = refresh_token($charData["refresh_token"]);
 | 
						|
                        if (!empty($new_tokens["access_token"])) {
 | 
						|
                            $charData["access_token"] = $new_tokens["access_token"];
 | 
						|
                            $tokens_refreshed = true;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            unset($charData); // Break reference to avoid unexpected behavior
 | 
						|
            $_SESSION['last_token_refresh'] = $page_load_time;
 | 
						|
            
 | 
						|
            // Only clear cache if tokens were refreshed
 | 
						|
            if ($tokens_refreshed) {
 | 
						|
                // Clear specific cache entries
 | 
						|
                $cache_keys = [
 | 
						|
                    'character_jobs_',
 | 
						|
                    'corporation_jobs_',
 | 
						|
                    'all_character_blueprints'
 | 
						|
                ];
 | 
						|
                
 | 
						|
                foreach ($cache_keys as $prefix) {
 | 
						|
                    $cleared = clear_cache_by_prefix($prefix);
 | 
						|
                    if ($cleared) $cache_cleared = true;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    echo json_encode([
 | 
						|
        "status" => "success", 
 | 
						|
        "message" => "Session refreshed", 
 | 
						|
        "tokens_refreshed" => $tokens_refreshed,
 | 
						|
        "cache_cleared" => $cache_cleared,
 | 
						|
        "timestamp" => time()
 | 
						|
    ]);
 | 
						|
} else {
 | 
						|
    echo json_encode(["status" => "error", "message" => "Session not active"]);
 | 
						|
}
 | 
						|
 | 
						|
// Function to clear cache entries by prefix
 | 
						|
function clear_cache_by_prefix($prefix) {
 | 
						|
    $cache_dir = __DIR__ . "/cache";
 | 
						|
    $cache_file = $cache_dir . "/api_cache.json";
 | 
						|
    
 | 
						|
    if (!file_exists($cache_file)) {
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
    
 | 
						|
    $cache = json_decode(file_get_contents($cache_file), true) ?: [];
 | 
						|
    $cleared = false;
 | 
						|
    
 | 
						|
    foreach ($cache as $key => $value) {
 | 
						|
        if (strpos($key, $prefix) === 0) {
 | 
						|
            unset($cache[$key]);
 | 
						|
            $cleared = true;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    if ($cleared) {
 | 
						|
        file_put_contents($cache_file, json_encode($cache));
 | 
						|
    }
 | 
						|
    
 | 
						|
    return $cleared;
 | 
						|
}
 | 
						|
?>
 |