code = $code; $this->message = $message; } public function get_error_message() { return $this->message; } } function is_wp_error($value) { return $value instanceof WP_Error; } function wp_json_encode($value, $options = 0) { return json_encode($value, $options); } function get_current_user_id() { return 7; } function wp_generate_password($length, $special_chars = true, $extra_special_chars = false) { return str_repeat('A', (int) $length); } function __($text, $domain = '') { return $text; } function esc_html($text) { return htmlspecialchars((string) $text, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); } function esc_attr($text) { return esc_html($text); } function esc_html__($text, $domain = '') { return esc_html($text); } function esc_attr__($text, $domain = '') { return esc_attr($text); } function esc_url($url) { return preg_match('/^\s*javascript:/i', (string) $url) ? '' : esc_attr($url); } function admin_url($path = '') { return 'https://example.test/wp-admin/' . ltrim((string) $path, '/'); } function get_edit_user_link($id) { return admin_url('user-edit.php?user_id=' . (int) $id); } function current_user_can($capability) { return $capability === 'edit_users'; } function wp_die($message = '') { throw new RuntimeException((string) $message); } function wp_create_nonce($action) { return 'nonce"']]; } if (str_contains($sql, 'SELECT * FROM wp_jio_invite_code')) { return [ [ 'id' => 41, 'code' => 'X&Y"', 'batch_id' => 'B1', 'remark' => 'owner">', 'rewards' => '{"points":5,"vip_level":1,"vip_days":7}', 'max_uses' => 3, 'used_count' => 1, 'status' => 'active', 'expires_at' => null, 'created_at' => '', 'updated_at' => '2026-10-30 11:00:00', ], [ 'id' => 42, 'code' => 'CLEAN-CODE', 'batch_id' => 'B2', 'remark' => '', 'rewards' => '{"vip_level":2,"vip_days":5}', 'max_uses' => 1, 'used_count' => 0, 'status' => 'active', 'expires_at' => null, 'created_at' => '2026-10-29 10:00:00', 'updated_at' => '2026-10-29 10:00:00', ], ]; } return []; } public function esc_like($text) { return addcslashes((string) $text, '_%\\'); } } $wpdb = new FakeWpdb(); require $root . '/src/Admin/Native/NativeUi.php'; require $root . '/src/Payment/InviteCode.php'; require $root . '/src/Admin/Native/UsersMenusInviteForms.php'; require $root . '/src/Admin/Native/UsersMenusInviteCode.php'; final class InviteAdminProbe { use \Jio\Admin\Native\UsersMenusInviteCode; } $_GET = [ 'page' => 'jio_invite_codes', 'status' => 'used', 's' => 'search & phrase', 'remark' => 'campaign & east', 'orderby' => 'code', 'desc' => 'ASC', 'jio_inv_title' => 'Completed', 'jio_inv_msg' => 'notice', ]; $probe = new InviteAdminProbe(); ob_start(); $probe->render_invite_codes_page(); $page = ob_get_clean(); $GLOBALS['assets'] = []; $probe->enqueue_invite_assets('users_page_jio_messages'); $wrong_hook_assets = $GLOBALS['assets']; $probe->enqueue_invite_assets('users_page_jio_invite_codes'); $page_assets = $GLOBALS['assets']; $service = \Jio\Payment\InviteCode::get_instance(); $guard = new \ReflectionMethod($service, 'guard_and_redirect'); $list_result = $service->list_codes(['status' => 'used']); $import_lines = []; for ($i = 1; $i <= 1000; $i++) { $import_lines[] = sprintf('CODE%05d 无', $i); } $over_limit_result = $service->import_codes(['data' => implode("\n", array_merge($import_lines, ['OVERLIMIT 无']))]); $blank_plus_limit_result = $service->import_codes(['data' => "\n" . implode("\n", $import_lines)]); $return_url = $guard->invoke($service); echo json_encode([ 'html' => $page, 'wrong_hook_assets' => $wrong_hook_assets, 'page_assets' => $page_assets, 'return_url' => $return_url, 'list_result' => $list_result, 'row_queries' => $wpdb->row_queries, 'over_limit_is_error' => is_wp_error($over_limit_result), 'leading_blank_imported' => is_wp_error($blank_plus_limit_result) ? null : $blank_plus_limit_result['imported'], 'import_insert_count' => $wpdb->inserts, 'checked_nonces' => $GLOBALS['checked_nonces'], ], JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR); }