register( '2meet-data-optimizer-hub-addon', array( 'table_name' => $suffix, 'primary_key' => 'id', 'expected_columns' => $expected_columns[ $suffix ] ?? array(), 'indexes' => $expected_indexes[ $suffix ] ?? array(), 'description' => '2meet Hub Core 自訂表:' . $suffix, ) ); } self::$registered = true; } private static function get_suffixes(): array { if ( function_exists( 'tmhc_get_table_suffixes' ) ) { $out = tmhc_get_table_suffixes(); if ( is_array( $out ) && ! empty( $out ) ) { return $out; } } return self::FALLBACK_SUFFIXES; } private static function get_expected_columns_safe(): array { if ( class_exists( 'TMHC_Plugin' ) && method_exists( 'TMHC_Plugin', 'get_expected_columns' ) ) { $reflection = new ReflectionMethod( 'TMHC_Plugin', 'get_expected_columns' ); if ( $reflection->isStatic() && $reflection->isPublic() ) { return TMHC_Plugin::get_expected_columns(); } } return array(); } private static function get_expected_indexes_safe(): array { if ( class_exists( 'TMHC_Plugin' ) && method_exists( 'TMHC_Plugin', 'get_expected_indexes' ) ) { $reflection = new ReflectionMethod( 'TMHC_Plugin', 'get_expected_indexes' ); if ( $reflection->isStatic() && $reflection->isPublic() ) { return TMHC_Plugin::get_expected_indexes(); } } return array(); } }