58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
|  | <?php | ||
|  | /** | ||
|  |  * Theme Management Controller | ||
|  |  * | ||
|  |  * Handles theme switching and management functionality. | ||
|  |  * Allows users to view available themes and change the active theme. | ||
|  |  * | ||
|  |  * Actions: | ||
|  |  * - switch_to: Changes the active theme for the current user | ||
|  |  */ | ||
|  | 
 | ||
|  | // Only allow access to logged-in users
 | ||
|  | if (!Session::isValidSession()) { | ||
|  |     header('Location: ' . $app_root . '?page=login'); | ||
|  |     exit; | ||
|  | } | ||
|  | 
 | ||
|  | // Handle theme switching
 | ||
|  | if (isset($_GET['switch_to'])) { | ||
|  |     $themeName = $_GET['switch_to']; | ||
|  | 
 | ||
|  |     // Validate CSRF token for state-changing operations
 | ||
|  |     require_once '../app/helpers/security.php'; | ||
|  |     $security = SecurityHelper::getInstance(); | ||
|  | 
 | ||
|  |     if (!$security->verifyCsrfToken($_GET['csrf_token'] ?? '')) { | ||
|  |         Feedback::flash('SECURITY', 'CSRF_INVALID'); | ||
|  |         header("Location: $app_root?page=theme"); | ||
|  |         exit(); | ||
|  |     } | ||
|  | 
 | ||
|  |     if (\App\Helpers\Theme::setCurrentTheme($themeName)) { | ||
|  |         // Set success message
 | ||
|  |         Feedback::flash('THEME', 'THEME_CHANGED'); | ||
|  |     } else { | ||
|  |         // Set error message
 | ||
|  |         Feedback::flash('THEME', 'THEME_CHANGE_FAILED'); | ||
|  |     } | ||
|  | 
 | ||
|  |     // Redirect back to prevent form resubmission
 | ||
|  |     $redirect = $app_root . '?page=theme'; | ||
|  |     header("Location: $redirect"); | ||
|  |     exit; | ||
|  | } | ||
|  | 
 | ||
|  | // Get available themes and current theme for the view
 | ||
|  | $themes = \App\Helpers\Theme::getAvailableThemes(); | ||
|  | $currentTheme = \App\Helpers\Theme::getCurrentThemeName(); | ||
|  | 
 | ||
|  | // Generate CSRF token for the form
 | ||
|  | $csrf_token = $security->generateCsrfToken(); | ||
|  | 
 | ||
|  | // Get any new feedback messages
 | ||
|  | include '../app/helpers/feedback.php'; | ||
|  | 
 | ||
|  | // Load the template
 | ||
|  | include '../app/templates/theme.php'; |