'sanitize_text_field']); } add_settings_section( 'fusion_woodoo_connection', __('Odoo Connection', 'fusion-woodoo'), null, 'fusion-woodoo-settings' ); add_settings_field( self::OPTION_ODOO_URL, __('Odoo URL', 'fusion-woodoo'), [$this, 'field_odoo_url'], 'fusion-woodoo-settings', 'fusion_woodoo_connection' ); add_settings_field( self::OPTION_API_KEY, __('API Key', 'fusion-woodoo'), [$this, 'field_api_key'], 'fusion-woodoo-settings', 'fusion_woodoo_connection' ); add_settings_section( 'fusion_woodoo_portal', __('Customer Portal Tabs', 'fusion-woodoo'), null, 'fusion-woodoo-settings' ); $toggles = [ self::OPTION_SHOW_ORDERS => __('Show Sales Orders tab', 'fusion-woodoo'), self::OPTION_SHOW_INVOICES => __('Show Invoices tab', 'fusion-woodoo'), self::OPTION_SHOW_DELIVERIES => __('Show Deliveries tab', 'fusion-woodoo'), self::OPTION_SHOW_RETURNS => __('Show Returns tab', 'fusion-woodoo'), ]; foreach ($toggles as $option => $label) { add_settings_field( $option, $label, [$this, 'field_checkbox'], 'fusion-woodoo-settings', 'fusion_woodoo_portal', ['option' => $option] ); } } public function field_odoo_url(): void { $value = esc_attr(get_option(self::OPTION_ODOO_URL, '')); echo ''; echo '

' . __('Base URL of your Odoo instance — no trailing slash.', 'fusion-woodoo') . '

'; } public function field_api_key(): void { $value = esc_attr(get_option(self::OPTION_API_KEY, '')); echo ''; echo '

' . __('API key from the Fusion WooCommerce Odoo module.', 'fusion-woodoo') . '

'; } public function field_checkbox(array $args): void { $option = $args['option']; $checked = checked(1, get_option($option, 1), false); echo ''; } public function render_settings_page(): void { $template = FUSION_WOODOO_PLUGIN_DIR . 'templates/admin/settings.php'; if (file_exists($template)) { include $template; } } public function on_url_changed(): void { if (class_exists('Fusion_WooDoo_Webhooks')) { Fusion_WooDoo_Webhooks::unregister_all(); (new Fusion_WooDoo_Webhooks())->register_webhooks(); } } public function ajax_test_connection(): void { check_ajax_referer('fusion_woodoo_admin_nonce', 'nonce'); if (!current_user_can('manage_woocommerce')) { wp_send_json_error(['message' => __('Permission denied.', 'fusion-woodoo')]); } $client = new Fusion_WooDoo_API_Client(); $result = $client->test_connection(); if ($result['success']) { wp_send_json_success(['message' => __('Connection successful! Odoo is reachable.', 'fusion-woodoo')]); } else { wp_send_json_error(['message' => $result['error'] ?: __('Connection failed.', 'fusion-woodoo')]); } } }