| Server IP : 38.190.208.107 / Your IP : 216.73.217.46 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.3/wp-content/plugins/wp-statistics/src/Service/Integrations/ |
Upload File : |
<?php
namespace WP_Statistics\Service\Integrations;
use WP_STATISTICS\Menus;
use WP_STATISTICS\Option;
use WP_Statistics\Service\Integrations\Plugins\WpConsentApi;
use WP_Statistics\Service\Integrations\Plugins\RealCookieBanner;
use WP_Statistics\Service\Integrations\Plugins\BorlabsCookie;
use WP_Statistics\Service\Integrations\Plugins\AbstractIntegration;
class IntegrationHelper
{
/**
* List of integrations to register.
* @var AbstractIntegration[]
*/
public static $integrations = [
WpConsentApi::class,
RealCookieBanner::class,
BorlabsCookie::class,
];
/**
* Get an integration class by name.
*
* @param string $integration The name of the integration (e.g. "wp_consent_api").
* @return AbstractIntegration|false
*/
public static function getIntegration($integration)
{
foreach (self::$integrations as $class) {
$class = new $class();
if ($class->getKey() === $integration) {
return $class;
}
}
return false;
}
/**
* Return an array of all integrations.
*
* @return AbstractIntegration[]
*/
public static function getAllIntegrations()
{
$integrations = [];
foreach (self::$integrations as $class) {
$integration = new $class();
$integrations[] = $integration;
}
return $integrations;
}
/**
* Returns the currently active integration class.
*
* @return AbstractIntegration|false False if no integration is selected.
*/
public static function getActiveIntegration()
{
$integration = Option::get('consent_integration');
$integration = self::getIntegration($integration);
return !empty($integration) && $integration->isActive()
? $integration
: false;
}
/**
* Checks if certain integration is active
*
* @param string $integration
* @return bool
*/
public static function isIntegrationActive($integration)
{
$activeIntegration = self::getActiveIntegration();
return !empty($activeIntegration) && ($activeIntegration->getKey() === $integration);
}
/**
* Returns the currently selected integration status.
*
* @return array
*/
public static function getIntegrationStatus()
{
$status = [
'name' => null,
'status' => []
];
$integration = self::getActiveIntegration();
if (!empty($integration)) {
$status['name'] = $integration->getKey();
$status['status'] = $integration->getStatus();
}
return $status;
}
/**
* Checks if consent is given for the currently active integration.
*
* If there's no active integration, it assumes consent is given.
*
* @return bool
*/
public static function isConsentGiven()
{
$integration = self::getActiveIntegration();
return empty($integration) || $integration->hasConsent();
}
/**
* Checks if the currently active integration requires anonymous tracking.
*
* If there's no active integration, it assumes it doesn't require anonymous tracking.
*
* @return bool
*/
public static function shouldTrackAnonymously()
{
$integration = self::getActiveIntegration();
return !empty($integration) && $integration->trackAnonymously();
}
/**
* Checks all integrations for active consent plugins and returns a list of notices.
*
* @return array
*/
public static function getDetectionNotice()
{
$notices = [];
if (Option::get('consent_integration')) return $notices;
foreach (self::getAllIntegrations() as $integration) {
// If conditions to show notice is not met, continue
if (!$integration->showNotice()) continue;
$notices[] = [
'key' => $integration->getKey(),
'title' => esc_html__('WP Statistics - Consent Plugin Detected', 'wp-statistics'),
'content' => sprintf(
'%s <br> %s · %s',
sprintf(
__('We’ve detected <b>%s</b> on your site. To ensure WP Statistics respects visitor consent preferences, you can enable integration with this plugin.', 'wp-statistics'),
$integration->getName()
),
'<a href="' . esc_url(Menus::admin_url('settings', ['tab' => 'privacy-settings']) . '#consent_integration') . '">' . esc_html__('Activate integration ›', 'wp-statistics') . '</a>',
'<a target="_blank" href="https://wp-statistics.com/resources/integrating-wp-statistics-with-consent-management-plugins/?utm_source=wp-statistics&utm_medium=link&utm_campaign=privacy">' . esc_html__('Learn More ›', 'wp-statistics') . '</a>'
)
];
}
return $notices;
}
}