Server : Apache System : Linux ls31.server.ly 3.10.0-962.3.2.lve1.5.68.el7.x86_64 #1 SMP Wed Apr 6 11:12:23 UTC 2022 x86_64 User : medchoco ( 2906) PHP Version : 8.3.16 Disable Function : mail Directory : /home/medchoco/www/wp-content/plugins/mailchimp-for-wp/includes/admin/ |
Upload File : |
<?php /** * Class MC4WP_Usage_Tracking * * @access private * @since 2.3 * @ignore */ class MC4WP_Usage_Tracking { /** * @var string */ protected $tracking_url = 'https://www.mc4wp.com/api/usage-tracking'; /** * @var MC4WP_Usage_Tracking The One True Instance */ protected static $instance; /** * @return MC4WP_Usage_Tracking */ public static function instance() { if ( ! self::$instance instanceof MC4WP_Usage_Tracking ) { self::$instance = new MC4WP_Usage_Tracking(); } return self::$instance; } /** * Add hooks */ public function add_hooks() { add_action( 'mc4wp_usage_tracking', array( $this, 'track' ) ); add_filter( 'cron_schedules', array( $this, 'cron_schedules' ) ); } /** * Registers a new schedule with WP Cron * * @param array $schedules * * @return array */ public function cron_schedules( $schedules ) { $schedules['monthly'] = array( 'interval' => 30 * DAY_IN_SECONDS, 'display' => esc_html__( 'Once a month', 'mailchimp-for-wp' ), ); return $schedules; } /** * Enable usage tracking * * @return bool */ public function enable() { // only schedule if not yet scheduled if ( ! wp_next_scheduled( 'mc4wp_usage_tracking' ) ) { return wp_schedule_event( time(), 'monthly', 'mc4wp_usage_tracking' ); } return true; } /** * Disable usage tracking */ public function disable() { wp_clear_scheduled_hook( 'mc4wp_usage_tracking' ); } /** * Toggle tracking (clears & sets the scheduled tracking event) * * @param bool $enable */ public function toggle( $enable ) { $enable ? $this->enable() : $this->disable(); } /** * Sends the tracking request. Non-blocking. * * @return bool */ public function track() { $data = $this->get_tracking_data(); // send non-blocking request and be done with it wp_remote_post( $this->tracking_url, array( 'body' => json_encode( $data ), 'headers' => array( 'Content-Type' => 'application/json', 'Accept' => 'application/json', ), 'blocking' => false, ) ); return true; } /** * @return array */ protected function get_tracking_data() { $data = array( // use md5 hash of home_url, we don't need/want to know the actual site url 'site' => md5( home_url() ), 'number_of_mailchimp_lists' => $this->get_mailchimp_lists_count(), 'mc4wp_version' => $this->get_mc4wp_version(), 'mc4wp_premium_version' => $this->get_mc4wp_premium_version(), 'plugins' => (array) get_option( 'active_plugins', array() ), 'php_version' => $this->get_php_version(), 'curl_version' => $this->get_curl_version(), 'wp_version' => $GLOBALS['wp_version'], 'wp_language' => get_locale(), 'server_software' => $this->get_server_software(), 'using_https' => $this->is_site_using_https(), ); return $data; } public function get_php_version() { if ( ! defined( 'PHP_MAJOR_VERSION' ) ) { // defined since PHP 5.2.7 return null; } return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION; } /** * @return string */ public function get_mc4wp_premium_version() { return defined( 'MC4WP_PREMIUM_VERSION' ) ? MC4WP_PREMIUM_VERSION : null; } /** * Returns the Mailchimp for WordPress version * * @return string */ protected function get_mc4wp_version() { return MC4WP_VERSION; } /** * @return int */ protected function get_mailchimp_lists_count() { $mailchimp = new MC4WP_MailChimp(); return count( $mailchimp->get_lists() ); } /** * @return string */ protected function get_curl_version() { if ( ! function_exists( 'curl_version' ) ) { return null; } $curl_version_info = curl_version(); return $curl_version_info['version']; } /** * @return bool */ protected function is_site_using_https() { $site_url = site_url(); return stripos( $site_url, 'https' ) === 0; } /** * @return string */ protected function get_server_software() { if ( ! isset( $_SERVER['SERVER_SOFTWARE'] ) ) { return null; } return $_SERVER['SERVER_SOFTWARE']; } }