verify_auth_request_credentials_exists() ) { return 0; } if ( ! isset( $_REQUEST['session_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended return 0; } return sanitize_text_field( wp_unslash( $_REQUEST['session_id'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended } /** * Reads in customer ID from query parameters if specific conditions are met otherwise * a guest ID are generated as usual. * * @return int|string */ public function generate_customer_id() { $session_id = $this->get_posted_session_id(); if ( 0 !== $session_id ) { return $session_id; } return parent::generate_customer_id(); } /** * Returns client session ID. * * @return string */ public function get_client_session_id() { $session_id = $this->get_posted_session_id(); /** * Get session data. * * @var null|array{ client_session_id: string, client_session_id_expiration: int } $session_data */ $session_data = 0 !== $session_id ? $this->get_session( (string) $session_id ) : null; if ( ! empty( $session_data ) ) { $client_session_id = $session_data['client_session_id']; $client_session_id_expiration = $session_data['client_session_id_expiration']; } else { $client_session_id = $this->get( 'client_session_id', false ); $client_session_id_expiration = absint( $this->get( 'client_session_id_expiration', 0 ) ); } if ( false !== $client_session_id && time() < $client_session_id_expiration ) { // @phpstan-ignore-next-line return $client_session_id; } $client_session_id = ''; return $client_session_id; } }