File "class-wc-settings-tracking.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/includes/tracks/events/class-wc-settings-tracking.php
File size: 1.78 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

defined('ABSPATH') || exit;
class WC_Settings_Tracking
{
    protected $allowed_options = array();
    protected $updated_options = array();
    public function init()
    {
        add_action('woocommerce_settings_page_init', array($this, 'track_settings_page_view'));
        add_action('woocommerce_update_option', array($this, 'add_option_to_list'));
        add_action('woocommerce_update_options', array($this, 'send_settings_change_event'));
    }
    public function add_option_to_list($option)
    {
        $this->allowed_options[] = $option['id'];
        if (false === has_action('update_option', array($this, 'track_setting_change'))) {
            add_action('update_option', array($this, 'track_setting_change'), 10, 3);
        }
    }
    public function track_setting_change($option_name, $old_value, $new_value)
    {
        if (!in_array($option_name, $this->allowed_options, true)) {
            return;
        }
        if (is_scalar($old_value) && is_scalar($new_value) && (string) $old_value === (string) $new_value) {
            return;
        }
        $this->updated_options[] = $option_name;
    }
    public function send_settings_change_event()
    {
        global $current_tab;
        if (empty($this->updated_options)) {
            return;
        }
        $properties = array('settings' => implode(',', $this->updated_options));
        if (isset($current_tab)) {
            $properties['tab'] = $current_tab;
        }
        WC_Tracks::record_event('settings_change', $properties);
    }
    public function track_settings_page_view()
    {
        global $current_tab, $current_section;
        $properties = array('tab' => $current_tab, 'section' => empty($current_section) ? null : $current_section);
        WC_Tracks::record_event('settings_view', $properties);
    }
}