options_repository = $options_repository; $this->logger = $logger; } /** * Add admin menu item. */ public function add_admin_menu(): void { add_options_page( __('AdsDestroyer', 'ads-destroyer'), __('AdsDestroyer', 'ads-destroyer'), 'manage_options', $this->menu_slug, [$this, 'render_settings_page'] ); } /** * Render settings page. */ public function render_settings_page(): void { if (!current_user_can('manage_options')) { wp_die(esc_html__('You do not have sufficient permissions to access this page.', 'ads-destroyer')); } $opts = $this->options_repository->get_all(); // Sanitize tab parameter with allowed values $allowed_tabs = ['rules', 'settings', 'logs']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- URL parameter, not form submission $active_tab = isset($_GET['tab']) ? sanitize_text_field(wp_unslash($_GET['tab'])) : 'rules'; if (!in_array($active_tab, $allowed_tabs, true)) { $active_tab = 'rules'; } if ($active_tab === 'logs' && empty($opts['logging']['enabled'])) { $active_tab = 'rules'; } ?>
' . esc_html__('All rules have been reset successfully.', 'ads-destroyer') . '
'; } ?>' . esc_html__('Settings saved successfully.', 'ads-destroyer') . '