is_paying() ) { $license = accesslens_fs()->_get_license(); if ( $license && ! empty( $license->secret_key ) ) { return (string) $license->secret_key; } } return ''; } /** * Limpieza en desinstalacion. Registrada en el hook after_uninstall de Freemius * (Freemius no permite uninstall.php en los deployments; el SDK invoca este hook * cuando WordPress desinstala el plugin). * * Multisite-aware: en una red, itera cada sitio con switch_to_blog() para limpiar * sus options/transients propios (cada blog tiene su propia tabla wp_X_options). * * @return void */ function accesslens_uninstall_cleanup(): void { if ( is_multisite() ) { $site_ids = get_sites( array( 'fields' => 'ids' ) ); foreach ( $site_ids as $site_id ) { switch_to_blog( (int) $site_id ); accesslens_uninstall_cleanup_single_site(); restore_current_blog(); } return; } accesslens_uninstall_cleanup_single_site(); } /** * Limpieza de options/transients de AccessLens para el sitio (blog) actual. * * @return void */ function accesslens_uninstall_cleanup_single_site(): void { // Limpieza de instalaciones anteriores a 0.2.0: el ajuste ya no existe // (la URL del motor es la constante ACCESSLENS_ENGINE_URL). delete_option( 'accesslens_engine_url' ); // Options introducidas en el Tier 1 (ultimo scan, onboarding, contador de // resenas). Todas se guardaron con autoload 'no' via AccessLens_Options. delete_option( 'accesslens_last_scan' ); delete_option( 'accesslens_onboarding_dismissed' ); delete_option( 'accesslens_scan_count' ); delete_option( 'accesslens_installed_at' ); delete_option( 'accesslens_review_dismissed' ); // Historico de scans (Feature: Progress over time), introducido en 0.2.0. delete_option( 'accesslens_scan_history' ); $user_ids = get_users( array( 'fields' => 'ID', 'number' => -1, ) ); foreach ( $user_ids as $user_id ) { delete_transient( 'accesslens_job_' . absint( $user_id ) ); } // Transientes huerfanos de usuarios ya borrados. global $wpdb; // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_accesslens_job_%' OR option_name LIKE '_transient_timeout_accesslens_job_%'" ); }