403Webshell
Server IP : 54.36.91.62  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux webm021.cluster127.gra.hosting.ovh.net 6.18.39-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Tue Jul 21 12:03:15 CEST 2026 x86_64
User : uxhactp ( 169076)
PHP Version : 7.4.33
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/uxhactp/www/wp-content/plugins/onecom-vcache/onecom-addons/inc/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/uxhactp/www/wp-content/plugins/onecom-vcache/onecom-addons/inc/lib/OCPushStats.php
<?php
/**
 * one.com Stats Push Functionality
 * Version: 0.1.3
 */

if (!class_exists('OCPushStats')) {

    final class OCPushStats
    {
        const STATS_URL = MIDDLEWARE_URL . '/collect/hit';
        const GENERIC_LOG_URL = MIDDLEWARE_URL . '/log';
        const ONECOM_DOMAIN = 'ONECOM_DOMAIN_NAME';
        const SERVER_AGENT = 'HTTP_USER_AGENT';
        const DOMAIN = 'domain';
        const SUB_DOMAIN = 'subdomain';
        const WP_USER = 'wp_user';
        const WP_ROLE = 'wp_role';
        const USER_AGENT = 'user_agent';
        const HIT_TYPE = 'hit_type';
        const ITEM_AVAIL = 'item_avail';
        const HOSTING_PACKAGE = 'hosting_package';
        const PACKAGE_FEATURES = 'package_features';
        const CONTENT_TYPE = "Content-Type: application/json";
        const ITEM_SOURCE = 'item_source';
        const ITEM_CATEGORY = 'item_category';
        const EVENT = 'event';
        const EVENT_ACTION = 'event_action';
        const ITEM_NAME = 'item_name';
        const HIT_DURATION = 'hit_duration';
        const REFERRER = 'referrer';
        const WP_VERSION = 'wp_version';
        const PLUGIN_VERSION = 'generic_plugin_version';
        const ADDDITIONAL_INFO = 'additional_info';
        const WP_LANG = 'wp_locale';
        const DEFAULT_IP = '0.0.0.0';
        const MOBILE_CHECKOUT = 'mobile_checkout';
        const CART_POSITION = 'cart_position';
        const COOKIE_POLICY_LINK_ENABLED = 'cookie_policy_link_enabled';
        const BANNER_STYLE = 'banner_style';
        const PREMIUM = 'premium';
        const PLUGIN = 'plugin';


        public function __construct()
        {
            if (function_exists('add_action')) {
                add_action('admin_head', array($this, 'javascript_handler'));
                add_action('wp_ajax_handle_ajax_request', array($this, 'handle_ajax_request'));
            }

            if (!class_exists('Onecom_Usage_Stats')) {
                require dirname(__FILE__).'/class-onecom-usage-stats.php';
                new Onecom_Usage_Stats();
            }
        }

        /**
         * Function to get the client ip address
         * */
        public static function onecom_get_client_ip_env()
        {
            if (getenv('HTTP_CLIENT_IP')) {
                $ipaddress = getenv('HTTP_CLIENT_IP');
            } else if (getenv('REMOTE_ADDR')) {
                $ipaddress = getenv('REMOTE_ADDR');
            } else {
                $ipaddress = self::DEFAULT_IP;
            }
            return $ipaddress;
        }

        /**
         * Function to get the domain
         * */
        public static function get_domain()
        {
            if (isset($_SERVER[self::ONECOM_DOMAIN]) && !empty($_SERVER[self::ONECOM_DOMAIN])) {
                return $_SERVER[self::ONECOM_DOMAIN];
            } else {
                return 'localhost';
            }
        }

        public static function get_subdomain()
        {
            if (self::get_domain() === 'localhost') {
                return null;
            }
            $subdomain = substr($_SERVER['SERVER_NAME'], 0, -(strlen($_SERVER['ONECOM_DOMAIN_NAME'])));
            if ($subdomain && $subdomain !== '') {
                return rtrim($subdomain, '.');
            } else {
                return 'www';
            }
        }

        /**
         * Function to get the user name and role
         * */
        public static function get_users()
        {
            if (function_exists('is_user_logged_in') && is_user_logged_in()) {
                $current_user = wp_get_current_user();
                $oc_user = array();
                // condition improved as per case WPIN-2551
                $oc_user['name'] = $current_user->display_name ?? '';
                $oc_user['role'] = $current_user->roles[0] ?? '';

            } else {
                $oc_user['name'] = '';
                $oc_user['role'] = '';
            }
            return $oc_user;
        }

        /**
         * Function to send curl request to stats url
         * @param $payload
         * @return void|array|mixed
         */
        public static function curl_request($payload)
        {
            // Get cURL resource
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => self::STATS_URL,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_VERBOSE => false,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "POST",
                CURLOPT_POSTFIELDS => $payload,
                CURLOPT_HTTPHEADER => array(
                    self::CONTENT_TYPE
                ),
            ));

            // silent call
            @curl_exec($curl);
            $err = curl_error($curl);

            // Close request to clear up some resources
            curl_close($curl);
            if ($err) {
                return [
                    'data' => null,
                    'error' => __("Some error occurred, please reload the page and try again.", "validator"),
                    'success' => false,
                ];
            }
            return true;
        }

        /**
         * Generic log function
         */
        public static function generic_log($action, $message = '', $error = null){
            // exit if no action passed
            if (!isset($action) && strlen($action)) {
                return false;
            }

            // check if WP constants are available
            if( !(defined('ABSPATH') && defined('WPINC'))){
                return false;
            }

            // wp http functions file
            $wp_http = ABSPATH . WPINC . '/http.php';

            // check if wp http functions file exists
            if(!file_exists($wp_http)){
                return false;
            }

            // include wp http functions file
            require_once $wp_http;

            // if message is not an array
            if(!is_array($message)){

                @json_decode($message);

                // if message is neither an array nor a JSON
                if(json_last_error() != JSON_ERROR_NONE){
                    $message = strip_tags($message);
                }
            }
            else{
                $message = json_encode($message);
            }

            $payload = json_encode(
                array(
                    'action_type' => strip_tags($action),
                    'message' => $message,
                    'error' => $error
                )
            );

            // post request array
            $postArr = array(
                'method' => 'POST',
                'timeout' => 10,
                'compress' => false,
                'decompress' => true,
                'sslverify' => true,
                'stream' => false,
                'body' => $payload,
                'headers' => array(
                    'X-ONECOM-CLIENT-IP' => self::onecom_get_client_ip_env(),
                    'X-ONECOM-CLIENT-DOMAIN' => self::get_domain(),
                ),
            );

            // user agent
            global $wp_version;
            if(!empty($wp_version) && function_exists('home_url')){
                $postArr['user-agent'] = 'WordPress/' . $wp_version . '; ' . home_url();
            }
            wp_safe_remote_post(self::GENERIC_LOG_URL, $postArr);
            return true;
        }

        /**
         * Wrapper function of wp core's is_plugin_active
         * with additional check if the plugin is installed
         * @param $plugin_path string
         * @return bool
         */
        public static function oc_is_plugin_active($plugin_path): bool
        {
            if(!file_exists(WP_PLUGIN_DIR.DIRECTORY_SEPARATOR.$plugin_path)){
                return false;
            }
            return is_plugin_active($plugin_path);
        }

        public static function oc_get_versions()
        {
            $ver = array();
            if (function_exists('get_plugin_data') && self::oc_is_plugin_active('onecom-themes-plugins/onecom-themes-plugins.php')) {
                $ver[self::PLUGIN_VERSION] = get_plugin_data(WP_PLUGIN_DIR . '/onecom-themes-plugins/onecom-themes-plugins.php')['Version'];
            } else {
                $ver[self::PLUGIN_VERSION] = '';
            }
            $ver[self::WP_LANG] = (function_exists('get_locale')) ? get_locale() : '';
            $ver[self::WP_VERSION] = (function_exists('get_bloginfo')) ? get_bloginfo('version') : '';
            return $ver;
        }


        public static function stats_base_parametres()
        {
            // fetch transient
            $get_features = get_site_transient( 'oc_validate_domain' );

            // fetch new if transient empty
            if (empty($get_features) || empty($get_features['data']) || empty($get_features['hosting_package'])) {
                $get_features = oc_validate_domain();
            }

            $get_version = self::oc_get_versions();
            $package_features = isset($get_features['data']) ? json_encode($get_features['data']) : null;
            $hosting_package = isset($get_features['hosting_package']) ?$get_features['hosting_package']:null ;
            $user = self::get_users();
            $param = array();
            $param[self::DOMAIN] = self::get_domain();
            $param[self::SUB_DOMAIN] = self::get_subdomain();
            $param[self::WP_USER] = $user['name'];
            $param[self::WP_ROLE] = $user['role'];
            $param['ip'] = self::onecom_get_client_ip_env();
            $param['php_version'] = PHP_VERSION;
            $param[self::WP_LANG] = $get_version[self::WP_LANG];
            $param[self::WP_VERSION] = $get_version[self::WP_VERSION];
            $param[self::PLUGIN_VERSION] = $get_version[self::PLUGIN_VERSION];
            $param[self::USER_AGENT] = $_SERVER[self::SERVER_AGENT];
            $param[self::PACKAGE_FEATURES] = $package_features;
            $param[self::HOSTING_PACKAGE] = $hosting_package;
            return $param;
        }

        /**
         * Function to push stats for events of control panel
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param null $referrer
         * @param array $additional_info
         * @return mixed
         */
        public static function push_stats_event_control_panel(
            $event_action,
            $item_category = null,
            $item_name = null,
            $referrer = null,
            $additional_info = array()
        )
        {
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::REFERRER => $referrer,

            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }


        /**
         * Function to push stats for events of themes and plugins
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param null $referrer
         * @param array $additional_info
         * @return boolean
         */

        public static function push_stats_event_themes_and_plugins(
            $event_action,
            $item_category = null,
            $item_name = null,
            $referrer = null,
            $additional_info = array()
        )
        {
            $premium = 0;
            if ($item_category == 'theme') {
                if ($event_action !== 'preview' && $event_action !== 'install' && $event_action !== 'click_upgrade' && $event_action !== 'close_upgrade') {
                    $theme = wp_get_theme($item_name);
                    $premium = (int)onecom_is_premium_theme($theme->display('Name', False));
                } elseif (isset($additional_info[self::PREMIUM])) {
                    $premium = $additional_info[self::PREMIUM];
                } else {
                    $premium = 0;
                }
                $key = ($premium != 0) ? 'ptheme' : 'stheme';
            } elseif ($item_category == self::PLUGIN && $item_name === 'onecom-vcache') {
                $premium = 1;
                $key = 'pcache';

            } elseif ($item_category == self::PLUGIN) {
                $key = 'ins';
            } else {
                $key = null;
            }
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features($key, $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_AVAIL => "$item_avail",
                self::REFERRER => $referrer,
                self::PREMIUM => "$premium",
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info) && !isset($additional_info[self::PREMIUM])) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = (json_encode(array_merge($base_params, $dynamic_params)));
            self::curl_request($payload);
            return true;
        }

        /**
         * Function to push stats for events of staging
         * @param $event_action
         * @param null $item_category
         * @param null $hit_duration
         * @param null $size
         * @param array $additional_info
         * @return mixed
         */

        public static function push_stats_event_staging(
            $event_action,
            $item_category = null,
            $hit_duration = null,
            $size = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('stg', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_AVAIL => "$item_avail",
                self::HIT_DURATION => $hit_duration,
                'size' => $size,
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        /**
         * Function to push stats for events of staging or migration
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param string $item_avail
         * @param null $hit_duration
         * @param array $additional_info for logging any additional information related to event.
         * @return mixed
         */

        public static function push_stats_event_migration(
            $event_action,
            $item_category = null,
            $item_name = null,
            $item_avail = '1',
            $hit_duration = null,
            $additional_info = array()
        )
        {
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_AVAIL => "$item_avail",
                self::HIT_DURATION => $hit_duration,

            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });

            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        public static function handle_ajax_request()
        {
            $event_action       = isset($_POST['args']['event_action']) ? $_POST['args']['event_action'] : '';
            $referrer           = isset($_POST['args'][self::REFERRER]) ? $_POST['args'][self::REFERRER] : '';
            $item_avail         = isset($_POST['args'][self::ITEM_AVAIL]) ? $_POST['args'][self::ITEM_AVAIL] : '';
            $additional_info    = isset($_POST['args'][self::ADDDITIONAL_INFO]) ? $_POST['args'][self::ADDDITIONAL_INFO] : '';
            $item_category      = isset($_POST['args'][self::ITEM_CATEGORY]) ? $_POST['args'][self::ITEM_CATEGORY] : '';
            $item_name          = isset($_POST['args'][self::ITEM_NAME]) ? $_POST['args'][self::ITEM_NAME] : '';
            $item_source        = isset($_POST['args'][self::ITEM_SOURCE]) ? $_POST['args'][self::ITEM_SOURCE] : '';
            $response = '';
            switch ($item_category) {
                case 'blog':
                case 'blog_installation':
                    $response = self::push_stats_event_control_panel($event_action, $item_category, $item_name, $referrer, $additional_info);
                    break;
                case 'theme':
                case self::PLUGIN
                :
                    $response = self::push_stats_event_themes_and_plugins($event_action, $item_category, $item_name, $referrer, $additional_info);
                    break;
                case 'staging':
                    $hit_duration = $_POST['args'][self::HIT_DURATION];
                    $size = $_POST['args']['size'];
                    $response = self::push_stats_event_staging($event_action,
                        $item_category,
                        $hit_duration,
                        $size,
                        $additional_info);
                    break;
                case 'migration':
                    $hit_duration = $_POST['args'][self::HIT_DURATION];
                    $response = self::push_stats_event_migration($event_action,
                        $item_category,
                        $item_name,
                        $item_avail,
                        $hit_duration,
                        $additional_info);
                    break;

                case 'setting':
                    switch ($item_source) {
                        case 'performance_cache':
                            $response = self::push_stats_performance_cache($event_action,
                                $item_category,
                                $item_source,
                                $additional_info);
                            break;
                        case 'cookie_banner':
                            $banner_style = $_POST['args']['banner_style'];
                            $cookie_policy_link_enabled = $_POST['args']['cookie_policy_link_enabled'];
                            $response = self::push_cookie_banner_stats_request($event_action,
                                $item_category,
                                $item_name,
                                $item_source,
                                $banner_style,
                                $cookie_policy_link_enabled,
                                $additional_info);
                            break;
                        case 'onephoto':
                            $response = self::push_stats_onephoto_request(
                                $event_action,
                                $item_source,
                                null,
                                null,
                                array('item_name'=> $item_name)
                            );
                            break;

                        case 'online_shop':
                            $cart_position = isset($_POST['args']['cart_position']) ? $_POST['args']['cart_position'] : '';
                            $mobile_checkout = isset($_POST['args']['mobile_checkout']) ? $_POST['args']['mobile_checkout'] : '';

                            $response = self::push_online_shop_stats_request($event_action,
                                $item_category,
                                $item_name,
                                $item_source,
                                $cart_position,
                                $mobile_checkout,
                                $additional_info);
                            break;
                        default:
                            $response = null;
                    }
                    break;
                default:
                    $response = null;
            }

            if ($response && function_exists('wp_send_json')) {
                wp_send_json($response);
            } elseif ($response && !function_exists('wp_send_json')) {
                echo json_encode($response);
            } else {
                return false;
            }
        }


        public static function javascript_handler()
        {
            ?>
            <script>
                function oc_push_stats_by_js(args) {
                    if (!args) {
                        return false;
                    }
                    if (typeof (args.item_category) !== 'undefined' && typeof (args.event_action) !== 'undefined') {
                        var data = {
                            'action': 'handle_ajax_request',
                            'args': args
                        };
                    } else {
                        return false;
                    }
                    jQuery.post(ajaxurl, data, function (response) {console.log(response);});
                }
            </script>

        <?php }


        /**
         * Function to push stats for event action pageview
         * @param $page_name
         * @param null $item_category
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_pageview_stats_request(
            $page_name,
            $item_category = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('stg', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => 'pageview',
                'page_name' => $page_name,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_AVAIL => "$item_avail",
            ];
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        /**
         * Function to push stats for events of one photo
         * @param $event_action
         * @param null $item_source
         * @param null $onephoto_email
         * @param null $image_count
         * @param null $video_count
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_stats_onephoto_request(
            $event_action,
            $item_source = null,
            $image_count = null,
            $video_count = null,
            $additional_info = array()

        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('ins', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_SOURCE => $item_source,
                self::ITEM_AVAIL => "$item_avail",
                'image_count' => $image_count,
                'video_count' => $video_count,
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        /**
         * Function to push stats for events of performance cache
         * @param $event_action
         * @param $item_category
         * @param null $item_name
         * @param null $item_source
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_stats_performance_cache(
            $event_action,
            $item_category = null,
            $item_name = null,
            $item_source = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('pcache', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_SOURCE => $item_source,
                self::ITEM_AVAIL => "$item_avail",
            ];

            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        /**
         * Function to push stats for events of cookie banner
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param null $item_source
         * @param null $banner_style
         * @param null $cookie_policy_link_enabled
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_cookie_banner_stats_request(
            $event_action,
            $item_category = null,
            $item_name = null,
            $item_source = null,
            $banner_style = null,
            $cookie_policy_link_enabled = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('ins', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_SOURCE => $item_source,
                self::ITEM_AVAIL => "$item_avail",
                self::BANNER_STYLE => $banner_style,
                self::COOKIE_POLICY_LINK_ENABLED => $cookie_policy_link_enabled,
            ];

            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }

        /**
         * Stringify array integers (also in nested arrays)
         * @param array $array
         * @return array
         */
        public static function castToString($array=[])
        {
            // seat belt
            if(empty($array)){
                return $array;
            }

            $array = json_decode(json_encode($array), 1);

            return array_map(function($v){
                if(is_array($v)){
                    return self::castToString($v);
                }
                return (string) $v;

            }, $array);
        }

        /**
         * Function to push stats for events of Vulnerability monitor
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_vul_monitor_stats(
            $event_action,
            $item_category = null,
            $item_name = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('ins', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_AVAIL => "$item_avail",
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $additional_info = self::castToString($additional_info);
                $key = array_key_first($additional_info);
                $dynamic_params = array_merge($dynamic_params, [$key => json_encode($additional_info[$key])]);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }


        /**
         * Function to push stats for events of Health monitor
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param null $check
         * @param array $scan_result
         * @param array $additional_info
         * @return array|mixed
         */

        public static function push_health_monitor_stats_request(
            $event_action,
            $item_category = null,
            $item_name = null,
            $check = null,
            $scan_result = array(),
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('ins', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_AVAIL => "$item_avail",
                'check' => $check,
                'scan_result' => json_encode($scan_result),
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }


        /**
         * Function to push stats for events of online shop
         * @param $event_action
         * @param null $item_category
         * @param null $item_name
         * @param null $item_source
         * @param null $cart_position
         * @param null $mobile_checkout
         * @param array $additional_info
         * @return array|mixed
         */
        public static function push_online_shop_stats_request(
            $event_action,
            $item_category = null,
            $item_name = null,
            $item_source = null,
            $cart_position = null,
            $mobile_checkout = null,
            $additional_info = array()
        )
        {
            $result = oc_set_premi_flag();
            $item_avail = (int)oc_pm_features('ins', $result['data']);
            $base_params = self::stats_base_parametres();
            $dynamic_params = [
                self::HIT_TYPE => self::EVENT,
                self::EVENT_ACTION => $event_action,
                self::ITEM_CATEGORY => $item_category,
                self::ITEM_NAME => $item_name,
                self::ITEM_SOURCE => $item_source,
                self::ITEM_AVAIL => "$item_avail",
                self::CART_POSITION => $cart_position,
                self::MOBILE_CHECKOUT => $mobile_checkout,
            ];
            $dynamic_params = array_filter($dynamic_params, function ($value) {
                return !is_null($value) && $value !== '';
            });
            if (!empty($additional_info)) {
                $dynamic_params = array_merge($dynamic_params, $additional_info);
            }
            $payload = json_encode(array_merge($base_params, $dynamic_params));
            return self::curl_request($payload);
        }
    }
}
$data = new OCPushStats();

Youez - 2016 - github.com/yon3zu
LinuXploit