= 4 ) { return $parts[0] . '-****-****-' . $parts[ count( $parts ) - 1 ]; } return substr( $key, 0, 4 ) . str_repeat( '*', max( 4, strlen( $key ) - 8 ) ) . substr( $key, -4 ); } public static function get_api_url() { return ''; } public static function get_site_host() { $host = wp_parse_url( home_url( '/' ), PHP_URL_HOST ); return is_string( $host ) && '' !== $host ? strtolower( $host ) : ''; } public static function normalize_license_key( $key ) { $key = strtoupper( trim( (string) $key ) ); return preg_replace( '/\s+/', '', $key ); } public static function clear_cache() { // No-op. } public static function cron_validate() { // No-op. } public static function validate( $key, $force_remote = false ) { unset( $force_remote ); return array( 'active' => true, 'status' => 'active', 'message' => __( 'License is active.', 'adct-llm-index' ), 'key' => self::normalize_license_key( $key ), ); } public static function get_status_summary() { return array( 'active' => true, 'licensed' => true, 'status' => 'active', 'label' => __( 'Active', 'adct-llm-index' ), 'message' => __( 'WordPress.org edition — all features are included.', 'adct-llm-index' ), 'expires' => '', 'plan' => '', ); } public static function get_version_info() { if ( class_exists( 'ADCT_LLMS_Updater' ) ) { return ADCT_LLMS_Updater::get_version_info(); } $current = ltrim( ADCT_LLMS_VERSION, 'vV' ); return array( 'current' => $current, 'latest' => $current, 'has_update' => false, 'download_url' => '', 'release_url' => 'https://wordpress.org/plugins/adct-llm-index/', 'error' => '', 'up_to_date' => true, ); } public static function maybe_activate_license() { // No-op. } public static function maybe_deactivate_license() { // No-op. } public static function admin_notices() { // No-op. } public static function deactivate_license() { // No-op. } }