Viewing File: /home/rtsgrob/ww3/wp-content/plugins/mailpoet/lib/WPCOM/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 '';
}
}
Back to Directory
File Manager