manager = new FLOATCONNECT_Manager(); } /** * Register page hooks. * * @return void */ public function boot(): void { add_action( 'admin_init', array( $this, 'handle_save' ) ); } /** * Handle settings save/reset. * * @return void */ public function handle_save(): void { if ( ! current_user_can( 'manage_options' ) ) { return; } /* * Reset settings. */ if ( isset( $_POST['floatconnect_reset'] ) ) { check_admin_referer( 'floatconnect_reset', 'floatconnect_reset_nonce' ); $reset = $this->manager->reset(); if ( $reset ) { add_settings_error( 'floatconnect', 'floatconnect_reset', __( 'Settings reset to defaults.', 'floatconnect' ), 'updated' ); } else { add_settings_error( 'floatconnect', 'floatconnect_reset_failed', __( 'Settings could not be reset.', 'floatconnect' ), 'error' ); } return; } /* * Save settings. */ if ( ! isset( $_POST['floatconnect_save'] ) ) { return; } check_admin_referer( 'floatconnect_save', 'floatconnect_nonce' ); $data = array(); if ( isset( $_POST['floatconnect'] ) && is_array( $_POST['floatconnect'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sanitized by Settings\Sanitizer. $data = wp_unslash( $_POST['floatconnect'] ); } $saved = $this->manager->save( $data ); if ( $saved ) { add_settings_error( 'floatconnect', 'floatconnect_saved', __( 'Settings saved.', 'floatconnect' ), 'updated' ); } } /** * Render dashboard page. * * @return void */ public function render(): void { if ( ! current_user_can( 'manage_options' ) ) { return; } $settings = $this->manager->get_settings(); $contact = ( isset( $settings['contact'] ) && is_array( $settings['contact'] ) ) ? $settings['contact'] : array(); ?>