*/ class Analytics_For_Woocommerce_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct( $plugin_name, $version ) { $this->plugin_name = $plugin_name; $this->version = $version; $this->mwb_anawoo_admin_actions(); } /** * All Admin Actions * @since 1.0.0 */ public function mwb_anawoo_admin_actions(){ add_action('admin_menu', array($this, 'add_mwb_anawoo_submenu')); } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles() { $screen = get_current_screen() ; if(isset($screen->id) && $screen->id == "woocommerce_page_mwb_anawoo" ){ wp_enqueue_style( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'css/analytics-for-woocommerce-admin.css', array(), $this->version, 'all' ); wp_register_style( 'woocommerce_admin_styles', WC()->plugin_url() . '/assets/css/admin.css', array(), WC_VERSION ); wp_enqueue_style( 'woocommerce_admin_styles' ); } } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { $screen = get_current_screen() ; if(isset($screen->id) && $screen->id == "shop_order" ){ $setting_data = unserialize(get_option('mwb_anawoo_settings')); if( isset($setting_data['mwb_anawoo_enable_gtag']) && $setting_data['mwb_anawoo_enable_gtag'] == "on"){ $gtag_id = $setting_data['mwb_anawoo_analytics_id']; echo ' '; } if(get_option('mwb_anawoo_order_refunded' , 'null') != 'null'){ $order_id = get_option('mwb_anawoo_order_refunded') ; $order = wc_get_order( $order_id ); $transaction_id = $order->get_transaction_id(); if(empty($transaction_id)){ $transaction_id = $order->get_order_number(); } $currency = get_woocommerce_currency(); $js_code = array( "transaction_id" => esc_js($transaction_id), "affiliation" => esc_js(get_bloginfo( 'name' )), "non_interaction" => true, "event_category" => "MWB Enhanced-Ecommerce", "event_label" => "mwb_order_refunded", ); $js_code = json_encode( $js_code ); $code = 'gtag("set", {"currency": "'.$currency.'"}) ; '; $code .= 'gtag("event", "refund", '.$js_code.') ; '; wc_enqueue_js($code); update_option( 'mwb_anawoo_order_refunded' , 'null' ); } } if(isset($screen->id) && $screen->id == "woocommerce_page_mwb_anawoo" ){ wp_enqueue_script( 'wc-enhanced-select' ); wp_enqueue_script( $this->plugin_name, plugin_dir_url( __FILE__ ) . 'js/analytics-for-woocommerce-admin.js', array( 'jquery' , 'wc-enhanced-select'), $this->version, false ); wp_register_script( 'woocommerce_admin', WC()->plugin_url() . '/assets/js/admin/woocommerce_admin.js', array( 'jquery', 'jquery-blockui', 'jquery-ui-sortable', 'jquery-ui-widget', 'jquery-ui-core', 'jquery-tiptip', 'wc-enhanced-select' ), WC_VERSION ); $locale = localeconv(); $decimal = isset( $locale['decimal_point'] ) ? $locale['decimal_point'] : '.'; $params = array( 'i18n_decimal_error' => sprintf( __( 'Please enter in decimal (%s) format without thousand separators.', "anawoo" ), $decimal ), 'i18n_mon_decimal_error' => sprintf( __( 'Please enter in monetary decimal (%s) format without thousand separators and currency symbols.', 'anawoo' ), wc_get_price_decimal_separator() ), 'i18n_country_iso_error' => __( 'Please enter in country code with two capital letters.', 'anawoo' ), 'i18_sale_less_than_regular_error' => __( 'Please enter in a value less than the regular price.', 'anawoo' ), 'decimal_point' => $decimal, 'mon_decimal_point' => wc_get_price_decimal_separator(), 'strings' => array( 'import_products' => __( 'Import', 'anawoo' ), 'export_products' => __( 'Export', 'anawoo' ), ), 'urls' => array( 'import_products' => esc_url_raw( admin_url( 'edit.php?post_type=product&page=product_importer' ) ), 'export_products' => esc_url_raw( admin_url( 'edit.php?post_type=product&page=product_exporter' ) ), ), ); wp_localize_script( 'woocommerce_admin', 'woocommerce_admin', $params ); wp_enqueue_script( 'woocommerce_admin' ); } } /** * Add Submenu in WooCommerce top menu * @since 1.0.0 */ public function add_mwb_anawoo_submenu(){ add_submenu_page('woocommerce', __('Analytics For WooCommerce','anawoo') ,__(' Analytics','anawoo'), 'manage_woocommerce', 'mwb_anawoo', array($this,'mwb_anawoo_configurations')); } /** * Menu configuration * @since 1.0.0 */ public function mwb_anawoo_configurations(){ include_once MWB_ANAWOO_ABSPATH.'admin/partials/analytics-for-woocommerce-admin-display.php'; } /** * Update option when an order is refunded * @since 1.0.0 */ public function mwb_anawoo_woocommerce_order_status_refunded($order_id){ update_option( 'mwb_anawoo_order_refunded' , $order_id ); } /** * Get all active user roles * @since 1.0.0 */ public static function mwb_anawoo_get_all_user_roles(){ if ( ! function_exists( 'get_editable_roles' ) ) { require_once ABSPATH . 'wp-admin/includes/user.php'; } global $wp_roles; $exiting_user_roles = array(); $user_roles = !empty( $wp_roles->role_names ) ? $wp_roles->role_names : array(); if( is_array( $user_roles ) && count( $user_roles ) ) { foreach ( $user_roles as $role => $role_info ) { $role_label = !empty( $role_info ) ? $role_info : $role; $exiting_user_roles[ $role ] = $role_label; } } return $exiting_user_roles ; } }