init_default_settings(); } private function init_default_settings() { $this->default_settings = [ 'general' => [ 'enable_popups' => true, 'load_assets_globally' => false, 'debug_mode' => false, 'analytics_tracking' => true, ], 'appearance' => [ 'default_animation' => 'fade', 'animation_duration' => 400, 'overlay_color' => 'rgba(0, 0, 0, 0.7)', 'close_button_position' => 'top-right', 'close_button_style' => 'icon', 'z_index' => 999999, ], 'behavior' => [ 'prevent_scroll' => true, 'close_on_overlay_click' => true, 'close_on_esc_key' => true, 'auto_focus' => true, 'mobile_behavior' => 'responsive', ], 'advanced' => [ 'cookie_expiration' => 30, 'test_mode' => false, 'test_mode_ips' => '', 'disable_on_mobile' => false, 'custom_css' => '', 'custom_js' => '', ], 'integrations' => [ 'google_analytics' => false, 'google_analytics_event' => 'popup_view', 'facebook_pixel' => false, 'facebook_pixel_event' => 'ViewContent', 'mailchimp_api' => '', 'mailchimp_list_id' => '', ], 'performance' => [ 'lazy_load' => true, 'preload_fonts' => false, 'minify_css' => true, 'minify_js' => true, 'cache_duration' => 3600, ] ]; } public function get_settings($section = null) { $saved_settings = get_option('jltma_popup_settings', []); $settings = wp_parse_args($saved_settings, $this->default_settings); if ($section && isset($settings[$section])) { return $settings[$section]; } return $settings; } public function save_settings($settings) { $current_settings = $this->get_settings(); $updated_settings = wp_parse_args($settings, $current_settings); return update_option('jltma_popup_settings', $updated_settings); } public function render_settings_page() { if (isset($_POST['jltma_popup_settings_nonce'])) { if (wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['jltma_popup_settings_nonce'] ) ), 'jltma_popup_settings')) { $this->process_settings_save(); } } $settings = $this->get_settings(); ?>

render_general_settings($settings['general']); ?> render_appearance_settings($settings['appearance']); ?> render_behavior_settings($settings['behavior']); ?> render_advanced_settings($settings['advanced']); ?> render_integrations_settings($settings['integrations']); ?> render_performance_settings($settings['performance']); ?>

sanitize_settings($settings); // Save settings if ($this->save_settings($sanitized_settings)) { add_action('admin_notices', function() { ?>

$values) { foreach ($values as $key => $value) { if (is_array($value)) { $sanitized[$section][$key] = array_map('sanitize_text_field', $value); } elseif (in_array($key, ['custom_css', 'custom_js', 'test_mode_ips'])) { $sanitized[$section][$key] = sanitize_textarea_field($value); } else { $sanitized[$section][$key] = sanitize_text_field($value); } } } return $sanitized; } }