'qr', 'chs' => "{$size}x{$size}", 'chl' => rawurlencode( $data ), 'choe' => 'UTF-8', ], 'https://chart.googleapis.com/chart' ); $response = wp_remote_get( $api_url, [ 'timeout' => 15 ] ); if ( is_wp_error( $response ) ) { return $response; } $code = wp_remote_retrieve_response_code( $response ); if ( $code !== 200 ) { return new WP_Error( 'eb4tec_qr_fetch', __( 'QR code generation failed.', 'eb4tec' ), [ 'status' => $code ] ); } $body = wp_remote_retrieve_body( $response ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents if ( false === file_put_contents( $file, $body ) ) { return new WP_Error( 'eb4tec_qr_write', __( 'Could not save QR code image.', 'eb4tec' ) ); } return $url; } public function get_attendee_qr_data( string $attendee_id, string $order_id, string $event_id ): string { return "EB4TEC:{$attendee_id}:{$order_id}:{$event_id}"; } public function render_qr_html( string $url, string $attendee_id = '', int $size = 0 ): string { if ( $size <= 0 ) { $size = (int) get_option( 'eb4tec_qr_size', 200 ); } $alt = $attendee_id ? sprintf( __( 'Ticket QR code for attendee %s', 'eb4tec' ), esc_attr( $attendee_id ) ) : __( 'Ticket QR code', 'eb4tec' ); return sprintf( '%s', esc_url( $url ), esc_attr( $alt ), $size, $size ); } }