FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
mailpoet
/
lib
/
WPCOM
Edit File: DotcomHelperFunctions.php
<?php declare(strict_types = 1); namespace MailPoet\WPCOM; if (!defined('ABSPATH')) exit; use MailPoet\WP\Functions; /** * Plan detection documentation: * https://github.com/Automattic/wc-calypso-bridge#active-plan-detection */ class DotcomHelperFunctions { private Functions $wp; public function __construct( Functions $wp ) { $this->wp = $wp; } /** * Returns true if in the context of WordPress.com Atomic platform. * * @return bool */ public function isAtomicPlatform(): bool { // ATOMIC_CLIENT_ID === '2' corresponds to WordPress.com client on the Atomic platform $is_atomic_platform = defined('IS_ATOMIC') && IS_ATOMIC && defined('ATOMIC_CLIENT_ID') && (ATOMIC_CLIENT_ID === '2'); return (bool)$this->wp->applyFilters('mailpoet_is_atomic_platform', $is_atomic_platform); } /** * Returns true if the site is on WordPress.com. */ public function isDotcom(): bool { return $this->isAtomicPlatform(); } public function isWooExpressPerformance(): bool { return function_exists('wc_calypso_bridge_is_woo_express_performance_plan') && wc_calypso_bridge_is_woo_express_performance_plan(); } public function isWooExpressEssential(): bool { return function_exists('wc_calypso_bridge_is_woo_express_essential_plan') && wc_calypso_bridge_is_woo_express_essential_plan(); } public function isBusiness(): bool { return function_exists('wc_calypso_bridge_is_business_plan') && wc_calypso_bridge_is_business_plan(); } public function isEcommerceTrial(): bool { return function_exists('wc_calypso_bridge_is_ecommerce_trial_plan') && wc_calypso_bridge_is_ecommerce_trial_plan(); } public function isEcommerceWPCom(): bool { return function_exists('wc_calypso_bridge_is_wpcom_ecommerce_plan') && wc_calypso_bridge_is_wpcom_ecommerce_plan(); } public function isEcommerce(): bool { return function_exists('wc_calypso_bridge_is_ecommerce_plan') && wc_calypso_bridge_is_ecommerce_plan(); } public function isGarden(): bool { return defined('IS_COMMERCE_GARDEN') && IS_COMMERCE_GARDEN; } protected function getWpcloudConfig(string $key): ?string { if (!function_exists('garden_get_wpcloud_config')) { return null; } $value = \garden_get_wpcloud_config($key); return is_string($value) && $value !== '' ? $value : null; } protected function getSiteMetaValue(string $meta_key): ?string { if (function_exists('get_site_meta')) { $blog_id = \get_current_blog_id(); $value = \get_site_meta($blog_id, $meta_key, true); if (is_string($value) && $value !== '') { return $value; } } if ($this->isGarden()) { return $this->getWpcloudConfig($meta_key); } return null; } public function gardenName(): ?string { if (!$this->isGarden()) { return null; } return $this->getSiteMetaValue('garden_name'); } public function gardenPartner(): ?string { if (!$this->isGarden()) { return null; } return $this->getSiteMetaValue('garden_partner'); } /** * Returns the plan name for the current site if hosted on WordPress.com. * Empty otherwise. */ public function getDotcomPlan(): string { if ($this->isWooExpressPerformance()) { return 'performance'; } elseif ($this->isWooExpressEssential()) { return 'essential'; } elseif ($this->isBusiness()) { return 'business'; } elseif ($this->isEcommerceTrial()) { return 'ecommerce_trial'; } elseif ($this->isEcommerceWPCom()) { return 'ecommerce_wpcom'; } elseif ($this->isEcommerce()) { return 'ecommerce'; } // Garden plan detection via WP Cloud persistent data if ($this->isGarden()) { $planInfo = $this->getWpcloudConfig('plan_info'); if ($planInfo !== null) { $decoded = json_decode($planInfo, true); if (is_array($decoded) && isset($decoded['plan_type']) && is_string($decoded['plan_type']) && $decoded['plan_type'] !== '') { return $decoded['plan_type']; } } } return ''; } }
Save
Back