chore: initial snapshot of 2meet-data-optimizer v0.1.0

Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
This commit is contained in:
2026-07-31 05:06:36 +08:00
commit d36bb954d1
206 changed files with 66538 additions and 0 deletions
@@ -0,0 +1,87 @@
<?php
/**
* TMDO_Adapter_User - User 實體適配器
*
* @package WP_Data_Optimizer
*/
// phpcs:disable Squiz.Commenting,Generic.Commenting,WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber,Generic.CodeAnalysis.UnusedFunctionParameter,Generic.CodeAnalysis.EmptyStatement,Squiz.PHP.DisallowMultipleAssignments,Squiz.PHP.DisallowSizeFunctionsInLoops,WordPress.WP.I18n.MissingTranslatorsComment,WordPress.PHP.NoSilencedErrors,WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents,Squiz.PHP.CommentedOutCode,Universal.NamingConventions.NoReservedKeywordParameterNames,WordPress.PHP.YodaConditions,Squiz.Commenting.InlineComment.InvalidEndChar -- PR-1 ported from UAE; cleanup PR scheduled.
defined( 'ABSPATH' ) || exit;
final class TMDO_Adapter_User implements TMDO_Entity_Adapter_Interface {
public function get_entity_type(): string {
return 'user';
}
public function get_native_meta_table(): string {
global $wpdb;
return $wpdb->usermeta;
}
public function get_entity_id_column(): string {
return 'user_id';
}
public function get_primary_table(): string {
global $wpdb;
return $wpdb->users;
}
public function get_primary_id_column(): string {
return 'ID';
}
public function get_cache_group(): string {
return 'wpdo_user_profile';
}
public function get_delete_hook(): string {
return 'delete_user';
}
public function extend_native_query( $query_object ): void {
if ( ! ( $query_object instanceof WP_User_Query ) ) {
return;
}
$wpdo_query = $query_object->get( 'wpdo_meta_query' );
if ( empty( $wpdo_query ) || ! is_array( $wpdo_query ) ) {
return;
}
TMDO_Query_Compiler::inject_into_user_query( $query_object, $wpdo_query );
}
public function get_entity_ids_after( int $after_id, int $limit ): array {
global $wpdb;
return array_map(
'intval',
$wpdb->get_col(
$wpdb->prepare(
"SELECT ID FROM `{$wpdb->users}` WHERE ID > %d ORDER BY ID ASC LIMIT %d",
$after_id,
$limit
)
) ?: array()
);
}
}
// 註冊 pre_user_query(unit test 下 add_action 未載入時跳過)
if ( function_exists( 'add_action' ) ) {
add_action(
'pre_user_query',
function ( $query ) {
$adapter = TMDO_Entity_Registry::get_adapter( 'user' );
if ( $adapter ) {
$adapter->extend_native_query( $query );
}
},
10,
1
);
}