Files
2026-04-28 15:13:50 +02:00

1145 lines
47 KiB
PHP

<?php
/**
* The admin-specific functionality of the plugin.
*
* @link https://www.thedotstore.com
* @since 3.0
*
* @package Advance_Ecommerce_Tracking
* @subpackage Advance_Ecommerce_Tracking/admin
*/
/**
* The admin-specific functionality of the plugin.
*
* Defines the plugin name, version, and two examples hooks for how to
* enqueue the admin-specific stylesheet and JavaScript.
*
* @package Advance_Ecommerce_Tracking
* @subpackage Advance_Ecommerce_Tracking/admin
* @author Thedotstore <wordpress@multidots.in>
*/
class Advance_Ecommerce_Tracking_Admin {
/**
* The ID of this plugin.
*
* @since 3.0
* @access private
* @var string $plugin_name The ID of this plugin.
*/
private $plugin_name;
/**
* The version of this plugin.
*
* @since 3.0
* @access private
* @var string $version The current version of this plugin.
*/
private $version;
/**
* The server url.
*
* @since 3.0
* @access private
* @var string $version The current version of this plugin.
*/
private $base_url = 'http://pluginsdemo.thedotstore.com';
/**
* The server path.
*
* @since 3.0
* @access private
* @var string $version The current version of this plugin.
*/
private $base_path = 'v2';
/**
* Initialize the class and set its properties.
*
* @param string $plugin_name The name of this plugin.
* @param string $version The version of this plugin.
*
* @since 3.0
*/
public function __construct( $plugin_name, $version ) {
$this->plugin_name = $plugin_name;
$this->version = $version;
}
/**
* Get custom event list.
*
* @param string $get_post_id
*
* @param string $post_type
*
* @return string $default_lang
*
* @since 3.4
*
*/
public static function aet_get_custom_event_list( $get_post_id, $post_type ) {
$aet_args = array(
'post_type' => $post_type,
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'suppress_filters' => false,
);
if ( !empty( $get_post_id ) ) {
$aet_args['post__in'] = array($get_post_id);
}
$aet_all_event_list = new WP_Query($aet_args);
$aet_all_event = $aet_all_event_list->get_posts();
if ( !empty( $get_post_id ) ) {
return ( !empty( $aet_all_event ) ? $aet_all_event[0] : null );
}
return $aet_all_event;
}
/**
* Register the stylesheets for the admin area.
*
* @param string $hook display current page name
*
* @since 3.0
*/
public function aet_enqueue_styles( $hook ) {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Advance_Ecommerce_Tracking_Loader as all of the hooks are defined
* in that particular class.
*
* The Advance_Ecommerce_Tracking_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
if ( false !== strpos( $hook, '_aet' ) ) {
wp_enqueue_style(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . 'css/advance-ecommerce-tracking-admin.css',
array(),
$this->version,
'all'
);
wp_enqueue_style(
'advance-ecommerce-tracking-main-style',
plugin_dir_url( __FILE__ ) . 'css/style.css',
array(),
$this->version,
false
);
wp_enqueue_style(
'advance-ecommerce-tracking-media',
plugin_dir_url( __FILE__ ) . 'css/media.css',
array(),
$this->version,
false
);
wp_enqueue_style(
'advance-ecommerce-tracking-webkit',
plugin_dir_url( __FILE__ ) . 'css/webkit.css',
array(),
$this->version,
false
);
wp_enqueue_style(
$this->plugin_name . 'plugin-new-style',
plugin_dir_url( __FILE__ ) . 'css/plugin-new-style.css',
array(),
'all'
);
wp_enqueue_style(
$this->plugin_name . 'plugin-setup-wizard',
plugin_dir_url( __FILE__ ) . 'css/plugin-setup-wizard.css',
array(),
'all'
);
}
}
/**
* Register the JavaScript for the admin area.
*
* @param string $hook display current page name
*
* @since 3.0
*/
public function aet_enqueue_scripts( $hook ) {
/**
* This function is provided for demonstration purposes only.
*
* An instance of this class should be passed to the run() function
* defined in Advance_Ecommerce_Tracking_Loader as all of the hooks are defined
* in that particular class.
*
* The Advance_Ecommerce_Tracking_Loader will then create the relationship
* between the defined hooks and the functions defined in this
* class.
*/
$this->aet_track_admin_order_ga4( $hook );
if ( false !== strpos( $hook, '_aet' ) ) {
global $wp;
$current_url = home_url( add_query_arg( $wp->query_vars, $wp->request ) );
wp_enqueue_script(
$this->plugin_name . '-api',
esc_url( 'https://apis.google.com/js/api.js' ),
array(),
$this->version,
false
);
wp_enqueue_script(
$this->plugin_name . 'freemius_pro',
'https://checkout.freemius.com/checkout.min.js',
array('jquery'),
$this->version,
true
);
wp_enqueue_script(
$this->plugin_name . '-help-scout-beacon-js',
plugin_dir_url( __FILE__ ) . 'js/help-scout-beacon.js',
array('jquery'),
$this->version,
false
);
wp_enqueue_script(
$this->plugin_name,
plugin_dir_url( __FILE__ ) . 'js/advance-ecommerce-tracking-admin.js',
array('jquery', 'jquery-ui-dialog'),
$this->version,
false
);
wp_localize_script( $this->plugin_name, 'aet_vars', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'trash_url' => esc_url( AET_PLUGIN_URL . 'admin/images/rubbish-bin.png' ),
'aet_chk_nonce_ajax' => wp_create_nonce( 'aet_chk_nonce' ),
'current_url' => $current_url,
'dpb_api_url' => AET_STORE_URL,
'setup_wizard_ajax_nonce' => wp_create_nonce( 'wizard_ajax_nonce' ),
) );
if ( !(aet_fs()->is__premium_only() && aet_fs()->can_use_premium_code()) ) {
wp_enqueue_style(
$this->plugin_name . 'upgrade-dashboard-style',
plugin_dir_url( __FILE__ ) . 'css/upgrade-dashboard.css',
array(),
'all'
);
}
wp_enqueue_style(
$this->plugin_name . 'font-awesome',
plugin_dir_url( __FILE__ ) . 'css/font-awesome.min.css',
array(),
$this->version,
'all'
);
}
}
/**
* Track manually created admin orders in GA4.
* Fires purchase event when admin views an order that hasn't been tracked yet.
* Prevents duplicate tracking via aet_ga_placed_order_success meta.
*
* @param string $hook The current admin page hook.
* @since 3.0
*/
public function aet_track_admin_order_ga4( $hook ) {
if ( !current_user_can( 'edit_shop_orders' ) ) {
return;
}
$order_id = 0;
// Support legacy post-based URL: post.php?post=123&action=edit
// phpcs:disable WordPress.Security.NonceVerification.Recommended -- GET params from WordPress/WooCommerce core URLs; read-only to identify which order page is being viewed.
if ( 'post.php' === $hook && isset( $_GET['post'] ) ) {
$order_id = absint( $_GET['post'] );
if ( get_post_type( $order_id ) !== 'shop_order' ) {
return;
}
} elseif ( ('woocommerce_page_wc-orders' === $hook || 'toplevel_page_wc-orders' === $hook || 'admin_page_wc-orders' === $hook || false !== strpos( $hook, 'wc-orders' )) && isset( $_GET['action'] ) && 'edit' === sanitize_text_field( wp_unslash( $_GET['action'] ) ) && isset( $_GET['id'] ) ) {
$order_id = absint( $_GET['id'] );
} elseif ( isset( $_GET['page'] ) && ('wc-orders' === sanitize_text_field( wp_unslash( $_GET['page'] ) ) || 0 === strpos( sanitize_text_field( wp_unslash( $_GET['page'] ) ), 'wc-orders' )) && isset( $_GET['action'] ) && 'edit' === sanitize_text_field( wp_unslash( $_GET['action'] ) ) && isset( $_GET['id'] ) ) {
$order_id = absint( $_GET['id'] );
}
// phpcs:enable WordPress.Security.NonceVerification.Recommended
if ( !$order_id ) {
return;
}
// Safely check dependencies.
if ( !function_exists( 'wc_get_order' ) ) {
return;
}
$order = wc_get_order( $order_id );
if ( !$order || !is_a( $order, 'WC_Order' ) ) {
return;
}
// Skip if already tracked (frontend thank you or previous admin view).
// Use order meta API for HPOS compatibility.
$already_tracked = $order->get_meta( 'aet_ga_placed_order_success' );
if ( 'true' === $already_tracked || true === $already_tracked ) {
return;
}
// Only track orders in paid/fulfillable status.
$order_status = $order->get_status();
if ( !in_array( $order_status, array('processing', 'completed'), true ) ) {
return;
}
$aet_et_tracking_settings = json_decode( get_option( 'aet_et_tracking_settings' ), true );
if ( empty( $aet_et_tracking_settings ) || !is_array( $aet_et_tracking_settings ) ) {
return;
}
$ga4_id = ( !empty( $aet_et_tracking_settings['manually_et_px_ver_4'] ) ? $aet_et_tracking_settings['manually_et_px_ver_4'] : '' );
if ( empty( $ga4_id ) ) {
return;
}
// Check GA4 and enhanced ecommerce are enabled.
$aet_enable = ( isset( $aet_et_tracking_settings['at_enable'] ) ? $aet_et_tracking_settings['at_enable'] : 'off' );
$enhance_ecommerce = ( isset( $aet_et_tracking_settings['enhance_ecommerce_tracking'] ) ? $aet_et_tracking_settings['enhance_ecommerce_tracking'] : 'off' );
if ( !in_array( $aet_enable, array(
'UA',
'BOTH',
'on',
'GA4'
), true ) || 'on' !== $enhance_ecommerce ) {
return;
}
if ( !function_exists( 'aet_get_purchase_tracking_data' ) ) {
return;
}
$data = aet_get_purchase_tracking_data( $order_id );
if ( !$data || !is_array( $data ) ) {
return;
}
// Mark as tracked BEFORE output to prevent duplicate on refresh.
// Use order meta API for HPOS compatibility.
$order->update_meta_data( 'aet_ga_placed_order_success', 'true' );
$order->save();
$ga4_id_attr = esc_attr( $ga4_id );
$currency = esc_js( ( isset( $data['currency'] ) ? $data['currency'] : get_woocommerce_currency() ) );
$trans_id = esc_js( ( isset( $data['transaction_id'] ) ? $data['transaction_id'] : (string) $order_id ) );
$value = ( is_numeric( $data['value'] ) ? floatval( $data['value'] ) : 0 );
$coupons = esc_js( ( isset( $data['coupons_list'] ) ? $data['coupons_list'] : '' ) );
$shipping = ( is_numeric( $data['shipping'] ) ? floatval( $data['shipping'] ) : 0 );
$tax = ( is_numeric( $data['tax'] ) ? floatval( $data['tax'] ) : 0 );
wp_enqueue_script(
'aet-ga4-admin-order-track',
'https://www.googletagmanager.com/gtag/js?id=' . $ga4_id_attr,
array(),
null,
true
);
$purchase_js = 'window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag("js", new Date());
gtag("config", "' . $ga4_id_attr . '");
gtag("event", "purchase", {
event_category: "Enhanced-Ecommerce",
event_label: "purchase",
currency: "' . $currency . '",
transaction_id: "' . $trans_id . '",
value: ' . $value . ',
coupon: "' . $coupons . '",
shipping: ' . $shipping . ',
tax: ' . $tax . ',
items: [ ' . (( isset( $data['items_json'] ) ? $data['items_json'] : '' )) . ' ]
});';
wp_add_inline_script( 'aet-ga4-admin-order-track', $purchase_js, 'after' );
}
/**
* Redirect to the setting page after activate plugin.
*
* @since 3.0
*/
public function aet_welcome_ecommerce_tracking_do_activation_redirect() {
$get_activate_multi = filter_input( INPUT_GET, 'activate-multi', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
// if no activation redirect
if ( !get_transient( '_aet_welcome_ecommerce_screen_activation_redirect_data' ) ) {
return;
}
// Delete the redirect transient
delete_transient( '_aet_welcome_ecommerce_screen_activation_redirect_data' );
// if activating from network, or bulk
if ( is_network_admin() || isset( $get_activate_multi ) ) {
return;
}
// Redirect to extra cost welcome page
wp_safe_redirect( add_query_arg( array(
'page' => 'aet-et-settings',
), admin_url( 'admin.php' ) ) );
exit;
}
/**
* Add menu in admin side.
*
* @since 3.0
*/
public function aet_admin_menu() {
global $GLOBALS;
if ( empty( $GLOBALS['admin_page_hooks']['dots_store'] ) ) {
add_menu_page(
'Dotstore Plugins',
'Dotstore Plugins',
'null',
'dots_store',
array($this, 'dot_store_menu_advanced_ecommerce_tracking_pro_page'),
'dashicons-marker',
25
);
}
add_submenu_page(
'dots_store',
'Ecommerce Tracking',
'Ecommerce Tracking',
'manage_options',
'aet-et-settings',
array($this, 'aet_ecommerce_tracking_settings'),
1
);
add_submenu_page(
'dots_store',
'Custom Event List',
'Custom Event List',
'manage_options',
'aet-cat-list',
array($this, 'aet_cat_list_page'),
3
);
add_submenu_page(
'dots_store',
'Getting Started',
'Getting Started',
'manage_options',
'aet-get-started',
array($this, 'aet_get_started_page'),
4
);
add_submenu_page(
'dots_store',
'Get Premium',
'Get Premium',
'manage_options',
'aet-premium',
array($this, 'aet_premium_page'),
6
);
}
/**
* Ecommerce Tracking Setting Page.
*
* @since 3.0
*/
public function aet_ecommerce_tracking_settings() {
require_once plugin_dir_path( __FILE__ ) . 'partials/aet-et-settings.php';
}
/**
* Add custom css for dotstore icon in admin area
*
* @since 3.9.3
*
*/
public function aet_dot_store_icon_css() {
echo '<style>
.toplevel_page_dots_store .dashicons-marker::after{content:"";border:3px solid;position:absolute;top:14px;left:15px;border-radius:50%;opacity: 0.6;}
li.toplevel_page_dots_store:hover .dashicons-marker::after,li.toplevel_page_dots_store.current .dashicons-marker::after{opacity: 1;}
@media only screen and (max-width: 960px){
.toplevel_page_dots_store .dashicons-marker::after{left:14px;}
}
</style>';
}
/**
* Google Analytics Custom Event List.
*
* @since 3.0
*/
public function aet_cat_list_page() {
require_once plugin_dir_path( __FILE__ ) . 'partials/aet-cat-list.php';
}
/**
* Quick guide page.
*
* @since 3.0
*/
public function aet_get_started_page() {
require_once plugin_dir_path( __FILE__ ) . 'partials/aet-get-started-page.php';
}
/**
* Premium plugin page.
*
* @since 3.0
*/
public function aet_premium_page() {
require_once plugin_dir_path( __FILE__ ) . 'partials/aet-premium-page.php';
}
/**
* Remove submenu from admin screen.
*
* @since 3.0
*/
public function aet_remove_admin_submenus() {
remove_submenu_page( 'dots_store', 'dots_store' );
remove_submenu_page( 'dots_store', 'aet-get-started' );
remove_submenu_page( 'dots_store', 'aet-premium' );
remove_submenu_page( 'dots_store', 'aet-ft-settings' );
remove_submenu_page( 'dots_store', 'aet-cat-list' );
remove_submenu_page( 'dots_store', 'aet-gc-settings' );
}
/**
* Create a menu for plugin.
*
* @param string $current current page.
*
* @since 3.0
*/
public function aet_menus( $current = 'aet-et-settings' ) {
$menu_title = '';
$menu_url = '';
$menu_slug = '';
$licence_url = '';
$wpfp_menus = array(
'main_menu' => array(
'pro_menu' => array(
'aet-et-settings' => array(
'menu_title' => __( 'Ecommerce Tracking', 'advance-ecommerce-tracking' ),
'menu_slug' => 'aet-et-settings',
'menu_url' => $this->aet_plugins_url(
'',
'aet-et-settings',
'',
'',
''
),
),
$menu_slug => array(
'menu_title' => $menu_title,
'menu_slug' => $menu_slug,
'menu_url' => $menu_url,
),
'license' => array(
'menu_title' => __( 'License', 'advance-ecommerce-tracking' ),
'menu_slug' => 'license',
'menu_url' => $licence_url,
),
),
'free_menu' => array(
'aet-et-settings' => array(
'menu_title' => __( 'Ecommerce Tracking', 'advance-ecommerce-tracking' ),
'menu_slug' => 'aet-et-settings',
'menu_url' => $this->aet_plugins_url(
'',
'aet-et-settings',
'',
'',
''
),
),
'aet-cat-list' => array(
'menu_title' => __( 'Custom Event', 'advance-ecommerce-tracking' ),
'menu_slug' => 'aet-cat-list',
'menu_url' => $this->aet_plugins_url(
'',
'aet-cat-list',
'',
'',
''
),
),
'aet-premium' => array(
'menu_title' => __( 'Get Premium', 'advance-ecommerce-tracking' ),
'menu_slug' => 'aet-premium',
'menu_url' => $this->aet_plugins_url(
'',
'aet-premium',
'',
'',
''
),
),
),
),
);
?>
<div class="dots-menu-main">
<nav>
<ul>
<?php
$main_current = $current;
$sub_current = $current;
foreach ( $wpfp_menus['main_menu'] as $main_menu_slug => $main_wpfp_menu ) {
if ( 'free_menu' === $main_menu_slug || 'common_menu' === $main_menu_slug ) {
foreach ( $main_wpfp_menu as $menu_slug => $wpfp_menu ) {
if ( 'aet-information' === $main_current ) {
$main_current = 'aet-get-started';
}
if ( 'aet-et-settings-account' === $main_current ) {
$main_current = 'aet-get-started';
}
$class = ( $menu_slug === $main_current ? 'active' : '' );
if ( !empty( $wpfp_menu['menu_title'] ) ) {
?>
<li>
<a class="dotstore_plugin <?php
echo ( 'aet-premium' === $menu_slug ? esc_attr( 'dots_get_premium' ) : '' );
?> <?php
echo esc_attr( $class );
?>"
href="<?php
echo esc_url( $wpfp_menu['menu_url'] );
?>">
<?php
esc_html_e( $wpfp_menu['menu_title'], 'advance-ecommerce-tracking' );
?>
</a>
<?php
if ( isset( $wpfp_menu['sub_menu'] ) && !empty( $wpfp_menu['sub_menu'] ) ) {
?>
<ul class="sub-menu">
<?php
foreach ( $wpfp_menu['sub_menu'] as $sub_menu_slug => $wpfp_sub_menu ) {
$sub_class = ( $sub_menu_slug === $sub_current ? 'active' : '' );
if ( !empty( $wpfp_sub_menu['menu_title'] ) ) {
?>
<li>
<a class="dotstore_plugin <?php
echo esc_attr( $sub_class );
?>"
href="<?php
echo esc_url( $wpfp_sub_menu['menu_url'] );
?>">
<?php
esc_html_e( $wpfp_sub_menu['menu_title'], 'advance-ecommerce-tracking' );
?>
</a>
</li>
<?php
}
}
?>
</ul>
<?php
}
?>
</li>
<?php
}
}
}
}
?>
</ul>
</nav>
</div>
<?php
}
/**
* Admin footer review
*
* @since 1.0.0
*/
public function aet_admin_footer_review() {
$url = '';
$url = esc_url( 'https://wordpress.org/plugins/woo-ecommerce-tracking-for-google-and-facebook/#reviews' );
$html = sprintf( wp_kses( __( '<strong>We need your support</strong> to keep updating and improving the plugin. Please <a href="%1$s" target="_blank">help us by leaving a good review</a> :) Thanks!', 'advance-ecommerce-tracking' ), array(
'strong' => array(),
'a' => array(
'href' => array(),
'target' => 'blank',
),
) ), esc_url( $url ) );
echo wp_kses_post( $html );
}
/**
* Get option.
*
* @param string $args
*
* @return string $get_option_data
*
* @since 3.0
*/
public function aet_ad_get_setting_option( $args ) {
$option_key = 'aet_' . $args . '_tracking_settings';
$get_option_data = json_decode( get_option( $option_key ) );
return $get_option_data;
}
/**
* Plugins URL.
*
* @since 3.0
*/
public function aet_plugins_url(
$id,
$page,
$tab,
$action,
$nonce
) {
$query_args = array();
if ( '' !== $page ) {
$query_args['page'] = $page;
}
if ( '' !== $tab ) {
$query_args['tab'] = $tab;
}
if ( '' !== $action ) {
$query_args['action'] = $action;
}
if ( '' !== $id ) {
$query_args['id'] = $id;
}
if ( '' !== $nonce ) {
$query_args['_wpnonce'] = wp_create_nonce( 'afrsmnonce' );
}
return esc_url( add_query_arg( $query_args, admin_url( 'admin.php' ) ) );
}
/**
* Save analytics data
*
* @param array $data Get all tracking data.
*
* @return string redirect page
*
* @since 3.0
*/
public function aet_save_settings( $data ) {
if ( empty( $data ) ) {
return false;
}
$aet_track_save = filter_input( INPUT_POST, 'track_save', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$aet_track_type = filter_input( INPUT_POST, 'track_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$option_key = 'aet_' . $aet_track_type . '_tracking_settings';
$tracking_settings_array = array();
if ( 'ecommerce' === $aet_track_save ) {
$aet_et_conditions_save = filter_input( INPUT_POST, 'aet_et_conditions_save', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( !empty( $data ) && wp_verify_nonce( sanitize_text_field( $aet_et_conditions_save ), 'aet_et_save_action' ) ) {
$manually_et_px_ver_4 = filter_input( INPUT_POST, 'manually_et_px_ver_4', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$tracking_settings_array['manually_et_px_ver_4'] = $manually_et_px_ver_4;
$get_at_tracking_option_enable = filter_input( INPUT_POST, 'at_enable', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$at_tracking_option_enable = ( isset( $get_at_tracking_option_enable ) ? sanitize_text_field( $get_at_tracking_option_enable ) : 'GA4' );
if ( in_array( $at_tracking_option_enable, array('UA', 'BOTH', 'on'), true ) ) {
$at_tracking_option_enable = 'GA4';
}
$tracking_settings_array['at_enable'] = $at_tracking_option_enable;
$get_enhance_ecommerce_tracking = filter_input( INPUT_POST, 'enhance_ecommerce_tracking', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$enhance_ecommerce_tracking = ( isset( $get_enhance_ecommerce_tracking ) ? sanitize_text_field( $get_enhance_ecommerce_tracking ) : 'off' );
$tracking_settings_array['enhance_ecommerce_tracking'] = $enhance_ecommerce_tracking;
$get_ip_anonymization = filter_input( INPUT_POST, 'ip_anonymization', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$ip_anonymization = ( isset( $get_ip_anonymization ) ? sanitize_text_field( $get_ip_anonymization ) : 'off' );
$tracking_settings_array['ip_anonymization'] = $ip_anonymization;
$get_privacy_policy = filter_input( INPUT_POST, 'exl_tracking_privacy_policy', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$privacy_policy = ( isset( $get_privacy_policy ) ? sanitize_text_field( $get_privacy_policy ) : 'off' );
$tracking_settings_array['privacy_policy'] = $privacy_policy;
$get_google_analytics_opt_out = filter_input( INPUT_POST, 'google_analytics_opt_out', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$google_analytics_opt_out = ( isset( $get_google_analytics_opt_out ) ? sanitize_text_field( $get_google_analytics_opt_out ) : 'off' );
$tracking_settings_array['google_analytics_opt_out'] = $google_analytics_opt_out;
}
}
if ( !empty( $tracking_settings_array ) ) {
update_option( $option_key, wp_json_encode( $tracking_settings_array ) );
}
wp_safe_redirect( add_query_arg( array(
'page' => 'aet-' . $aet_track_type . '-settings',
), admin_url( 'admin.php' ) ) );
exit;
}
/**
* Update id manually.
*
* @since 3.0
*/
public function aet_update_manually_id() {
check_ajax_referer( 'aet_chk_nonce', 'nonce' );
$get_val = filter_input( INPUT_GET, 'get_val', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$get_attr = filter_input( INPUT_GET, 'get_attr', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$get_attr_two = filter_input( INPUT_GET, 'get_attr_two', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( !empty( $get_val ) && isset( $get_val ) ) {
$set_arry = get_option( 'aet_et_tracking_settings' );
$set_arr = json_decode( $set_arry, true );
$set_arr = ( NULL === $set_arr ? array() : $set_arr );
if ( array_key_exists( 'manually_et_px_ver_4', $set_arr ) ) {
$set_arr['manually_et_px_ver_4'] = $get_val;
$nset_array = wp_json_encode( $set_arr );
update_option( 'aet_et_tracking_settings', $nset_array );
} else {
$set_arr['manually_et_px_ver_4'] = $get_val;
$nset_array = wp_json_encode( $set_arr );
update_option( 'aet_et_tracking_settings', $nset_array );
}
}
$this->aet_update_selected_ua_id(
$get_val,
$get_attr,
$get_attr_two,
'update',
'ajax'
);
}
/**
* Update UA id.
*
* @param string $active_data With urlencode and base64encode data.
*
* @param string $request
*
* @param string $request_url
*
* @param string $action update data.
*
* @since 3.0
*/
public function aet_update_selected_ua_id(
$active_data,
$request,
$request_url,
$action,
$save_type
) {
$option_key = 'selected_data_ua_' . $request;
if ( 'ajax' === $save_type ) {
$get_selected_data_ua = $active_data;
} else {
$get_selected_data_ua = urldecode( base64_decode( $active_data ) );
}
if ( 'update' === $action ) {
update_option( $option_key, $get_selected_data_ua );
} else {
update_option( $option_key, '' );
}
$query_param = add_query_arg( array(
'page' => 'aet-' . $request . '-settings',
), admin_url( 'admin.php' ) );
if ( 'ajax' === $save_type ) {
echo wp_kses_post( $query_param );
wp_die();
} else {
wp_safe_redirect( $query_param );
exit;
}
}
/**
* Setup Link.
*
* @since 3.0
*/
public function aet_setup_link( $args ) {
$https = filter_input( INPUT_SERVER, 'HTTPS', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$http_host = filter_input( INPUT_SERVER, 'HTTP_HOST', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$request_uri = filter_input( INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( isset( $https ) && $https === 'on' ) {
$link = 'https';
} else {
$link = 'http';
}
$link .= '://';
$link .= $http_host;
$link .= $request_uri;
if ( 'ft' === $args ) {
$server_URL = $this->base_url . '/' . $this->base_path . '/fb';
} else {
$server_URL = $this->base_url . '/' . $this->base_path . '/ec';
}
$setup_link = $server_URL . '?extra_url=' . rawurlencode( base64_encode( $link ) ) . '&chk=' . base64_encode( 'refer' );
//Need to remove static URL
return $setup_link;
}
/**
* Get user roles.
*
* @since 3.0
*/
public function aet_get_editable_user_roles() {
global $wp_roles;
$all_roles = $wp_roles->roles;
$roles = array();
$editable_roles = apply_filters( 'editable_roles', $all_roles );
foreach ( $editable_roles as $id => $name ) {
$roles[$id] = translate_user_role( $name['name'] );
}
return $roles;
}
/**
* Our pages URL.
*
* @param string $page
*
* @param int $id
*
* @param string $action
*
* @param string $wp_nonce
*
* @param bool $admin_url
*
* @return string $url
*
* @since 3.0
*/
public function aet_pages_url(
$page,
$id,
$action,
$wp_nonce,
$admin_url
) {
$args = array();
if ( $page ) {
$args['page'] = $page;
}
if ( $id ) {
$args['id'] = $id;
}
if ( $action ) {
$args['action'] = $action;
}
if ( $wp_nonce ) {
$args['_wpnonce'] = $wp_nonce;
}
if ( true === $admin_url ) {
$get_admin_url = admin_url( 'admin.php' );
} else {
$get_admin_url = admin_url( 'admin.php' );
//You can change as per your request
}
add_query_arg( $args, $get_admin_url );
$url = esc_url( add_query_arg( $args, $get_admin_url ) );
return $url;
}
/**
* Get dynamic promotional bar of plugin
*
* @param String $plugin_slug slug of the plugin added in the site option
* @since 3.9.3
*
* @return null
*/
public function aet_get_promotional_bar( $plugin_slug = '' ) {
$promotional_bar_upi_url = AET_STORE_URL . 'wp-json/dpb-promotional-banner/v2/dpb-promotional-banner?' . wp_rand();
$promotional_banner_request = wp_remote_get( $promotional_bar_upi_url );
//phpcs:ignore
if ( empty( $promotional_banner_request->errors ) ) {
$promotional_banner_request_body = $promotional_banner_request['body'];
$promotional_banner_request_body = json_decode( $promotional_banner_request_body, true );
echo '<div class="dynamicbar_wrapper">';
if ( !empty( $promotional_banner_request_body ) && is_array( $promotional_banner_request_body ) ) {
foreach ( $promotional_banner_request_body as $promotional_banner_request_body_data ) {
$promotional_banner_id = $promotional_banner_request_body_data['promotional_banner_id'];
$promotional_banner_cookie = $promotional_banner_request_body_data['promotional_banner_cookie'];
$promotional_banner_image = $promotional_banner_request_body_data['promotional_banner_image'];
$promotional_banner_description = $promotional_banner_request_body_data['promotional_banner_description'];
$promotional_banner_button_group = $promotional_banner_request_body_data['promotional_banner_button_group'];
$dpb_schedule_campaign_type = $promotional_banner_request_body_data['dpb_schedule_campaign_type'];
$promotional_banner_target_audience = $promotional_banner_request_body_data['promotional_banner_target_audience'];
if ( !empty( $promotional_banner_target_audience ) ) {
$plugin_keys = array();
if ( is_array( $promotional_banner_target_audience ) ) {
foreach ( $promotional_banner_target_audience as $list ) {
$plugin_keys[] = $list['value'];
}
} else {
$plugin_keys[] = $promotional_banner_target_audience['value'];
}
$display_banner_flag = false;
if ( in_array( 'all_customers', $plugin_keys, true ) || in_array( $plugin_slug, $plugin_keys, true ) ) {
$display_banner_flag = true;
}
}
if ( true === $display_banner_flag ) {
if ( 'default' === $dpb_schedule_campaign_type ) {
$banner_cookie_show = filter_input( INPUT_COOKIE, 'banner_show_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$banner_cookie_visible_once = filter_input( INPUT_COOKIE, 'banner_show_once_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$flag = false;
if ( empty( $banner_cookie_show ) && empty( $banner_cookie_visible_once ) ) {
setcookie( 'banner_show_' . $promotional_banner_cookie, 'yes', time() + 86400 * 7 );
//phpcs:ignore
setcookie( 'banner_show_once_' . $promotional_banner_cookie, 'yes' );
//phpcs:ignore
$flag = true;
}
$banner_cookie_show = filter_input( INPUT_COOKIE, 'banner_show_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( !empty( $banner_cookie_show ) || true === $flag ) {
$banner_cookie = filter_input( INPUT_COOKIE, 'banner_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$banner_cookie = ( isset( $banner_cookie ) ? $banner_cookie : '' );
if ( empty( $banner_cookie ) && 'yes' !== $banner_cookie ) {
?>
<div class="dpb-popup <?php
echo ( isset( $promotional_banner_cookie ) ? esc_html( $promotional_banner_cookie ) : 'default-banner' );
?>">
<?php
if ( !empty( $promotional_banner_image ) ) {
?>
<img src="<?php
echo esc_url( $promotional_banner_image );
?>"/>
<?php
}
?>
<div class="dpb-popup-meta">
<p>
<?php
echo wp_kses_post( str_replace( array('<p>', '</p>'), '', $promotional_banner_description ) );
if ( !empty( $promotional_banner_button_group ) ) {
foreach ( $promotional_banner_button_group as $promotional_banner_button_group_data ) {
?>
<a href="<?php
echo esc_url( $promotional_banner_button_group_data['promotional_banner_button_link'] );
?>" target="_blank"><?php
echo esc_html( $promotional_banner_button_group_data['promotional_banner_button_text'] );
?></a>
<?php
}
}
?>
</p>
</div>
<a href="javascript:void(0);" data-bar-id="<?php
echo esc_attr( $promotional_banner_id );
?>" data-popup-name="<?php
echo ( isset( $promotional_banner_cookie ) ? esc_attr( $promotional_banner_cookie ) : 'default-banner' );
?>" class="dpbpop-close"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10"><path id="Icon_material-close" data-name="Icon material-close" d="M17.5,8.507,16.493,7.5,12.5,11.493,8.507,7.5,7.5,8.507,11.493,12.5,7.5,16.493,8.507,17.5,12.5,13.507,16.493,17.5,17.5,16.493,13.507,12.5Z" transform="translate(-7.5 -7.5)" fill="#acacac"/></svg></a>
</div>
<?php
}
}
} else {
$banner_cookie_show = filter_input( INPUT_COOKIE, 'banner_show_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$banner_cookie_visible_once = filter_input( INPUT_COOKIE, 'banner_show_once_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$flag = false;
if ( empty( $banner_cookie_show ) && empty( $banner_cookie_visible_once ) ) {
setcookie( 'banner_show_' . $promotional_banner_cookie, 'yes' );
//phpcs:ignore
setcookie( 'banner_show_once_' . $promotional_banner_cookie, 'yes' );
//phpcs:ignore
$flag = true;
}
$banner_cookie_show = filter_input( INPUT_COOKIE, 'banner_show_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( !empty( $banner_cookie_show ) || true === $flag ) {
$banner_cookie = filter_input( INPUT_COOKIE, 'banner_' . $promotional_banner_cookie, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$banner_cookie = ( isset( $banner_cookie ) ? $banner_cookie : '' );
if ( empty( $banner_cookie ) && 'yes' !== $banner_cookie ) {
?>
<div class="dpb-popup <?php
echo ( isset( $promotional_banner_cookie ) ? esc_html( $promotional_banner_cookie ) : 'default-banner' );
?>">
<?php
if ( !empty( $promotional_banner_image ) ) {
?>
<img src="<?php
echo esc_url( $promotional_banner_image );
?>"/>
<?php
}
?>
<div class="dpb-popup-meta">
<p>
<?php
echo wp_kses_post( str_replace( array('<p>', '</p>'), '', $promotional_banner_description ) );
if ( !empty( $promotional_banner_button_group ) ) {
foreach ( $promotional_banner_button_group as $promotional_banner_button_group_data ) {
?>
<a href="<?php
echo esc_url( $promotional_banner_button_group_data['promotional_banner_button_link'] );
?>" target="_blank"><?php
echo esc_html( $promotional_banner_button_group_data['promotional_banner_button_text'] );
?></a>
<?php
}
}
?>
</p>
</div>
<a href="javascript:void(0);" data-bar-id="<?php
echo esc_attr( $promotional_banner_id );
?>" data-popup-name="<?php
echo ( isset( $promotional_banner_cookie ) ? esc_html( $promotional_banner_cookie ) : 'default-banner' );
?>" class="dpbpop-close"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10"><path id="Icon_material-close" data-name="Icon material-close" d="M17.5,8.507,16.493,7.5,12.5,11.493,8.507,7.5,7.5,8.507,11.493,12.5,7.5,16.493,8.507,17.5,12.5,13.507,16.493,17.5,17.5,16.493,13.507,12.5Z" transform="translate(-7.5 -7.5)" fill="#acacac"/></svg></a>
</div>
<?php
}
}
}
}
}
}
echo '</div>';
}
}
/**
* Get and save plugin setup wizard data
*
* @since 3.9.3
*
*/
public function aet_plugin_setup_wizard_submit() {
check_ajax_referer( 'wizard_ajax_nonce', 'nonce' );
$survey_list = filter_input( INPUT_GET, 'survey_list', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( !empty( $survey_list ) && 'Select One' !== $survey_list ) {
update_option( 'aet_where_hear_about_us', $survey_list );
}
wp_die();
}
/**
* Send setup wizard data to sendinblue
*
* @since 3.9.3
*
*/
public function aet_send_wizard_data_after_plugin_activation() {
$send_wizard_data = filter_input( INPUT_GET, 'send-wizard-data', FILTER_SANITIZE_FULL_SPECIAL_CHARS );
if ( isset( $send_wizard_data ) && !empty( $send_wizard_data ) ) {
if ( !get_option( 'aet_data_submited_in_sendiblue' ) ) {
$aet_where_hear = get_option( 'aet_where_hear_about_us' );
$get_user = aet_fs()->get_user();
$data_insert_array = array();
if ( isset( $get_user ) && !empty( $get_user ) ) {
$data_insert_array = array(
'user_email' => $get_user->email,
'ACQUISITION_SURVEY_LIST' => $aet_where_hear,
);
}
$feedback_api_url = AET_STORE_URL . 'wp-json/dotstore-sendinblue-data/v2/dotstore-sendinblue-data?' . wp_rand();
$query_url = $feedback_api_url . '&' . http_build_query( $data_insert_array );
if ( function_exists( 'vip_safe_wp_remote_get' ) ) {
$response = vip_safe_wp_remote_get(
$query_url,
3,
1,
20
);
} else {
$response = wp_remote_get( $query_url );
// phpcs:ignore
}
if ( !is_wp_error( $response ) && 200 === wp_remote_retrieve_response_code( $response ) ) {
update_option( 'aet_data_submited_in_sendiblue', '1' );
delete_option( 'aet_where_hear_about_us' );
}
}
}
}
}