Файловый менеджер - Редактировать - /home/harasnat/www/labour/wp-content/plugins/woocommerce-payments/includes/class-wc-payments-features.php
Назад
<?php /** * Class WC_Payments_Features * * @package WooCommerce\Payments */ use WCPay\Constants\Country_Code; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } /** * WC Payments Features class */ class WC_Payments_Features { /** * If you need to remove or deprecate a flag: * - Please update the `Erase_Deprecated_Flags_And_Options` migration with: * - The next version of WooPayments. * - The flag to be deleted. */ const WCPAY_SUBSCRIPTIONS_FLAG_NAME = '_wcpay_feature_subscriptions'; const STRIPE_BILLING_FLAG_NAME = '_wcpay_feature_stripe_billing'; const WOOPAY_EXPRESS_CHECKOUT_FLAG_NAME = '_wcpay_feature_woopay_express_checkout'; const WOOPAY_FIRST_PARTY_AUTH_FLAG_NAME = '_wcpay_feature_woopay_first_party_auth'; const WOOPAY_DIRECT_CHECKOUT_FLAG_NAME = '_wcpay_feature_woopay_direct_checkout'; const DISPUTE_ISSUER_EVIDENCE = '_wcpay_feature_dispute_issuer_evidence'; const WOOPAY_GLOBAL_THEME_SUPPORT_FLAG_NAME = '_wcpay_feature_woopay_global_theme_support'; /** * Indicates whether card payments are enabled for this (Stripe) account. * * @return bool True if account can accept card payments, false otherwise. */ public static function are_payments_enabled() { $account = WC_Payments::get_database_cache()->get( WCPay\Database_Cache::ACCOUNT_KEY, true ); return is_array( $account ) && ( $account['payments_enabled'] ?? false ); } /** * Checks if WooPay is enabled. * * @return bool */ public static function is_woopay_enabled() { $is_woopay_eligible = self::is_woopay_eligible(); // Feature flag. $is_woopay_enabled = 'yes' === WC_Payments::get_gateway()->get_option( 'platform_checkout' ); $is_woopay_express_button_enabled = self::is_woopay_express_checkout_enabled(); return $is_woopay_eligible && $is_woopay_enabled && $is_woopay_express_button_enabled; } /** * Checks whether the customer Multi-Currency feature is enabled * * @return bool */ public static function is_customer_multi_currency_enabled() { return '1' === get_option( '_wcpay_feature_customer_multi_currency', '1' ); } /** * Checks whether WCPay Subscriptions is enabled. * * @return bool */ public static function is_wcpay_subscriptions_enabled() { // After completing the WooCommerce onboarding, check if the merchant has chosen Subscription product types and enable the feature flag. if ( (bool) get_option( 'wcpay_check_subscriptions_eligibility_after_onboarding', false ) ) { if ( defined( 'WC_VERSION' ) && version_compare( WC_VERSION, '7.9.0', '<' ) ) { self::maybe_enable_wcpay_subscriptions_after_onboarding( [], get_option( 'woocommerce_onboarding_profile', [] ) ); } delete_option( 'wcpay_check_subscriptions_eligibility_after_onboarding' ); } return apply_filters( 'wcpay_is_wcpay_subscriptions_enabled', '1' === get_option( self::WCPAY_SUBSCRIPTIONS_FLAG_NAME, '0' ) ); } /** * Returns whether the store is eligible to use WCPay Subscriptions (the free subscriptions bundled in WooPayments) * * Stores are eligible for the WCPay Subscriptions feature if: * 1. The store has existing WCPay Subscriptions, or * 2. The store has Stripe Billing product metadata on at least 1 product subscription product. * * @return bool */ public static function is_wcpay_subscriptions_eligible() { /** * Check if they have at least 1 WCPay Subscription. * * Note: this is only possible if WCPay Subscriptions is enabled, otherwise the wcs_get_subscriptions function wouldn't exist. */ if ( function_exists( 'wcs_get_subscriptions' ) ) { $wcpay_subscriptions = wcs_get_subscriptions( [ 'subscriptions_per_page' => 1, 'subscription_status' => 'any', 'meta_query' => [ // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query [ 'key' => '_wcpay_subscription_id', 'compare' => 'EXISTS', ], ], ] ); if ( ( is_countable( $wcpay_subscriptions ) ? count( $wcpay_subscriptions ) : 0 ) > 0 ) { return true; } } /** * Check if they have at least 1 Stripe Billing enabled product. */ $stripe_billing_meta_query_handler = function ( $query, $query_vars ) { if ( ! empty( $query_vars['stripe_billing_product'] ) ) { $query['meta_query'][] = [ 'key' => '_wcpay_product_hash', 'compare' => 'EXISTS', ]; } return $query; }; add_filter( 'woocommerce_product_data_store_cpt_get_products_query', $stripe_billing_meta_query_handler, 10, 2 ); $subscription_products = wc_get_products( [ 'limit' => 1, 'type' => [ 'subscription', 'variable-subscription' ], 'status' => 'publish', 'return' => 'ids', 'stripe_billing_product' => 'true', ] ); remove_filter( 'woocommerce_product_data_store_cpt_get_products_query', $stripe_billing_meta_query_handler, 10, 2 ); if ( ( is_countable( $subscription_products ) ? count( $subscription_products ) : 0 ) > 0 ) { return true; } return false; } /** * Checks whether the merchant has chosen Subscription product types during onboarding * WooCommerce and is elible for WCPay Subscriptions, if so, enables the feature flag. * * @since 6.2.0 * * @param array $onboarding_data Onboarding data. * @param array $updated Updated onboarding settings. * * @return void */ public static function maybe_enable_wcpay_subscriptions_after_onboarding( $onboarding_data, $updated ) { if ( empty( $updated['product_types'] ) || ! is_array( $updated['product_types'] ) || ! in_array( 'subscriptions', $updated['product_types'], true ) ) { return; } if ( ! self::is_wcpay_subscriptions_eligible() ) { return; } update_option( self::WCPAY_SUBSCRIPTIONS_FLAG_NAME, '1' ); } /** * Checks whether woopay is enabled. * * @return bool */ public static function is_woopay_eligible() { // Checks for the dependency on Store API AbstractCartRoute. if ( ! class_exists( 'Automattic\WooCommerce\StoreApi\Routes\V1\AbstractCartRoute' ) ) { return false; } // read directly from cache, ignore cache expiration check. $account = WC_Payments::get_database_cache()->get( WCPay\Database_Cache::ACCOUNT_KEY, true ); $is_account_rejected = WC_Payments::get_account_service()->is_account_rejected(); $is_account_under_review = WC_Payments::get_account_service()->is_account_under_review(); return is_array( $account ) && ( $account['platform_checkout_eligible'] ?? false ) && ! $is_account_rejected && ! $is_account_under_review; } /** * Checks whether documents section is enabled. * * @return bool */ public static function is_documents_section_enabled() { $account = WC_Payments::get_database_cache()->get( WCPay\Database_Cache::ACCOUNT_KEY, true ); return is_array( $account ) && ( $account['is_documents_enabled'] ?? false ); } /** * Checks whether WooPay Express Checkout is enabled. * * @return bool */ public static function is_woopay_express_checkout_enabled() { // Confirm woopay eligibility as well. return '1' === get_option( self::WOOPAY_EXPRESS_CHECKOUT_FLAG_NAME, '1' ) && self::is_woopay_eligible(); } /** * Checks whether WooPay First Party Auth is enabled. * * @return bool */ public static function is_woopay_first_party_auth_enabled() { return '1' === get_option( self::WOOPAY_FIRST_PARTY_AUTH_FLAG_NAME, '1' ) && self::is_woopay_express_checkout_enabled(); } /** * Checks whether WooPay Direct Checkout is enabled. * * @return bool True if Direct Checkout is enabled, false otherwise. */ public static function is_woopay_direct_checkout_enabled() { $account_cache = WC_Payments::get_database_cache()->get( WCPay\Database_Cache::ACCOUNT_KEY, true ); $is_direct_checkout_eligible = is_array( $account_cache ) && ( $account_cache['platform_direct_checkout_eligible'] ?? false ); $is_direct_checkout_flag_enabled = '1' === get_option( self::WOOPAY_DIRECT_CHECKOUT_FLAG_NAME, '1' ); return $is_direct_checkout_eligible && $is_direct_checkout_flag_enabled && self::is_woopayments_gateway_enabled() && self::is_woopay_enabled(); } /** * Checks whether WooPay global theme support is eligible. * * @return bool */ public static function is_woopay_global_theme_support_eligible() { $account_cache = WC_Payments::get_database_cache()->get( WCPay\Database_Cache::ACCOUNT_KEY, true ); return is_array( $account_cache ) && ( $account_cache['platform_global_theme_support_enabled'] ?? false ); } /** * Checks whether the Fraud and Risk Tools feature flag is enabled. * * @return bool */ public static function is_frt_review_feature_active(): bool { return '1' === get_option( 'wcpay_frt_review_feature_active', '0' ); } /** * Checks whether the Fraud and Risk Tools welcome tour was dismissed. * * @return bool */ public static function is_fraud_protection_welcome_tour_dismissed(): bool { return '1' === get_option( 'wcpay_fraud_protection_welcome_tour_dismissed', '0' ); } /** * Checks whether the Stripe Billing feature is enabled. * * @return bool */ public static function is_stripe_billing_enabled(): bool { return '1' === get_option( self::STRIPE_BILLING_FLAG_NAME, '0' ); } /** * Checks if the site is eligible for Stripe Billing. * * Only US merchants are eligible for Stripe Billing. * * @return bool */ public static function is_stripe_billing_eligible() { if ( ! function_exists( 'wc_get_base_location' ) ) { return false; } $store_base_location = wc_get_base_location(); return ! empty( $store_base_location['country'] ) && Country_Code::UNITED_STATES === $store_base_location['country']; } /** * Checks whether the merchant is using WCPay Subscription or opted into Stripe Billing. * * Note: Stripe Billing is only used when the merchant is using WooCommerce Subscriptions and turned it on or is still using WCPay Subscriptions. * * @return bool */ public static function should_use_stripe_billing() { // We intentionally check for the existence of the 'WC_Subscriptions' class here as we want to confirm the Plugin is active. if ( self::is_wcpay_subscriptions_enabled() && ! class_exists( 'WC_Subscriptions' ) ) { return true; } if ( self::is_stripe_billing_enabled() && class_exists( 'WC_Subscriptions' ) ) { return true; } return false; } /** * Checks whether Dispute issuer evidence feature should be enabled. Disabled by default. * * @return bool */ public static function is_dispute_issuer_evidence_enabled(): bool { return '1' === get_option( self::DISPUTE_ISSUER_EVIDENCE, '0' ); } /** * Checks whether the next deposit notice on the deposits list screen has been dismissed. * * @return bool */ public static function is_next_deposit_notice_dismissed(): bool { return '1' === get_option( 'wcpay_next_deposit_notice_dismissed', '0' ); } /** * Returns feature flags as an array suitable for display on the front-end. * * @return bool[] */ public static function to_array() { return array_filter( [ 'multiCurrency' => self::is_customer_multi_currency_enabled(), 'woopay' => self::is_woopay_eligible(), 'documents' => self::is_documents_section_enabled(), 'woopayExpressCheckout' => self::is_woopay_express_checkout_enabled(), 'isDisputeIssuerEvidenceEnabled' => self::is_dispute_issuer_evidence_enabled(), 'isFRTReviewFeatureActive' => self::is_frt_review_feature_active(), ] ); } /** * Checks if WooCommerce Payments gateway is enabled. * * @return bool True if WooCommerce Payments gateway is enabled, false otherwise. */ private static function is_woopayments_gateway_enabled() { $woopayments_settings = get_option( 'woocommerce_woocommerce_payments_settings' ); $woopayments_enabled_setting = $woopayments_settings['enabled'] ?? 'no'; return 'yes' === $woopayments_enabled_setting; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка