File "PaymentTokenRepository.php"
Full Path: /home/siazco/grocery.siazco.se/wp-content/plugins/woocommerce-paypal-payments/modules/ppcp-vaulting/src/PaymentTokenRepository.php
File size: 2.71 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* The payment token repository returns or deletes payment tokens for users.
*
* @package WooCommerce\PayPalCommerce\Vaulting
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Vaulting;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
use WooCommerce\PayPalCommerce\ApiClient\Factory\PaymentTokenFactory;
/**
* Class PaymentTokenRepository
*/
class PaymentTokenRepository {
/**
* The payment token factory.
*
* @var PaymentTokenFactory
*/
private $factory;
/**
* The payment token endpoint.
*
* @var PaymentTokenEndpoint
*/
private $endpoint;
/**
* PaymentTokenRepository constructor.
*
* @param PaymentTokenFactory $factory The payment token factory.
* @param PaymentTokenEndpoint $endpoint The payment token endpoint.
*/
public function __construct(
PaymentTokenFactory $factory,
PaymentTokenEndpoint $endpoint
) {
$this->factory = $factory;
$this->endpoint = $endpoint;
}
/**
* Return all tokens for a user.
*
* @param int $id The user id.
* @return PaymentToken[]
*/
public function all_for_user_id( int $id ) {
try {
$tokens = $this->endpoint->for_user( $id );
return $tokens;
} catch ( RuntimeException $exception ) {
return array();
}
}
/**
* Delete a token for a user.
*
* @param int $user_id The user id.
* @param PaymentToken $token The token.
*
* @return bool
*/
public function delete_token( int $user_id, PaymentToken $token ): bool {
return $this->endpoint->delete_token( $token );
}
/**
* Check if tokens has card source.
*
* @param PaymentToken[] $tokens The tokens.
* @return bool Whether tokens contains card or not.
*/
public function tokens_contains_card( array $tokens ): bool {
return $this->token_contains_source( $tokens, 'card' );
}
/**
* Check if tokens has PayPal source.
*
* @param PaymentToken[] $tokens The tokens.
* @return bool Whether tokens contains card or not.
*/
public function tokens_contains_paypal( array $tokens ): bool {
return $this->token_contains_source( $tokens, 'paypal' );
}
/**
* Checks if tokens has the given source.
*
* @param array $tokens Payment tokens.
* @param string $source_type Payment token source type.
* @return bool Whether tokens contains source or not.
*/
private function token_contains_source( array $tokens, string $source_type ): bool {
foreach ( $tokens as $token ) {
if ( isset( $token->source()->card ) && 'card' === $source_type || isset( $token->source()->paypal ) && 'paypal' === $source_type ) {
return true;
}
}
return false;
}
}