first commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"name": "wpdesk\/wp-wpdesk-tracker",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Krzysiek",
|
||||
"email": "krzysiek@wpdesk.pl"
|
||||
}
|
||||
],
|
||||
"prefer-stable": true,
|
||||
"minimum-stability": "stable",
|
||||
"require": {
|
||||
"php": ">=5.5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit\/phpunit": "<7",
|
||||
"wp-coding-standards\/wpcs": "^0.14.1",
|
||||
"squizlabs\/php_codesniffer": "^3.0.2",
|
||||
"mockery\/mockery": "*",
|
||||
"10up\/wp_mock": "*",
|
||||
"wimg\/php-compatibility": "^8"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"src\/"
|
||||
]
|
||||
},
|
||||
"autoload-dev": {
|
||||
"classmap": [
|
||||
"src",
|
||||
"tests\/"
|
||||
]
|
||||
},
|
||||
"extra": {
|
||||
"text-domain": "wpdesk-tracker",
|
||||
"translations-folder": "lang",
|
||||
"po-files": {
|
||||
"pl_PL": "wpdesk-tracker-pl_PL.po"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo composer is alive",
|
||||
"phpcs": "phpcs",
|
||||
"phpunit-unit": "phpunit --configuration phpunit-unit.xml --coverage-text --colors=never",
|
||||
"phpunit-unit-fast": "phpunit --configuration phpunit-unit.xml --no-coverage",
|
||||
"phpunit-integration": "phpunit --configuration phpunit-integration.xml --coverage-text --colors=never",
|
||||
"phpunit-integration-fast": "phpunit --configuration phpunit-integration.xml --no-coverage",
|
||||
"docs": "apigen generate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
/* Connect */
|
||||
#wpdesk_tracker_connect {
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .wpdesk-logo {
|
||||
background-image: url(../images/logo.png);
|
||||
background-repeat: no-repeat;
|
||||
background-size: 215px 62px;
|
||||
display: block;
|
||||
height: 62px;
|
||||
margin: 0 auto;
|
||||
width: 215px;
|
||||
}
|
||||
|
||||
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
|
||||
#wpdesk_tracker_connect .wpdesk-logo {
|
||||
background-image: url(../images/logo@2x.png);
|
||||
background-size: 215px 62px;
|
||||
}
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .message p {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .plugin-card-bottom {
|
||||
border-bottom: 1px solid #ddd;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .button-allow {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions .trigger {
|
||||
display: block;
|
||||
font-size: .9em;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions .permissions-details {
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions.open .permissions-details {
|
||||
height: auto;
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul li i.dashicons {
|
||||
float: left;
|
||||
font-size: 40px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul li div {
|
||||
margin-left: 55px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul li div span {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .permissions ul li div p {
|
||||
margin: 2px 0 0 0;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .terms {
|
||||
font-size: .9em;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#wpdesk_tracker_connect .terms a {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
/* Deactivate */
|
||||
.wpdesk_tracker_deactivate .reason-input {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wpdesk_tracker_deactivate .reason-input input[type=text] {
|
||||
margin-left: 25px;
|
||||
width: 350px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
#wpdesk_tracker_connect{margin-top:30px}#wpdesk_tracker_connect .wpdesk-logo{background-image:url(../images/logo.png);background-repeat:no-repeat;background-size:215px 62px;display:block;height:62px;margin:0 auto;width:215px}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){#wpdesk_tracker_connect .wpdesk-logo{background-image:url(../images/logo@2x.png);background-size:215px 62px}}#wpdesk_tracker_connect .message p{font-size:14px}#wpdesk_tracker_connect .plugin-card-bottom{border-bottom:1px solid #ddd;margin-bottom:10px}#wpdesk_tracker_connect .button-allow{float:right}#wpdesk_tracker_connect .permissions .trigger{display:block;font-size:.9em;text-align:center;margin-bottom:10px;text-decoration:none}#wpdesk_tracker_connect .permissions .permissions-details{height:0;overflow:hidden;margin:0}#wpdesk_tracker_connect .permissions.open .permissions-details{height:auto;padding:10px 20px}#wpdesk_tracker_connect .permissions ul{margin:0}#wpdesk_tracker_connect .permissions ul li{margin-bottom:12px}#wpdesk_tracker_connect .permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#wpdesk_tracker_connect .permissions ul li div{margin-left:55px}#wpdesk_tracker_connect .permissions ul li div span{font-weight:bold}#wpdesk_tracker_connect .permissions ul li div p{margin:2px 0 0 0}#wpdesk_tracker_connect .terms{font-size:.9em;padding:5px}#wpdesk_tracker_connect .terms a{color:#999}.wpdesk_tracker_deactivate .reason-input{display:none}.wpdesk_tracker_deactivate .reason-input input[type=text]{margin-left:25px;width:350px}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Factory_Prefixed')) {
|
||||
/**
|
||||
* Can create and build tracker instance.
|
||||
*
|
||||
* Class WPDesk_Tracker_Factory
|
||||
*/
|
||||
class WPDesk_Tracker_Factory_Prefixed
|
||||
{
|
||||
/**
|
||||
* Builds tracker instance.
|
||||
*
|
||||
* @param string $basename Plugin basename.
|
||||
*
|
||||
* @return WPDesk_Tracker built tracker.
|
||||
*/
|
||||
private function build_tracker($basename)
|
||||
{
|
||||
$sender = new \FcfVendor\WPDesk_Tracker_Sender_Wordpress_To_WPDesk();
|
||||
$sender = new \FcfVendor\WPDesk_Tracker_Sender_Logged($sender);
|
||||
$tracker = new \FcfVendor\WPDesk_Tracker($basename, $sender);
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Gateways());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Identification());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Identification_Gdpr());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Jetpack());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_License_Emails());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Orders());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Orders_Country());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Orders_Month());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Plugins());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Products());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Products_Variations());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Server());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Settings());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Shipping_Classes());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Shipping_Methods());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Templates());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Theme());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_User_Agent());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Users());
|
||||
$tracker->add_data_provider(new \FcfVendor\WPDesk_Tracker_Data_Provider_Wordpress());
|
||||
$tracker->init_hooks();
|
||||
return $tracker;
|
||||
}
|
||||
/**
|
||||
* Creates tracker instance.
|
||||
*
|
||||
* @param string $basename Plugin basename.
|
||||
*
|
||||
* @return WPDesk_Tracker created tracker.
|
||||
*/
|
||||
public function create_tracker($basename)
|
||||
{
|
||||
$tracker = $this->build_tracker($basename);
|
||||
\do_action('wpdesk_tracker_initialized', $this);
|
||||
return $tracker;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
interface WPDesk_Tracker_Interface
|
||||
{
|
||||
/**
|
||||
* Setter for object that sends data.
|
||||
*
|
||||
* @param WPDesk_Tracker_Sender $sender Object that can send payloads.
|
||||
*/
|
||||
public function set_sender(\WPDesk_Tracker_Sender $sender);
|
||||
/**
|
||||
* Attach data provider class to tracker
|
||||
*
|
||||
* @param WPDesk_Tracker_Data_Provider $provider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function add_data_provider(\WPDesk_Tracker_Data_Provider $provider);
|
||||
}
|
||||
@@ -0,0 +1,442 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker')) {
|
||||
class WPDesk_Tracker implements \WPDesk_Tracker_Interface
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $script_version = '11';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $plugin_basename = '';
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $message_version = '4';
|
||||
/**
|
||||
* @var WPDesk_Tracker_Data_Provider[]
|
||||
*/
|
||||
private $providers = [];
|
||||
/**
|
||||
* @var WPDesk_Tracker_Sender
|
||||
*/
|
||||
private $sender;
|
||||
/**
|
||||
* @deprecated do not use. This is for backward compatibility only.
|
||||
*/
|
||||
public static function init($foo = null)
|
||||
{
|
||||
}
|
||||
public function __construct($plugin_basename, \WPDesk_Tracker_Sender $sender)
|
||||
{
|
||||
$this->plugin_basename = $plugin_basename;
|
||||
$this->set_sender($sender);
|
||||
}
|
||||
/**
|
||||
* Setter for object that sends data.
|
||||
*
|
||||
* @param WPDesk_Tracker_Sender $sender Object that can send payloads.
|
||||
*/
|
||||
public function set_sender(\WPDesk_Tracker_Sender $sender)
|
||||
{
|
||||
$this->sender = $sender;
|
||||
}
|
||||
/**
|
||||
* Hook into cron event.
|
||||
*/
|
||||
public function init_hooks()
|
||||
{
|
||||
\add_action('admin_init', array($this, 'init_schedule'));
|
||||
\add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'), 100);
|
||||
\add_action('wpdesk_tracker_send_event', array($this, 'send_tracking_data'));
|
||||
\add_action('admin_menu', array($this, 'admin_menu'));
|
||||
\add_action('admin_init', array($this, 'admin_init'));
|
||||
\add_action('admin_notices', array($this, 'admin_notices'));
|
||||
\add_action('wp_ajax_wpdesk_tracker_notice_handler', array($this, 'wp_ajax_wpdesk_tracker_notice_handler'));
|
||||
\add_action('wp_ajax_wpdesk_tracker_deactivation_handler', array($this, 'wp_ajax_wpdesk_tracker_deactivation_handler'));
|
||||
\add_action('update_option_wpdesk_helper_options', array($this, 'update_option_wpdesk_helper_options'), 10, 3);
|
||||
\add_filter('option_wpdesk_helper_options', array($this, 'option_wpdesk_helper_options'), 10, 2);
|
||||
\add_filter('default_option_wpdesk_helper_options', array($this, 'default_option_wpdesk_helper_options'), 10, 3);
|
||||
\add_filter('wpdesk_tracker_data', array($this, 'wpdesk_tracker_message_version'));
|
||||
\add_action('admin_bar_menu', array($this, 'admin_bar_menu'), 999);
|
||||
\add_action('wp_head', array($this, 'wp_head'), 999);
|
||||
\add_action('admin_head', array($this, 'wp_head'), 999);
|
||||
global $pagenow;
|
||||
if ('plugins.php' === $pagenow) {
|
||||
\add_action('admin_footer', array($this, 'admin_footer'));
|
||||
}
|
||||
}
|
||||
public function add_data_provider(\WPDesk_Tracker_Data_Provider $provider)
|
||||
{
|
||||
$this->providers[] = $provider;
|
||||
}
|
||||
public function wp_head()
|
||||
{
|
||||
if (\apply_filters('wpdesk_tracker_use_testdata', \false) && \apply_filters('wpdesk_tracker_show_testdata', \false)) {
|
||||
include 'views/tracker-styles.php';
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param WP_Admin_Bar $wp_admin_bar
|
||||
*/
|
||||
public function admin_bar_menu($wp_admin_bar)
|
||||
{
|
||||
if (\apply_filters('wpdesk_tracker_use_testdata', \false) && \apply_filters('wpdesk_tracker_show_testdata', \false)) {
|
||||
$args = array('id' => 'my_page', 'title' => 'WP Desk Test!', 'meta' => array('class' => 'wpdesk-tracker-test'));
|
||||
$wp_admin_bar->add_node($args);
|
||||
}
|
||||
}
|
||||
public function init_schedule()
|
||||
{
|
||||
$options = \get_option('wpdesk_helper_options');
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
if (empty($options['wpdesk_tracker_agree'])) {
|
||||
$options['wpdesk_tracker_agree'] = '0';
|
||||
}
|
||||
$wpdesk_tracker_agree = $options['wpdesk_tracker_agree'];
|
||||
$wp_next_scheduled = \wp_next_scheduled('wpdesk_tracker_send_event');
|
||||
if ($wpdesk_tracker_agree == '1' && !$wp_next_scheduled) {
|
||||
\wp_schedule_event(\time(), 'daily', 'wpdesk_tracker_send_event');
|
||||
}
|
||||
if ($wpdesk_tracker_agree == '0' && $wp_next_scheduled) {
|
||||
\wp_clear_scheduled_hook('wpdesk_tracker_send_event');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
private function should_enable_wpdesk_tracker()
|
||||
{
|
||||
return \apply_filters('wpdesk_tracker_enabled', \true);
|
||||
}
|
||||
public function admin_footer()
|
||||
{
|
||||
if (!\is_network_admin() && $this->should_enable_wpdesk_tracker() && !\apply_filters('wpdesk_tracker_do_not_ask', \false)) {
|
||||
$plugins = array('wpdesk-helper/wpdesk-helper.php' => 'wpdesk-helper/wpdesk-helper.php');
|
||||
$plugins = \apply_filters('wpdesk_track_plugin_deactivation', $plugins);
|
||||
include 'views/tracker-plugins-footer.php';
|
||||
}
|
||||
}
|
||||
public function admin_enqueue_scripts()
|
||||
{
|
||||
$screen = \get_current_screen();
|
||||
if ($screen->id == 'admin_page_wpdesk_tracker' || $screen->id == 'admin_page_wpdesk_tracker_deactivate') {
|
||||
\wp_register_style('wpdesk-helper-tracker', \plugin_dir_url(__FILE__) . 'assets/css/tracker.css', array(), $this->script_version, 'all');
|
||||
\wp_enqueue_style('wpdesk-helper-tracker');
|
||||
}
|
||||
}
|
||||
public function admin_menu()
|
||||
{
|
||||
\add_submenu_page(null, 'WP Desk Tracker', 'WP Desk Tracker', 'manage_options', 'wpdesk_tracker', array($this, 'wpdesk_tracker_page'));
|
||||
\add_submenu_page(null, 'Deactivate plugin', 'Deactivate plugin', 'manage_options', 'wpdesk_tracker_deactivate', array($this, 'wpdesk_tracker_deactivate'));
|
||||
}
|
||||
public function wp_ajax_wpdesk_tracker_deactivation_handler()
|
||||
{
|
||||
$this->send_deactivation_data();
|
||||
}
|
||||
public function wp_ajax_wpdesk_tracker_notice_handler()
|
||||
{
|
||||
$option = \get_option('wpdesk_helper_options');
|
||||
if (!$option) {
|
||||
\add_option('wpdesk_helper_options', array());
|
||||
}
|
||||
$type = '';
|
||||
if (isset($_REQUEST['type'])) {
|
||||
$type = \sanitize_key($_REQUEST['type']);
|
||||
}
|
||||
if ($type === 'allow') {
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
\delete_option('wpdesk_tracker_notice');
|
||||
$options['wpdesk_tracker_agree'] = '1';
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
}
|
||||
if ($type === 'dismiss') {
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
\update_option('wpdesk_tracker_notice', 'dismiss_all');
|
||||
$options['wpdesk_tracker_agree'] = '0';
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
}
|
||||
}
|
||||
public function update_option_wpdesk_helper_options($old_value, $value, $option)
|
||||
{
|
||||
if (empty($old_value)) {
|
||||
$old_value = array('wpdesk_tracker_agree' => '-1');
|
||||
}
|
||||
if (!isset($old_value['wpdesk_tracker_agree'])) {
|
||||
$old_value['wpdesk_tracker_agree'] = '-1';
|
||||
}
|
||||
if (empty($value)) {
|
||||
$value = array('wpdesk_tracker_agree' => '-1');
|
||||
}
|
||||
if (!isset($value['wpdesk_tracker_agree'])) {
|
||||
$value['wpdesk_tracker_agree'] = '-1';
|
||||
}
|
||||
if ($old_value['wpdesk_tracker_agree'] != '1') {
|
||||
if ($value['wpdesk_tracker_agree'] == '1') {
|
||||
$this->send_tracking_data(\true, 'agree');
|
||||
}
|
||||
}
|
||||
if ($old_value['wpdesk_tracker_agree'] != '0') {
|
||||
if ($value['wpdesk_tracker_agree'] == '0') {
|
||||
$this->send_tracking_data(\true, 'no');
|
||||
\update_option('wpdesk_tracker_notice', 'dismiss_all');
|
||||
}
|
||||
}
|
||||
}
|
||||
public function option_wpdesk_helper_options($value, $option)
|
||||
{
|
||||
if (\apply_filters('wpdesk_tracker_do_not_ask', \false)) {
|
||||
if (!\is_array($value)) {
|
||||
$value = array();
|
||||
}
|
||||
$value['wpdesk_tracker_agree'] = 1;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
public function default_option_wpdesk_helper_options($default, $option = null, $passed_default = null)
|
||||
{
|
||||
if (\apply_filters('wpdesk_tracker_do_not_ask', \false)) {
|
||||
$default = array();
|
||||
$default['wpdesk_tracker_agree'] = 1;
|
||||
}
|
||||
return $default;
|
||||
}
|
||||
public function admin_notices()
|
||||
{
|
||||
if (!$this->should_enable_wpdesk_tracker()) {
|
||||
return;
|
||||
}
|
||||
$screen = \get_current_screen();
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
if (\get_option('wpdesk_tracker_notice', '0') != 'dismiss_all') {
|
||||
if (empty($options['wpdesk_tracker_agree']) || $options['wpdesk_tracker_agree'] == '0') {
|
||||
if (\in_array($screen->id, \apply_filters('wpdesk_tracker_notice_screens', array()))) {
|
||||
$user = \wp_get_current_user();
|
||||
$username = $user->first_name ? $user->first_name : $user->user_login;
|
||||
$terms_url = \get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
|
||||
$shop_url = \get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/' : 'https://www.wpdesk.net/';
|
||||
include 'views/tracker-notice.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($screen->id === 'plugins') {
|
||||
if (isset($_GET['wpdesk_tracker_opt_out'])) {
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
\delete_option('wpdesk_tracker_notice');
|
||||
$options['wpdesk_tracker_agree'] = '0';
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
include 'views/tracker-opt-out-notice.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
public function wpdesk_tracker_page()
|
||||
{
|
||||
$user = \wp_get_current_user();
|
||||
$username = $user->first_name ? $user->first_name : $user->user_login;
|
||||
$allow_url = \admin_url('admin.php?page=wpdesk_tracker');
|
||||
$allow_url = \add_query_arg('plugin', \sanitize_text_field($_GET['plugin']), $allow_url);
|
||||
$skip_url = $allow_url;
|
||||
$allow_url = \add_query_arg('allow', '1', $allow_url);
|
||||
$skip_url = \add_query_arg('allow', '0', $skip_url);
|
||||
$terms_url = \get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
|
||||
include 'views/tracker-connect.php';
|
||||
}
|
||||
public function wpdesk_tracker_deactivate()
|
||||
{
|
||||
$user = \wp_get_current_user();
|
||||
$username = $user->first_name;
|
||||
$plugin = \sanitize_text_field($_GET['plugin']);
|
||||
$active_plugins = \get_plugins();
|
||||
$plugin_name = $active_plugins[$plugin]['Name'];
|
||||
include 'views/tracker-deactivate.php';
|
||||
}
|
||||
public function admin_init()
|
||||
{
|
||||
if (isset($_GET['page']) && $_GET['page'] === 'wpdesk_tracker') {
|
||||
if (isset($_GET['plugin']) && isset($_GET['allow'])) {
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
if ($_GET['allow'] == '0') {
|
||||
\remove_action('update_option_wpdesk_helper_options', array($this, 'update_option_wpdesk_helper_options'), 10, 3);
|
||||
unset($options['wpdesk_tracker_agree']);
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
\add_action('update_option_wpdesk_helper_options', array($this, 'update_option_wpdesk_helper_options'), 10, 3);
|
||||
$options['wpdesk_tracker_agree'] = '0';
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
\update_option('wpdesk_tracker_notice', '1');
|
||||
} else {
|
||||
\remove_action('update_option_wpdesk_helper_options', array($this, 'update_option_wpdesk_helper_options'), 10, 3);
|
||||
unset($options['wpdesk_tracker_agree']);
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
\add_action('update_option_wpdesk_helper_options', array($this, 'update_option_wpdesk_helper_options'), 10, 3);
|
||||
\delete_option('wpdesk_tracker_notice');
|
||||
\update_option('wpdesk_tracker_agree', '1');
|
||||
$options['wpdesk_tracker_agree'] = '1';
|
||||
\update_option('wpdesk_helper_options', $options);
|
||||
}
|
||||
\wp_redirect(\admin_url('plugins.php'));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
public function wpdesk_tracker_message_version($data)
|
||||
{
|
||||
$data['message_version'] = $this->message_version;
|
||||
return $data;
|
||||
}
|
||||
public function send_deactivation_data()
|
||||
{
|
||||
$params = array();
|
||||
$params['click_action'] = 'plugin_deactivation';
|
||||
$params['plugin'] = \sanitize_text_field($_REQUEST['plugin']);
|
||||
$params['plugin_name'] = \sanitize_text_field($_REQUEST['plugin_name']);
|
||||
$params['reason'] = \sanitize_text_field($_REQUEST['reason']);
|
||||
if (!empty($_REQUEST['additional_info'])) {
|
||||
$params['additional_info'] = \sanitize_text_field($_REQUEST['additional_info']);
|
||||
}
|
||||
$this->send_payload_to_wpdesk(\apply_filters('wpdesk_tracker_deactivation_data', $params));
|
||||
}
|
||||
/**
|
||||
* Decide whether to send tracking data or not.
|
||||
*
|
||||
* @param boolean $override
|
||||
*/
|
||||
public function send_tracking_data($override = \false, $click_action = null)
|
||||
{
|
||||
$options = \get_option('wpdesk_helper_options', array());
|
||||
if (empty($options)) {
|
||||
$options = array();
|
||||
}
|
||||
if (empty($options['wpdesk_tracker_agree'])) {
|
||||
$options['wpdesk_tracker_agree'] = '0';
|
||||
}
|
||||
if (empty($click_action) && $options['wpdesk_tracker_agree'] == '0') {
|
||||
return;
|
||||
}
|
||||
if (!$this->should_enable_wpdesk_tracker()) {
|
||||
return;
|
||||
}
|
||||
// Dont trigger this on AJAX Requests
|
||||
if (\defined('DOING_AJAX') && \DOING_AJAX) {
|
||||
//return;
|
||||
}
|
||||
if (!\apply_filters('wpdesk_tracker_send_override', $override)) {
|
||||
// Send a maximum of once per week by default.
|
||||
$last_send = $this->get_last_send_time();
|
||||
if ($last_send && $last_send > \apply_filters('wpdesk_tracker_last_send_interval', \strtotime('-1 week'))) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// Make sure there is at least a 1 hour delay between override sends, we dont want duplicate calls due to double clicking links.
|
||||
$last_send = $this->get_last_send_time();
|
||||
if (empty($click_action) && $last_send && $last_send > \strtotime('-1 hours')) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Update time first before sending to ensure it is set
|
||||
\update_option('wpdesk_tracker_last_send', \time());
|
||||
if (empty($click_action) || $click_action == 'agree') {
|
||||
$params = $this->get_tracking_data();
|
||||
if (isset($params['active_plugins'])) {
|
||||
foreach ($params['active_plugins'] as $plugin => $plugin_data) {
|
||||
$option_name = 'plugin_activation_' . $plugin;
|
||||
$activation_date = \get_option($option_name, '');
|
||||
if ($activation_date != '') {
|
||||
$params['active_plugins'][$plugin]['activation_date'] = $activation_date;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($click_action)) {
|
||||
$params['click_action'] = 'agree';
|
||||
}
|
||||
} else {
|
||||
$params = array('click_action' => 'no');
|
||||
$params['url'] = \home_url();
|
||||
}
|
||||
$params['localhost'] = 'no';
|
||||
if (!empty($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR'] == '127.0.0.1') {
|
||||
$params['localhost'] = 'yes';
|
||||
}
|
||||
$this->send_payload_to_wpdesk($params);
|
||||
}
|
||||
/**
|
||||
* Sends payload to WPDesk servers.
|
||||
*
|
||||
* @param array $payload Payload to sent.
|
||||
*
|
||||
* @return bool If sending was successfull.
|
||||
*/
|
||||
private function send_payload_to_wpdesk(array $payload)
|
||||
{
|
||||
try {
|
||||
$this->sender->send_payload($payload);
|
||||
return \true;
|
||||
} catch (\FcfVendor\WPDesk_Tracker_Sender_Exception_WpError $e) {
|
||||
return \false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Get the last time tracking data was sent.
|
||||
* @return int|bool
|
||||
*/
|
||||
private function get_last_send_time()
|
||||
{
|
||||
return \apply_filters('wpdesk_tracker_last_send_time', \get_option('wpdesk_tracker_last_send', \false));
|
||||
}
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
private function get_data_from_providers()
|
||||
{
|
||||
$data = array();
|
||||
if (!empty($this->providers)) {
|
||||
foreach ($this->providers as $provider) {
|
||||
$data = \array_merge($data, $provider->get_data());
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
/**
|
||||
* Get all the tracking data.
|
||||
* @return array
|
||||
*/
|
||||
private function get_tracking_data()
|
||||
{
|
||||
$data = $this->get_data_from_providers();
|
||||
return \apply_filters('wpdesk_tracker_data', $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Gateways')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Gateways
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Gateways implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get a list of all active payment gateways.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$active_gateways = array();
|
||||
$gateways = \WC()->payment_gateways->payment_gateways();
|
||||
foreach ($gateways as $id => $gateway) {
|
||||
if (isset($gateway->enabled) && 'yes' === $gateway->enabled) {
|
||||
$active_gateways[$id] = array('title' => $gateway->title, 'supports' => $gateway->supports);
|
||||
}
|
||||
}
|
||||
return ['gateways' => $active_gateways];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Identification_Gdpr')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Identification_Gdpr
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Identification_Gdpr implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
const DATA_KEY_DOMAIN_HASH = 'domain_hash';
|
||||
const DATA_KEY_UNIQUE_HASH = 'unique_hash';
|
||||
const DATA_KEY_EMAIL_HASH = 'email_hash';
|
||||
const WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME = 'wpdesk_tracker_unique_hash';
|
||||
/**
|
||||
* Hash unique for wordpress instance.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function get_unique_hash()
|
||||
{
|
||||
$hash = \get_option(self::WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME, \false);
|
||||
if (!$hash) {
|
||||
$hash = \md5(\uniqid() . \NONCE_SALT);
|
||||
\update_option(self::WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME, $hash);
|
||||
}
|
||||
return $hash;
|
||||
}
|
||||
/**
|
||||
* Get info that allows anonymous data rollup.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data = [];
|
||||
$data[self::DATA_KEY_DOMAIN_HASH] = \md5(\home_url() . \NONCE_SALT);
|
||||
$data[self::DATA_KEY_UNIQUE_HASH] = $this->get_unique_hash();
|
||||
$data[self::DATA_KEY_EMAIL_HASH] = \md5(\apply_filters('wpdesk_tracker_admin_email', \get_option('admin_email')) . \NONCE_SALT);
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Identification')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Identification
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Identification implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get info that allows session identification.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data = [];
|
||||
$data['url'] = \home_url();
|
||||
$data['email'] = \apply_filters('wpdesk_tracker_admin_email', \get_option('admin_email'));
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Jetpack')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Jetpack
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Jetpack implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about jetpack.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data = [];
|
||||
$data['jetpack_version'] = \defined('FcfVendor\\JETPACK__VERSION') ? \FcfVendor\JETPACK__VERSION : 'none';
|
||||
$data['jetpack_connected'] = \class_exists('FcfVendor\\Jetpack') && \is_callable('Jetpack::is_active') && \FcfVendor\Jetpack::is_active() ? 'yes' : 'no';
|
||||
$data['jetpack_is_staging'] = \class_exists('FcfVendor\\Jetpack') && \is_callable('Jetpack::is_staging_site') && \FcfVendor\Jetpack::is_staging_site() ? 'yes' : 'no';
|
||||
$data['connect_installed'] = \class_exists('FcfVendor\\WC_Connect_Loader') ? 'yes' : 'no';
|
||||
$data['connect_active'] = \class_exists('FcfVendor\\WC_Connect_Loader') && \wp_next_scheduled('wc_connect_fetch_service_schemas') ? 'yes' : 'no';
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_License_Emails')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_License_Emails
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_License_Emails implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about license emails from api manager.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
global $wpdesk_helper_plugins;
|
||||
$license_emails_email = array();
|
||||
$license_emails = array();
|
||||
if (!isset($wpdesk_helper_plugins)) {
|
||||
$wpdesk_helper_plugins = array();
|
||||
}
|
||||
foreach ($wpdesk_helper_plugins as $key => $plugin) {
|
||||
if (isset($plugin['api_manager'])) {
|
||||
$api_manager = $plugin['api_manager'];
|
||||
if (isset($api_manager->options[$api_manager->activation_email])) {
|
||||
$license_emails_email[$api_manager->options[$api_manager->activation_email]] = $api_manager->options[$api_manager->activation_email];
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($license_emails_email as $email) {
|
||||
$license_emails[] = $email;
|
||||
}
|
||||
$data['license_emails'] = $license_emails;
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Orders_Country')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Orders_Country
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Orders_Country implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about shipping coutry per order.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
global $wpdb;
|
||||
$query = $wpdb->get_results("\n \tSELECT m.meta_value AS shipping_country, p.post_status AS post_status , COUNT(p.ID) AS orders\n \tFROM {$wpdb->postmeta} m, {$wpdb->posts} p\n \tWHERE p.ID = m.post_id\n \tAND m.meta_key = '_shipping_country'\n \tGROUP BY shipping_country, post_status ORDER BY orders DESC");
|
||||
$data['shipping_country_per_order'] = array();
|
||||
if ($query) {
|
||||
foreach ($query as $row) {
|
||||
if (!isset($data['shipping_country_per_order'][$row->shipping_country])) {
|
||||
$data['shipping_country_per_order'][$row->shipping_country] = array();
|
||||
}
|
||||
$data['shipping_country_per_order'][$row->shipping_country][$row->post_status] = $row->orders;
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Orders_Month')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Orders_Month
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Orders_Month implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about orders per month.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
global $wpdb;
|
||||
$query = $wpdb->get_results("\n \tSELECT min(post_date) min, max(post_date) max, TIMESTAMPDIFF(MONTH, min(post_date), max(post_date) )+1 months\n \tFROM {$wpdb->posts} p\n \tWHERE p.post_type = 'shop_order'\n \tAND p.post_status = 'wc-completed'\n \t");
|
||||
$data['orders_per_month'] = array();
|
||||
if ($query) {
|
||||
foreach ($query as $row) {
|
||||
$data['orders_per_month']['first'] = $row->min;
|
||||
$data['orders_per_month']['last'] = $row->max;
|
||||
$data['orders_per_month']['months'] = $row->months;
|
||||
if ($row->months != 0) {
|
||||
if (isset($data['orders']) && isset($data['orders']['wc-completed'])) {
|
||||
$data['orders_per_month']['per_month'] = \floatval($data['orders']['wc-completed']) / \floatval($row->months);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Orders')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Orders
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Orders implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get order counts based on order status.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$order_count = array();
|
||||
$order_count_data = \wp_count_posts('shop_order');
|
||||
foreach (\wc_get_order_statuses() as $status_slug => $status_name) {
|
||||
$order_count[$status_slug] = $order_count_data->{$status_slug};
|
||||
}
|
||||
return ['orders' => $order_count];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('WPDesk_Tracker_Data_Provider')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Plugins
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Plugins implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get all plugins grouped into activated or not.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function get_all_plugins()
|
||||
{
|
||||
// Ensure get_plugins function is loaded
|
||||
if (!\function_exists('get_plugins')) {
|
||||
include \ABSPATH . '/wp-admin/includes/plugin.php';
|
||||
}
|
||||
$plugins = \get_plugins();
|
||||
$active_plugins_keys = \get_option('active_plugins', array());
|
||||
$active_plugins = array();
|
||||
foreach ($plugins as $k => $v) {
|
||||
// Take care of formatting the data how we want it.
|
||||
$formatted = array();
|
||||
$formatted['name'] = \strip_tags($v['Name']);
|
||||
if (isset($v['Version'])) {
|
||||
$formatted['version'] = \strip_tags($v['Version']);
|
||||
}
|
||||
if (isset($v['Author'])) {
|
||||
$formatted['author'] = \strip_tags($v['Author']);
|
||||
}
|
||||
if (isset($v['Network'])) {
|
||||
$formatted['network'] = \strip_tags($v['Network']);
|
||||
}
|
||||
if (isset($v['PluginURI'])) {
|
||||
$formatted['plugin_uri'] = \strip_tags($v['PluginURI']);
|
||||
}
|
||||
if (\in_array($k, $active_plugins_keys)) {
|
||||
// Remove active plugins from list so we can show active and inactive separately
|
||||
unset($plugins[$k]);
|
||||
$active_plugins[$k] = $formatted;
|
||||
} else {
|
||||
$plugins[$k] = $formatted;
|
||||
}
|
||||
}
|
||||
return array('active_plugins' => $active_plugins, 'inactive_plugins' => $plugins);
|
||||
}
|
||||
/**
|
||||
* Provides data
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data = [];
|
||||
$all_plugins = $this->get_all_plugins();
|
||||
$data['active_plugins'] = $all_plugins['active_plugins'];
|
||||
$data['inactive_plugins'] = $all_plugins['inactive_plugins'];
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Products_Variations')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Products_Variations
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Products_Variations implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about numer of variations.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data['number_of_variations'] = 0;
|
||||
$number_of_variations = \wp_count_posts('product_variation');
|
||||
$data['number_of_variations'] = $number_of_variations;
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Products')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Products
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Products implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get product totals based on product type.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$product_count = array();
|
||||
$product_count_data = \wp_count_posts('product');
|
||||
$product_count['total'] = $product_count_data->publish;
|
||||
$product_statuses = \get_terms('product_type', array('hide_empty' => 0));
|
||||
foreach ($product_statuses as $product_status) {
|
||||
$product_count[$product_status->name] = $product_status->count;
|
||||
}
|
||||
return ['products' => $product_count];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Server')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Server
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Server implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about bawic server data.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$server_data = array();
|
||||
if (isset($_SERVER['SERVER_SOFTWARE']) && !empty($_SERVER['SERVER_SOFTWARE'])) {
|
||||
$server_data['software'] = $_SERVER['SERVER_SOFTWARE'];
|
||||
}
|
||||
if (\function_exists('phpversion')) {
|
||||
$server_data['php_version'] = \phpversion();
|
||||
}
|
||||
if (\function_exists('ini_get')) {
|
||||
$server_data['php_post_max_size'] = \size_format(\wc_let_to_num(\ini_get('post_max_size')));
|
||||
$server_data['php_time_limt'] = \ini_get('max_execution_time');
|
||||
$server_data['php_max_input_vars'] = \ini_get('max_input_vars');
|
||||
$server_data['php_suhosin'] = \extension_loaded('suhosin') ? 'Yes' : 'No';
|
||||
}
|
||||
global $wpdb;
|
||||
$server_data['mysql_version'] = $wpdb->db_version();
|
||||
$server_data['php_max_upload_size'] = \size_format(\wp_max_upload_size());
|
||||
$server_data['php_default_timezone'] = \date_default_timezone_get();
|
||||
$server_data['php_soap'] = \class_exists('SoapClient') ? 'Yes' : 'No';
|
||||
$server_data['php_fsockopen'] = \function_exists('fsockopen') ? 'Yes' : 'No';
|
||||
$server_data['php_curl'] = \function_exists('curl_init') ? 'Yes' : 'No';
|
||||
return ['server' => $server_data];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Settings')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Settings
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Settings implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get all options starting with woocommerce_ prefix.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
return ['settings' => array('version' => \WC()->version, 'currency' => \get_woocommerce_currency(), 'base_location' => \WC()->countries->get_base_country(), 'selling_locations' => \WC()->countries->get_allowed_countries(), 'api_enabled' => \get_option('woocommerce_api_enabled'), 'weight_unit' => \get_option('woocommerce_weight_unit'), 'dimension_unit' => \get_option('woocommerce_dimension_unit'), 'download_method' => \get_option('woocommerce_file_download_method'), 'download_require_login' => \get_option('woocommerce_downloads_require_login'), 'calc_taxes' => \get_option('woocommerce_calc_taxes'), 'coupons_enabled' => \get_option('woocommerce_enable_coupons'), 'guest_checkout' => \get_option('woocommerce_enable_guest_checkout'), 'secure_checkout' => \get_option('woocommerce_force_ssl_checkout'), 'enable_signup_and_login_from_checkout' => \get_option('woocommerce_enable_signup_and_login_from_checkout'), 'enable_myaccount_registration' => \get_option('woocommerce_enable_myaccount_registration'), 'registration_generate_username' => \get_option('woocommerce_registration_generate_username'), 'registration_generate_password' => \get_option('woocommerce_registration_generate_password'))];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Shipping_Classes')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Shipping_Classes
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Shipping_Classes implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about number of shipping classes
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$data['number_of_shipping_classes'] = 0;
|
||||
$shipping_classes = \WC()->shipping()->get_shipping_classes();
|
||||
if (\is_array($shipping_classes)) {
|
||||
$data['number_of_shipping_classes'] = \count($shipping_classes);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Info about shipping methods in zones and by title.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
if (\class_exists('WC_Shipping_Zones')) {
|
||||
$other_zones = \WC_Shipping_Zones::get_zones();
|
||||
$zones = array();
|
||||
foreach ($other_zones as $zone) {
|
||||
$zones[] = \WC_Shipping_Zones::get_zone_by('zone_id', $zone['zone_id']);
|
||||
}
|
||||
$zones[] = \WC_Shipping_Zones::get_zone_by();
|
||||
$data['shipping_methods_by_title'] = array();
|
||||
$data['shipping_zones_by_name'] = array();
|
||||
foreach ($zones as $zone) {
|
||||
if (empty($data['shipping_zones_by_name'][$zone->get_zone_name()])) {
|
||||
$data['shipping_zones_by_name'][$zone->get_zone_name()] = 1;
|
||||
} else {
|
||||
$data['shipping_zones_by_name'][$zone->get_zone_name()]++;
|
||||
}
|
||||
foreach ($zone->get_shipping_methods() as $shipping_method) {
|
||||
if (empty($data['shipping_methods_by_title'][$shipping_method->method_title])) {
|
||||
$data['shipping_methods_by_title'][$shipping_method->method_title] = 1;
|
||||
} else {
|
||||
$data['shipping_methods_by_title'][$shipping_method->method_title]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Shipping_Methods')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Shipping_Methods
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Shipping_Methods implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get a list of all active shipping methods.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$active_methods = array();
|
||||
$shipping_methods = \WC()->shipping->get_shipping_methods();
|
||||
foreach ($shipping_methods as $id => $shipping_method) {
|
||||
if (isset($shipping_method->enabled) && 'yes' === $shipping_method->enabled) {
|
||||
$active_methods[$id] = array('title' => $shipping_method->title, 'tax_status' => $shipping_method->tax_status);
|
||||
}
|
||||
}
|
||||
return ['shipping_methods' => $active_methods];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Templates')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Templates
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Templates implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Look for any template override and return filenames.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$override_data = array();
|
||||
$template_paths = \apply_filters('woocommerce_template_overrides_scan_paths', array('WooCommerce' => \WC()->plugin_path() . '/templates/'));
|
||||
$scanned_files = array();
|
||||
require_once \WC()->plugin_path() . '/includes/admin/class-wc-admin-status.php';
|
||||
foreach ($template_paths as $plugin_name => $template_path) {
|
||||
$scanned_files[$plugin_name] = \WC_Admin_Status::scan_template_files($template_path);
|
||||
}
|
||||
foreach ($scanned_files as $plugin_name => $files) {
|
||||
foreach ($files as $file) {
|
||||
if (\file_exists(\get_stylesheet_directory() . '/' . $file)) {
|
||||
$theme_file = \get_stylesheet_directory() . '/' . $file;
|
||||
} elseif (\file_exists(\get_stylesheet_directory() . '/woocommerce/' . $file)) {
|
||||
$theme_file = \get_stylesheet_directory() . '/woocommerce/' . $file;
|
||||
} elseif (\file_exists(\get_template_directory() . '/' . $file)) {
|
||||
$theme_file = \get_template_directory() . '/' . $file;
|
||||
} elseif (\file_exists(\get_template_directory() . '/woocommerce/' . $file)) {
|
||||
$theme_file = \get_template_directory() . '/woocommerce/' . $file;
|
||||
} else {
|
||||
$theme_file = \false;
|
||||
}
|
||||
if (\false !== $theme_file) {
|
||||
$override_data[] = \basename($theme_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return ['template_overrides' => $override_data];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Theme')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Theme
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Theme implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get the current theme info, theme name and version.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$theme_data = \wp_get_theme();
|
||||
$theme_child_theme = \is_child_theme() ? 'Yes' : 'No';
|
||||
return ['theme' => array('name' => $theme_data->Name, 'version' => $theme_data->Version, 'child_theme' => $theme_child_theme)];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_User_Agent')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_User_Agent
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_User_Agent implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* When an admin user logs in, there user agent is tracked in user meta and collected here.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
return ['admin_user_agents' => \array_filter((array) \get_option('woocommerce_tracker_ua', array()))];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Users')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Users
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Users implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get user totals based on user role.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$user_count = array();
|
||||
$user_count_data = \count_users();
|
||||
$user_count['total'] = $user_count_data['total_users'];
|
||||
// Get user count based on user role
|
||||
foreach ($user_count_data['avail_roles'] as $role => $count) {
|
||||
$user_count[$role] = $count;
|
||||
}
|
||||
return ['users' => $user_count];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Data_Provider_Wordpress')) {
|
||||
/**
|
||||
* Class WPDesk_Tracker_Data_Provider_Wordpress
|
||||
*/
|
||||
class WPDesk_Tracker_Data_Provider_Wordpress implements \WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Get WordPress related data.
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data()
|
||||
{
|
||||
$wp_data = array();
|
||||
$memory = \wc_let_to_num(\WP_MEMORY_LIMIT);
|
||||
if (\function_exists('memory_get_usage')) {
|
||||
$system_memory = \wc_let_to_num(@\ini_get('memory_limit'));
|
||||
$memory = \max($memory, $system_memory);
|
||||
}
|
||||
$wp_data['memory_limit'] = \size_format($memory);
|
||||
$wp_data['debug_mode'] = \defined('WP_DEBUG') && \WP_DEBUG ? 'Yes' : 'No';
|
||||
$wp_data['locale'] = \get_locale();
|
||||
$wp_data['version'] = \get_bloginfo('version');
|
||||
$wp_data['multisite'] = \is_multisite() ? 'Yes' : 'No';
|
||||
return ['wp' => $wp_data];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
/**
|
||||
* WP Desk Tracker
|
||||
*
|
||||
* @class WPDESK_Tracker
|
||||
* @version 1.3.2
|
||||
* @package WPDESK/Helper
|
||||
* @category Class
|
||||
* @author WP Desk
|
||||
*/
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('WPDesk_Tracker_Data_Provider')) {
|
||||
interface WPDesk_Tracker_Data_Provider
|
||||
{
|
||||
/**
|
||||
* Provides data
|
||||
*
|
||||
* @return array Data provided to tracker.
|
||||
*/
|
||||
public function get_data();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
class WPDesk_Tracker_Persistence_Consent
|
||||
{
|
||||
/**
|
||||
* Option name with settings.
|
||||
* @var string
|
||||
*/
|
||||
private $option_name = 'wpdesk_helper_options';
|
||||
/**
|
||||
* Checks if consent of tracking is active.
|
||||
*
|
||||
* @return bool Consent status.
|
||||
*/
|
||||
public function is_active()
|
||||
{
|
||||
$options = \get_option($this->option_name, array());
|
||||
if (!\is_array($options)) {
|
||||
$options = array();
|
||||
}
|
||||
return isset($options['wpdesk_tracker_agree']) && $options['wpdesk_tracker_agree'] === '1';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Sender_Exception_WpError')) {
|
||||
class WPDesk_Tracker_Sender_Exception_WpError extends \RuntimeException
|
||||
{
|
||||
public function __construct($message = "", \WP_Error $wp_error)
|
||||
{
|
||||
$message = $message . ' WP_Error: ' . $wp_error->get_error_message();
|
||||
parent::__construct($message, $wp_error->get_error_code());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Sender_Logged')) {
|
||||
class WPDesk_Tracker_Sender_Logged implements \WPDesk_Tracker_Sender
|
||||
{
|
||||
const LOGGER_SOURCE = 'wpdesk-sender';
|
||||
/**
|
||||
* Decorated sender.
|
||||
*
|
||||
* @var WPDesk_Tracker_Sender
|
||||
*/
|
||||
private $sender;
|
||||
/**
|
||||
* WPDesk_Tracker_Sender_Logged constructor.
|
||||
*
|
||||
* @param WPDesk_Tracker_Sender $sender Sender to decorate.
|
||||
*/
|
||||
public function __construct(\WPDesk_Tracker_Sender $sender)
|
||||
{
|
||||
$this->sender = $sender;
|
||||
}
|
||||
/**
|
||||
* Sends payload logging payload and the response.
|
||||
*
|
||||
* @param array $payload Payload to send.
|
||||
*
|
||||
* @throws WPDesk_Tracker_Sender_Exception_WpError Error if send failed.
|
||||
*
|
||||
* @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
|
||||
*/
|
||||
public function send_payload(array $payload)
|
||||
{
|
||||
if (\class_exists('FcfVendor\\WPDesk_Logger_Factory')) {
|
||||
\FcfVendor\WPDesk_Logger_Factory::log_message("Sender payload: " . \json_encode($payload), self::LOGGER_SOURCE, \FcfVendor\WPDesk_Logger::DEBUG);
|
||||
try {
|
||||
$response = $this->sender->send_payload($payload);
|
||||
\FcfVendor\WPDesk_Logger_Factory::log_message('Sender response: ' . \json_encode($response), self::LOGGER_SOURCE, \FcfVendor\WPDesk_Logger::DEBUG);
|
||||
return $response;
|
||||
} catch (\FcfVendor\WPDesk_Tracker_Sender_Exception_WpError $exception) {
|
||||
\FcfVendor\WPDesk_Logger_Factory::log_exception($exception);
|
||||
throw $exception;
|
||||
}
|
||||
} else {
|
||||
return $this->sender->send_payload($payload);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('FcfVendor\\WPDesk_Tracker_Sender_Wordpress_To_WPDesk')) {
|
||||
class WPDesk_Tracker_Sender_Wordpress_To_WPDesk implements \WPDesk_Tracker_Sender
|
||||
{
|
||||
/**
|
||||
* URL to the WP Desk Tracker API endpoint.
|
||||
* @var string
|
||||
*/
|
||||
private $api_url = 'https://data.wpdesk.org/?track=1';
|
||||
private $test_api_url = 'https://testdata.wpdesk.org/?track=1';
|
||||
private function get_api_url()
|
||||
{
|
||||
$api_url = $this->api_url;
|
||||
if (\apply_filters('wpdesk_tracker_use_testdata', \false)) {
|
||||
$api_url = $this->test_api_url;
|
||||
}
|
||||
return $api_url;
|
||||
}
|
||||
/**
|
||||
* Sends payload to predefined receiver.
|
||||
*
|
||||
* @param array $payload Payload to send.
|
||||
*
|
||||
* @throws WPDesk_Tracker_Sender_Exception_WpError Error if send failed.
|
||||
*
|
||||
* @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
|
||||
*/
|
||||
public function send_payload(array $payload)
|
||||
{
|
||||
$response = \wp_remote_post($this->get_api_url(), array('method' => 'POST', 'timeout' => 5, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => \false, 'headers' => array('user-agent' => 'WPDeskTracker'), 'body' => \json_encode($payload), 'cookies' => array()));
|
||||
if ($response instanceof \WP_Error) {
|
||||
throw new \FcfVendor\WPDesk_Tracker_Sender_Exception_WpError('Payload send error', $response);
|
||||
} else {
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
if (!\class_exists('WPDesk_Tracker_Sender')) {
|
||||
interface WPDesk_Tracker_Sender
|
||||
{
|
||||
/**
|
||||
* Sends payload to predefined receiver.
|
||||
*
|
||||
* @param array $payload Payload to send.
|
||||
*
|
||||
* @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
|
||||
*/
|
||||
public function send_payload(array $payload);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div id="wpdesk_tracker_connect" class="plugin-card">
|
||||
<div class="message plugin-card-top">
|
||||
<span class="wpdesk-logo"></span>
|
||||
|
||||
<p>
|
||||
<?php
|
||||
\printf(\__('Hey %s,', 'flexible-checkout-fields'), $username);
|
||||
?><br/>
|
||||
<?php
|
||||
\_e('Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information anonymously. If you skip this, that\'s okay! All plugins will work just fine.', 'flexible-checkout-fields');
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="actions plugin-card-bottom">
|
||||
<a id="wpdesk_tracker_allow_button" href="<?php
|
||||
echo $allow_url;
|
||||
?>" class="button button-primary button-allow button-large"><?php
|
||||
\_e('Allow & Continue →', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
<a href="<?php
|
||||
echo $skip_url;
|
||||
?>" class="button button-secondary"><?php
|
||||
\_e('Skip', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<div class="permissions">
|
||||
<a class="trigger" href="#"><?php
|
||||
\_e('What permissions are being granted?', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
|
||||
<div class="permissions-details">
|
||||
<ul>
|
||||
<li id="permission-site" class="permission site">
|
||||
<i class="dashicons dashicons-admin-settings"></i>
|
||||
<div>
|
||||
<span><?php
|
||||
\_e('Your Site Overview', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
<p><?php
|
||||
\_e('WP version, PHP info', 'flexible-checkout-fields');
|
||||
?></p>
|
||||
</div>
|
||||
</li>
|
||||
<li id="permission-events" class="permission events">
|
||||
<i class="dashicons dashicons-admin-plugins"></i>
|
||||
<div>
|
||||
<span><?php
|
||||
\_e('Plugin Usage', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
<p><?php
|
||||
\_e('Current settings and usage information of WP Desk plugins', 'flexible-checkout-fields');
|
||||
?></p>
|
||||
</div>
|
||||
</li>
|
||||
<li id="permission-store" class="permission store">
|
||||
<i class="dashicons dashicons-store"></i>
|
||||
<div>
|
||||
<span><?php
|
||||
\_e('Your Store Overview', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
<p><?php
|
||||
\_e('Anonymized and non-sensitive store usage information', 'flexible-checkout-fields');
|
||||
?></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="terms">
|
||||
<a href="<?php
|
||||
echo $terms_url;
|
||||
?>" target="_blank"><?php
|
||||
\_e('Find out more »', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
jQuery('.trigger').click(function(e) {
|
||||
e.preventDefault();
|
||||
if (jQuery(this).parent().hasClass('open')) {
|
||||
jQuery(this).parent().removeClass('open')
|
||||
}
|
||||
else {
|
||||
jQuery(this).parent().addClass('open');
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<h2><?php
|
||||
echo \sprintf(\__('You are deactivating %s plugin.', 'flexible-checkout-fields'), $plugin_name);
|
||||
?></h2>
|
||||
|
||||
<div class="wpdesk_tracker_deactivate">
|
||||
<div class="body">
|
||||
<div class="panel" data-panel-id="confirm"><p></p></div>
|
||||
<div class="panel active" data-panel-id="reasons">
|
||||
<h4><strong><?php
|
||||
\_e(' If you have a moment, please let us know why you are deactivating plugin (anonymous feedback):', 'flexible-checkout-fields');
|
||||
?></strong></h4>
|
||||
<ul id="reasons-list">
|
||||
<li class="reason">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="plugin_stopped_working">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('The plugin suddenly stopped working', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
</li>
|
||||
<li class="reason">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="broke_my_site">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('The plugin broke my site', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
</li>
|
||||
<li class="reason has-input">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="found_better_plugin">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('I found a better plugin', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
<div id="found_better_plugin" class="reason-input">
|
||||
<input type="text" name="better_plugin_name" placeholder="<?php
|
||||
\_e('What\'s the plugin\'s name?', 'flexible-checkout-fields');
|
||||
?>">
|
||||
</div>
|
||||
</li>
|
||||
<li class="reason">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="plugin_for_short_period">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('I only needed the plugin for a short period', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
</li>
|
||||
<li class="reason">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="no_longer_need">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('I no longer need the plugin', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
</li>
|
||||
<li class="reason">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="temporary_deactivation">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('It\'s a temporary deactivation. I\'m just debugging an issue.', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
</li>
|
||||
<li class="reason has-input">
|
||||
<label>
|
||||
<span>
|
||||
<input type="radio" name="selected-reason" value="other">
|
||||
</span>
|
||||
<span><?php
|
||||
\_e('Other', 'flexible-checkout-fields');
|
||||
?></span>
|
||||
</label>
|
||||
<div id="other" class="reason-input">
|
||||
<input type="text" name="other" placeholder="<?php
|
||||
\_e('Kindly tell us the reason so we can improve', 'flexible-checkout-fields');
|
||||
?>">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<a href="#" class="button button-secondary button-close"><?php
|
||||
\_e('Cancel', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
<a href="#" class="button button-primary button-deactivate allow-deactivate"><?php
|
||||
\_e('Skip & Deactivate', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
jQuery('input[type=radio]').click(function(){
|
||||
var reason = jQuery('input[name=selected-reason]:checked').val();
|
||||
console.log(reason);
|
||||
jQuery('.reason-input').hide();
|
||||
if ( reason == 'found_better_plugin' ) {
|
||||
jQuery('#found_better_plugin').show();
|
||||
}
|
||||
if ( reason == 'other' ) {
|
||||
jQuery('#other').show();
|
||||
}
|
||||
jQuery('.wpdesk_tracker_deactivate .button-deactivate').html( '<?php
|
||||
\_e('Submit & Deactivate', 'flexible-checkout-fields');
|
||||
?>' );
|
||||
})
|
||||
jQuery('.button-deactivate').click(function(e){
|
||||
e.preventDefault();
|
||||
console.log('deactivate');
|
||||
var reason = jQuery('input[name=selected-reason]:checked').val();
|
||||
var plugin = '<?php
|
||||
echo $plugin;
|
||||
?>';
|
||||
var plugin_name = '<?php
|
||||
echo $plugin_name;
|
||||
?>';
|
||||
var additional_info = '';
|
||||
if ( reason == 'found_better_plugin' ) {
|
||||
additional_info = jQuery('#found_better_plugin input').val();
|
||||
}
|
||||
if ( reason == 'other' ) {
|
||||
additional_info = jQuery('#other input').val();
|
||||
}
|
||||
console.log(reason);
|
||||
if ( typeof reason != 'undefined' ) {
|
||||
console.log('not undefined');
|
||||
jQuery('.button').attr('disabled',true);
|
||||
jQuery.ajax( '<?php
|
||||
echo \admin_url('admin-ajax.php');
|
||||
?>',
|
||||
{
|
||||
type: 'POST',
|
||||
data: {
|
||||
action: 'wpdesk_tracker_deactivation_handler',
|
||||
reason: reason,
|
||||
plugin: plugin,
|
||||
plugin_name: plugin_name,
|
||||
additional_info: additional_info,
|
||||
}
|
||||
}
|
||||
).always(function() {
|
||||
var url = '<?php
|
||||
echo \str_replace('&', '&', \admin_url(\wp_nonce_url('plugins.php?action=deactivate&plugin=' . $plugin . '&plugin_status=all&', 'deactivate-plugin_' . $plugin)));
|
||||
?>';
|
||||
window.location.href = url;
|
||||
});
|
||||
}
|
||||
else {
|
||||
var url = '<?php
|
||||
echo \str_replace('&', '&', \admin_url(\wp_nonce_url('plugins.php?action=deactivate&plugin=' . $plugin . '&plugin_status=all&', 'deactivate-plugin_' . $plugin)));
|
||||
?>';
|
||||
window.location.href = url;
|
||||
}
|
||||
})
|
||||
jQuery('.button-close').click(function(e){
|
||||
e.preventDefault();
|
||||
window.history.back();
|
||||
})
|
||||
</script>
|
||||
<?php
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="wpdesk_tracker_notice" class="updated notice wpdesk_tracker_notice is-dismissible">
|
||||
<p>
|
||||
<?php
|
||||
$notice_content = \apply_filters('wpdesk_tracker_notice_content', \false, $username, $terms_url);
|
||||
?>
|
||||
<?php
|
||||
if (empty($notice_content)) {
|
||||
?>
|
||||
<?php
|
||||
\printf(\__('Hey %s,', 'flexible-checkout-fields'), $username);
|
||||
?><br/>
|
||||
<?php
|
||||
\_e('We need your help to improve <strong>WP Desk plugins</strong>, so they are more useful for you and the rest of <strong>30,000+ users</strong>. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe.', 'flexible-checkout-fields');
|
||||
?>
|
||||
<a href="<?php
|
||||
echo $terms_url;
|
||||
?>" target="_blank"><?php
|
||||
\_e('Find out more »', 'flexible-checkout-fields');
|
||||
?></a>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
<?php
|
||||
echo $notice_content;
|
||||
?>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</p>
|
||||
<p>
|
||||
<button id="wpdesk_tracker_allow_button_notice" class="button button-primary"><?php
|
||||
\_e('Allow', 'flexible-checkout-fields');
|
||||
?></button>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).on('click', '#wpdesk_tracker_notice .notice-dismiss',function(e){
|
||||
e.preventDefault();
|
||||
jQuery.ajax( '<?php
|
||||
echo \admin_url('admin-ajax.php');
|
||||
?>',
|
||||
{
|
||||
type: 'POST',
|
||||
data: {
|
||||
action: 'wpdesk_tracker_notice_handler',
|
||||
type: 'dismiss',
|
||||
}
|
||||
}
|
||||
);
|
||||
})
|
||||
jQuery(document).on('click', '#wpdesk_tracker_allow_button_notice',function(e){
|
||||
e.preventDefault();
|
||||
jQuery.ajax( '<?php
|
||||
echo \admin_url('admin-ajax.php');
|
||||
?>',
|
||||
{
|
||||
type: 'POST',
|
||||
data: {
|
||||
action: 'wpdesk_tracker_notice_handler',
|
||||
type: 'allow',
|
||||
}
|
||||
}
|
||||
);
|
||||
jQuery('#wpdesk_tracker_notice').hide();
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<div id="wpdesk_tracker_notice" class="updated notice wpdesk_tracker_notice">
|
||||
<p><?php
|
||||
\_e('You successfully opted out of collecting usage data by WP Desk. If you change your mind, you can always opt in later in the plugin\'s quick links.', 'flexible-checkout-fields');
|
||||
?></p>
|
||||
</div>
|
||||
<?php
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var wpdesk_track_deactivation_plugins = <?php
|
||||
echo \json_encode($plugins);
|
||||
?>;
|
||||
jQuery("span.deactivate a").click(function(e){
|
||||
var is_tracked = false;
|
||||
var data_plugin = jQuery(this).closest('tr').attr('data-plugin');
|
||||
var href = jQuery(this).attr('href');
|
||||
jQuery.each( wpdesk_track_deactivation_plugins, function( key, value ) {
|
||||
if ( value == data_plugin ) {
|
||||
is_tracked = true;
|
||||
}
|
||||
});
|
||||
if ( is_tracked ) {
|
||||
e.preventDefault();
|
||||
window.location.href = '<?php
|
||||
echo \admin_url('admin.php?page=wpdesk_tracker_deactivate&plugin=');
|
||||
?>' + '&plugin=' + data_plugin;
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<?php
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace FcfVendor;
|
||||
|
||||
if (!\defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
<style>
|
||||
.wpdesk-tracker-test div {
|
||||
color: yellow !important;
|
||||
}
|
||||
</style><?php
|
||||
Reference in New Issue
Block a user