File "class-wc-payment-tokens.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/class-wc-payment-tokens.php
File
size: 3.91 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') || exit;
class WC_Payment_Tokens
{
public static function get_tokens($args)
{
$args = wp_parse_args($args, array('token_id' => '', 'user_id' => '', 'gateway_id' => '', 'type' => ''));
$data_store = WC_Data_Store::load('payment-token');
$token_results = $data_store->get_tokens($args);
$tokens = array();
if (!empty($token_results)) {
foreach ($token_results as $token_result) {
$_token = self::get($token_result->token_id, $token_result);
if (!empty($_token)) {
$tokens[$token_result->token_id] = $_token;
}
}
}
return $tokens;
}
public static function get_customer_tokens($customer_id, $gateway_id = '')
{
if ($customer_id < 1) {
return array();
}
$tokens = self::get_tokens(array('user_id' => $customer_id, 'gateway_id' => $gateway_id));
return apply_filters('woocommerce_get_customer_payment_tokens', $tokens, $customer_id, $gateway_id);
}
public static function get_customer_default_token($customer_id)
{
if ($customer_id < 1) {
return null;
}
$data_store = WC_Data_Store::load('payment-token');
$token = $data_store->get_users_default_token($customer_id);
if ($token) {
return self::get($token->token_id, $token);
} else {
return null;
}
}
public static function get_order_tokens($order_id)
{
$order = wc_get_order($order_id);
if (!$order) {
return array();
}
$token_ids = $order->get_payment_tokens();
if (empty($token_ids)) {
return array();
}
$tokens = self::get_tokens(array('token_id' => $token_ids));
return apply_filters('woocommerce_get_order_payment_tokens', $tokens, $order_id);
}
public static function get($token_id, $token_result = null)
{
$data_store = WC_Data_Store::load('payment-token');
if (is_null($token_result)) {
$token_result = $data_store->get_token_by_id($token_id);
if (empty($token_result)) {
return null;
}
}
$token_class = self::get_token_classname($token_result->type);
if (class_exists($token_class)) {
$meta = $data_store->get_metadata($token_id);
$passed_meta = array();
if (!empty($meta)) {
foreach ($meta as $meta_key => $meta_value) {
$passed_meta[$meta_key] = $meta_value[0];
}
}
return new $token_class($token_id, (array) $token_result, $passed_meta);
}
return null;
}
public static function delete($token_id)
{
$type = self::get_token_type_by_id($token_id);
if (!empty($type)) {
$class = self::get_token_classname($type);
$token = new $class($token_id);
$token->delete();
}
}
public static function set_users_default($user_id, $token_id)
{
$data_store = WC_Data_Store::load('payment-token');
$users_tokens = self::get_customer_tokens($user_id);
foreach ($users_tokens as $token) {
if ($token_id === $token->get_id()) {
$data_store->set_default_status($token->get_id(), true);
do_action('woocommerce_payment_token_set_default', $token_id, $token);
} else {
$data_store->set_default_status($token->get_id(), false);
}
}
}
public static function get_token_type_by_id($token_id)
{
$data_store = WC_Data_Store::load('payment-token');
return $data_store->get_token_type_by_id($token_id);
}
protected static function get_token_classname($type)
{
return apply_filters('woocommerce_payment_token_class', 'WC_Payment_Token_' . $type, $type);
}
}