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);
}