| 
									
										
										
										
											2024-08-12 11:12:24 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | $action = $_REQUEST['action'] ?? ''; | 
					
						
							| 
									
										
										
										
											2024-08-19 10:42:16 +00:00
										 |  |  | require '../app/helpers/errors.php'; | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  | // if a form is submitted, it's from the edit page
 | 
					
						
							|  |  |  | if ($_SERVER['REQUEST_METHOD'] == 'POST') { | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     // load the config file and initialize a copy
 | 
					
						
							|  |  |  |     $content = file_get_contents($config_file); | 
					
						
							|  |  |  |     $updatedContent = $content; | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     foreach ($_POST as $key => $value) { | 
					
						
							| 
									
										
										
										
											2024-08-20 09:58:55 +00:00
										 |  |  |         // Create a regex pattern to match the key-value pair for the specified platform ID
 | 
					
						
							|  |  |  |         $pattern = "/((?:'[^']+'\s*=>\s*'[^']+'\s*,?\s*)*)('{$key}'\s*=>\s*)'[^']*'/s"; | 
					
						
							|  |  |  |         // Replace using a callback to handle the match and replacement
 | 
					
						
							|  |  |  |         $updatedContent = preg_replace_callback($pattern, function($matches) use ($value) { | 
					
						
							|  |  |  |                 return $matches[1] . $matches[2] . "'{$value}'"; | 
					
						
							|  |  |  |             }, $updatedContent | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:42:16 +00:00
										 |  |  |     // check if file is writable
 | 
					
						
							|  |  |  |     if (!is_writable($config_file)) { | 
					
						
							|  |  |  |         $_SESSION['error'] = getError('Configuration file is not writable.'); | 
					
						
							|  |  |  |         header("Location: $app_root?platform=$platform_id&page=config"); | 
					
						
							|  |  |  |         exit(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // try to update the config file
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     if (file_put_contents($config_file, $updatedContent) !== false) { | 
					
						
							|  |  |  |         // update successful
 | 
					
						
							|  |  |  |         $_SESSION['notice'] = "Configuration for {$_POST['name']} is updated."; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         // unsuccessful
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:42:16 +00:00
										 |  |  |         $error = error_get_last(); | 
					
						
							|  |  |  |         $_SESSION['error'] = getError('Error updating the config: ' . ($error['message'] ?? 'unknown error')); | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-08-19 10:42:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-19 10:25:09 +00:00
										 |  |  | // FIXME the new file is not loaded on first page load
 | 
					
						
							|  |  |  |     unset($config); | 
					
						
							|  |  |  |     header("Location: $app_root?platform=$platform_id&page=config"); | 
					
						
							|  |  |  |     exit(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // no form submitted, show the templates
 | 
					
						
							|  |  |  | } else { | 
					
						
							|  |  |  |     switch ($action) { | 
					
						
							|  |  |  |         case 'edit': | 
					
						
							|  |  |  |             include('../app/templates/config-edit-platform.php'); | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |             include('../app/templates/config-list.php'); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-08-18 19:12:45 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2024-08-12 11:12:24 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ?>
 |