Server IP : 192.64.118.117 / Your IP : 3.136.19.165 Web Server : LiteSpeed System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : thecgapy ( 1160) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/thecgapy/mobilecreationz.com/wp-content/plugins/googleanalytics/class/ |
Upload File : |
<?php class Ga_Admin { const GA_WEB_PROPERTY_ID_OPTION_NAME = 'googleanalytics_web_property_id'; const GA_EXCLUDE_ROLES_OPTION_NAME = 'googleanalytics_exclude_roles'; const GA_SHARETHIS_TERMS_OPTION_NAME = 'googleanalytics_sharethis_terms'; const GA_HIDE_TERMS_OPTION_NAME = 'googleanalytics_hide_terms'; const GA_VERSION_OPTION_NAME = 'googleanalytics_version'; const GA_SELECTED_ACCOUNT = 'googleanalytics_selected_account'; const GA_OAUTH_AUTH_CODE_OPTION_NAME = 'googleanalytics_oauth_auth_code'; const GA_OAUTH_AUTH_TOKEN_OPTION_NAME = 'googleanalytics_oauth_auth_token'; const GA_ACCOUNT_DATA_OPTION_NAME = 'googleanalytics_account_data'; const GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME = 'googleanalytics_web_property_id_manually'; const GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME = 'googleanalytics_web_property_id_manually_value'; const GA_SHARETHIS_PROPERTY_ID = 'googleanalytics_sherethis_property_id'; const GA_SHARETHIS_PROPERTY_SECRET = 'googleanalytics_sherethis_property_secret'; const GA_SHARETHIS_VERIFICATION_RESULT = 'googleanalytics_sherethis_verification_result'; const MIN_WP_VERSION = '3.8'; const GA_SHARETHIS_TRENDING_CONTENT_PLUGIN_VERSION = '2.1'; const NOTICE_SUCCESS = 'success'; const NOTICE_WARNING = 'warning'; const NOTICE_ERROR = 'error'; const GA_SHARETHIS_API_ALIAS = 'sharethis'; const GA_DISABLE_ALL_FEATURES = 'googleanalytics_disable_all_features'; const GA_HEARTBEAT_API_CACHE_UPDATE = false; /** * Instantiate API client. * * @return Ga_Lib_Google_Api_Client|null */ public static function api_client( $type = '' ) { if ( $type === self::GA_SHARETHIS_API_ALIAS ) { $instance = Ga_Lib_Sharethis_Api_Client::get_instance(); } else { $instance = Ga_Lib_Google_Api_Client::get_instance(); $token = Ga_Helper::get_option( self::GA_OAUTH_AUTH_TOKEN_OPTION_NAME ); try { if ( !empty( $token ) ) { $token = json_decode( $token, true ); $instance->set_access_token( $token ); } } catch ( Exception $e ) { Ga_Helper::ga_oauth_notice( $e->getMessage() ); } } return $instance; } /* * Initializes plugin's options during plugin activation process. */ public static function activate_googleanalytics() { add_option( self::GA_WEB_PROPERTY_ID_OPTION_NAME, Ga_Helper::GA_DEFAULT_WEB_ID ); add_option( self::GA_EXCLUDE_ROLES_OPTION_NAME, wp_json_encode( array() ) ); add_option( self::GA_SHARETHIS_TERMS_OPTION_NAME, false ); add_option( self::GA_HIDE_TERMS_OPTION_NAME, false ); add_option( self::GA_VERSION_OPTION_NAME ); add_option( self::GA_OAUTH_AUTH_CODE_OPTION_NAME ); add_option( self::GA_OAUTH_AUTH_TOKEN_OPTION_NAME ); add_option( self::GA_ACCOUNT_DATA_OPTION_NAME ); add_option( self::GA_SELECTED_ACCOUNT ); add_option( self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME ); add_option( self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME ); add_option( self::GA_DISABLE_ALL_FEATURES ); Ga_Cache::add_cache_options(); } /* * Deletes plugin's options during plugin activation process. */ public static function deactivate_googleanalytics() { delete_option( self::GA_WEB_PROPERTY_ID_OPTION_NAME ); delete_option( self::GA_EXCLUDE_ROLES_OPTION_NAME ); delete_option( self::GA_OAUTH_AUTH_CODE_OPTION_NAME ); delete_option( self::GA_OAUTH_AUTH_TOKEN_OPTION_NAME ); delete_option( self::GA_ACCOUNT_DATA_OPTION_NAME ); delete_option( self::GA_SELECTED_ACCOUNT ); delete_option( self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME ); delete_option( self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME ); delete_option( self::GA_DISABLE_ALL_FEATURES ); Ga_Cache::delete_cache_options(); } /** * Deletes plugin's options during plugin uninstallation process. */ public static function uninstall_googleanalytics() { delete_option( self::GA_SHARETHIS_TERMS_OPTION_NAME ); delete_option( self::GA_HIDE_TERMS_OPTION_NAME ); delete_option( self::GA_VERSION_OPTION_NAME ); delete_option( self::GA_SHARETHIS_PROPERTY_ID ); delete_option( self::GA_SHARETHIS_PROPERTY_SECRET ); delete_option( self::GA_SHARETHIS_VERIFICATION_RESULT ); } /** * Do actions during plugin load. */ public static function loaded_googleanalytics() { self::update_googleanalytics(); } /** * Update hook fires when plugin is being loaded. */ public static function update_googleanalytics() { $version = get_option( self::GA_VERSION_OPTION_NAME ); $installed_version = get_option( self::GA_VERSION_OPTION_NAME, '1.0.7' ); $old_property_value = Ga_Helper::get_option( 'web_property_id' ); if ( version_compare( $installed_version, GOOGLEANALYTICS_VERSION, 'eq' ) ) { return; } if ( empty( $old_property_value ) && empty( $version ) ) { update_option( self::GA_SHARETHIS_TERMS_OPTION_NAME, true ); } if ( version_compare( $installed_version, GOOGLEANALYTICS_VERSION, 'lt' ) ) { if ( !empty( $old_property_value ) ) { Ga_Helper::update_option( self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME, $old_property_value ); Ga_Helper::update_option( self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME, 1 ); delete_option( 'web_property_id' ); } } update_option( self::GA_VERSION_OPTION_NAME, GOOGLEANALYTICS_VERSION ); } public static function preupdate_exclude_roles( $new_value, $old_value ) { if ( !Ga_Helper::are_features_enabled() ) { return ''; } return wp_json_encode( $new_value ); } /** * Pre-update hook for preparing JSON structure. * * @param $new_value * @param $old_value * * @return mixed */ public static function preupdate_selected_account( $new_value, $old_value ) { $data = null; if ( !empty( $new_value ) ) { $data = explode( "_", $new_value ); if ( !empty( $data[ 1 ] ) ) { Ga_Helper::update_option( self::GA_WEB_PROPERTY_ID_OPTION_NAME, $data[ 1 ] ); } } return wp_json_encode( $data ); } public static function preupdate_disable_all_features( $new_value, $old_value ) { if ( $old_value == 'on' ) { Ga_Helper::update_option( Ga_Admin::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME, false ); } return $new_value; } /** * Registers plugin's settings. */ public static function admin_init_googleanalytics() { register_setting( GA_NAME, self::GA_WEB_PROPERTY_ID_OPTION_NAME ); register_setting( GA_NAME, self::GA_EXCLUDE_ROLES_OPTION_NAME ); register_setting( GA_NAME, self::GA_SELECTED_ACCOUNT ); register_setting( GA_NAME, self::GA_OAUTH_AUTH_CODE_OPTION_NAME ); register_setting( GA_NAME, self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME ); register_setting( GA_NAME, self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME ); register_setting( GA_NAME, self::GA_DISABLE_ALL_FEATURES ); add_filter( 'pre_update_option_' . Ga_Admin::GA_EXCLUDE_ROLES_OPTION_NAME, 'Ga_Admin::preupdate_exclude_roles', 1, 2 ); add_filter( 'pre_update_option_' . Ga_Admin::GA_SELECTED_ACCOUNT, 'Ga_Admin::preupdate_selected_account', 1, 2 ); // add_filter( 'pre_update_option_' . Ga_Admin::GA_DISABLE_ALL_FEATURES, 'Ga_Admin::preupdate_disable_all_features', 1, 2 ); } /** * Builds plugin's menu structure. */ public static function admin_menu_googleanalytics() { if ( current_user_can( 'manage_options' ) ) { add_menu_page( 'Google Analytics', 'Google Analytics', 'manage_options', 'googleanalytics', 'Ga_Admin::statistics_page_googleanalytics', 'dashicons-chart-line', 1000 ); add_submenu_page( 'googleanalytics', 'Google Analytics', __( 'Dashboard' ), 'manage_options', 'googleanalytics', 'Ga_Admin::statistics_page_googleanalytics' ); add_submenu_page( 'googleanalytics', 'Google Analytics', __( 'Trending Content' ), 'manage_options', 'googleanalytics/trending', 'Ga_Admin::trending_page_googleanalytics' ); add_submenu_page( 'googleanalytics', 'Google Analytics', __( 'Settings' ), 'manage_options', 'googleanalytics/settings', 'Ga_Admin::options_page_googleanalytics' ); } } /** * Prepares and displays plugin's trending content page. */ public static function trending_page_googleanalytics() { if ( !Ga_Helper::is_wp_version_valid() || !Ga_Helper::is_php_version_valid() ) { return false; } $data = Ga_Sharethis::create_sharethis_options( self::api_client( self::GA_SHARETHIS_API_ALIAS ) ); Ga_Sharethis::sharethis_installation_verification( self::api_client( self::GA_SHARETHIS_API_ALIAS ) ); $alerts = Ga_Sharethis::load_sharethis_trending_alerts( self::api_client( self::GA_SHARETHIS_API_ALIAS ) ); // Handle invitation result $data = Ga_Helper::handle_url_message( $data ); if ( Ga_Helper::is_wp_old() ) { self::display_api_errors( self::GA_SHARETHIS_API_ALIAS ); } Ga_View_Core::load( 'trending', array( 'data' => $data, 'alerts' => $alerts, 'tooltip' => Ga_Helper::get_tooltip(), 'errors' => self::api_client( self::GA_SHARETHIS_API_ALIAS )->get_errors() ) ); if ( !Ga_Helper::is_wp_old() ) { self::display_api_errors( self::GA_SHARETHIS_API_ALIAS ); } } /** * Prepares and displays plugin's stats page. */ public static function statistics_page_googleanalytics() { if ( !Ga_Helper::is_wp_version_valid() || !Ga_Helper::is_php_version_valid() ) { return false; } $data = self::get_stats_page(); Ga_View_Core::load( 'statistics', array( 'data' => $data ) ); if ( Ga_Cache::is_data_cache_outdated( '', Ga_Helper::get_account_id() ) ) { self::api_client()->add_own_error( '1', _( 'Saved data is shown, it will be refreshed soon' ), 'Ga_Data_Outdated_Exception' ); } self::display_api_errors(); } /** * Prepares and displays plugin's settings page. */ public static function options_page_googleanalytics() { if ( !Ga_Helper::is_wp_version_valid() || !Ga_Helper::is_php_version_valid() ) { return false; } /** * Keeps data to be extracted as variables in the view. * * @var array $data */ $data = array(); $data[ self::GA_WEB_PROPERTY_ID_OPTION_NAME ] = get_option( self::GA_WEB_PROPERTY_ID_OPTION_NAME ); $data[ self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME ] = get_option( self::GA_WEB_PROPERTY_ID_MANUALLY_VALUE_OPTION_NAME ); $data[ self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME ] = get_option( self::GA_WEB_PROPERTY_ID_MANUALLY_OPTION_NAME ); $data[ self::GA_DISABLE_ALL_FEATURES ] = get_option( self::GA_DISABLE_ALL_FEATURES ); $roles = Ga_Helper::get_user_roles(); $saved = json_decode( get_option( self::GA_EXCLUDE_ROLES_OPTION_NAME ), true ); $tmp = array(); if ( !empty( $roles ) ) { foreach ( $roles as $role ) { $role_id = Ga_Helper::prepare_role_id( $role ); $tmp[] = array( 'name' => $role, 'id' => $role_id, 'checked' => (!empty( $saved[ $role_id ] ) && $saved[ $role_id ] === 'on' ) ); } } $data[ 'roles' ] = $tmp; if ( Ga_Helper::is_authorized() ) { $data[ 'ga_accounts_selector' ] = self::get_accounts_selector(); } else { $data[ 'popup_url' ] = self::get_auth_popup_url(); } if ( !empty( $_GET[ 'err' ] ) ) { switch ( $_GET[ 'err' ] ) { case 1: $data[ 'error_message' ] = Ga_Helper::ga_oauth_notice( 'There was a problem with Google Oauth2 authentication process.' ); break; } } Ga_View_Core::load( 'page', array( 'data' => $data, 'tooltip' => Ga_Helper::get_tooltip() ) ); self::display_api_errors(); } /** * Prepares and returns a plugin's URL to be opened in a popup window * during Google authentication process. * * @return mixed */ public static function get_auth_popup_url() { return admin_url( Ga_Helper::create_url( Ga_Helper::GA_SETTINGS_PAGE_URL, array( Ga_Controller_Core::ACTION_PARAM_NAME => 'ga_action_auth' ) ) ); } /** * Prepares and returns Google Account's dropdown code. * * @return string */ public static function get_accounts_selector() { $selected = Ga_Helper::get_selected_account_data(); return Ga_View_Core::load( 'ga_accounts_selector', array( 'selector' => json_decode( get_option( self::GA_ACCOUNT_DATA_OPTION_NAME ), true ), 'selected' => $selected ? implode( "_", $selected ) : null, 'add_manually_enabled' => Ga_Helper::is_code_manually_enabled() || Ga_Helper::is_all_feature_disabled() ), true ); } /** * Adds JS scripts for the settings page. */ public static function enqueue_ga_scripts() { wp_register_script( GA_NAME . '-page-js', GA_PLUGIN_URL . '/js/' . GA_NAME . '_page.js', array( 'jquery' ) ); wp_enqueue_script( GA_NAME . '-page-js' ); } /** * Adds CSS plugin's scripts. */ public static function enqueue_ga_css() { wp_register_style( GA_NAME . '-css', GA_PLUGIN_URL . '/css/' . GA_NAME . '.css', false, null, 'all' ); wp_register_style( GA_NAME . '-additional-css', GA_PLUGIN_URL . '/css/ga_additional.css', false, null, 'all' ); wp_enqueue_style( GA_NAME . '-css' ); wp_enqueue_style( GA_NAME . '-additional-css' ); if ( Ga_Helper::is_wp_old() ) { wp_register_style( GA_NAME . '-old-wp-support-css', GA_PLUGIN_URL . '/css/ga_old_wp_support.css', false, null, 'all' ); wp_enqueue_style( GA_NAME . '-old-wp-support-css' ); } wp_register_style( GA_NAME . '-modal-css', GA_PLUGIN_URL . '/css/ga_modal.css', false, null, 'all' ); wp_enqueue_style( GA_NAME . '-modal-css' ); } /** * Enqueues dashboard JS scripts. */ private static function enqueue_dashboard_scripts() { wp_register_script( GA_NAME . '-dashboard-js', GA_PLUGIN_URL . '/js/' . GA_NAME . '_dashboard.js', array( 'jquery' ) ); wp_enqueue_script( GA_NAME . '-dashboard-js' ); } /** * Enqueues plugin's JS and CSS scripts. */ public static function enqueue_scripts() { if ( Ga_Helper::is_dashboard_page() || Ga_Helper::is_plugin_page() ) { wp_register_script( GA_NAME . '-js', GA_PLUGIN_URL . '/js/' . GA_NAME . '.js', array( 'jquery' ) ); wp_enqueue_script( GA_NAME . '-js' ); wp_register_script( 'googlecharts', 'https://www.gstatic.com/charts/loader.js', null, null, false ); wp_enqueue_script( 'googlecharts' ); self::enqueue_ga_css(); } if ( Ga_Helper::is_dashboard_page() ) { self::enqueue_dashboard_scripts(); } if ( Ga_Helper::is_plugin_page() ) { self::enqueue_ga_scripts(); } } /** * Prepares plugin's statistics page and return HTML code. * * @return string HTML code */ public static function get_stats_page() { $chart = null; $boxes = null; $labels = null; $sources = null; if ( Ga_Helper::is_authorized() && Ga_Helper::is_account_selected() && !Ga_Helper::is_all_feature_disabled() ) { list( $chart, $boxes, $labels, $sources ) = self::generate_stats_data(); } return Ga_Helper::get_chart_page( 'stats', array( 'chart' => $chart, 'boxes' => $boxes, 'labels' => $labels, 'sources' => $sources ) ); } /** * Shows plugin's notice on the admin area. */ public static function admin_notice_googleanalytics() { if ( (!get_option( self::GA_SHARETHIS_TERMS_OPTION_NAME ) && Ga_Helper::is_plugin_page() ) || (!get_option( self::GA_SHARETHIS_TERMS_OPTION_NAME ) && !get_option( self::GA_HIDE_TERMS_OPTION_NAME ) ) ) { $current_url = Ga_Helper::get_current_url(); $url = ( strstr( $current_url, '?' ) ? $current_url . '&' : $current_url . '?' ) . http_build_query( array( Ga_Controller_Core::ACTION_PARAM_NAME => 'ga_action_update_terms' ) ); Ga_View_Core::load( 'ga_notice', array( 'url' => $url ) ); } if ( !empty( $_GET[ 'settings-updated' ] ) && Ga_Helper::is_plugin_page() ) { echo Ga_Helper::ga_wp_notice( _( 'Settings saved' ), self::NOTICE_SUCCESS ); } if ( Ga_Helper::get_option( self::GA_DISABLE_ALL_FEATURES ) ) { echo Ga_Helper::ga_wp_notice( _( 'You have disabled all extra features, click here to enable Dashboards, Viral Alerts and Google API.' ), self::NOTICE_WARNING, false, array( 'url' => admin_url( Ga_Helper::create_url( Ga_Helper::GA_SETTINGS_PAGE_URL, array( Ga_Controller_Core::ACTION_PARAM_NAME => 'ga_action_enable_all_features' ) ) ), 'label' => _( 'Enable' ) ) ); } } /** * Prepare required PHP version warning. * @return string */ public static function admin_notice_googleanalytics_php_version() { echo Ga_Helper::ga_wp_notice( _( 'Cannot use Google Analytics plugin. PHP version ' . phpversion() . ' is to low. Required PHP version: ' . Ga_Helper::PHP_VERSION_REQUIRED ), self::NOTICE_ERROR ); } /** * Prepare required WP version warning * @return string */ public static function admin_notice_googleanalytics_wp_version() { echo Ga_Helper::ga_wp_notice( _( 'Google Analytics plugin requires at least WordPress version ' . self::MIN_WP_VERSION ), self::NOTICE_ERROR ); } /** * Hides plugin's notice */ public static function admin_notice_hide_googleanalytics() { update_option( self::GA_HIDE_TERMS_OPTION_NAME, true ); } /** * Adds GA dashboard widget only for administrators. */ public static function add_dashboard_device_widget() { if ( Ga_Helper::is_administrator() ) { wp_add_dashboard_widget( 'ga_dashboard_widget', __( 'Google Analytics Dashboard' ), 'Ga_Helper::add_ga_dashboard_widget' ); } } /** * Adds plugin's actions */ public static function add_actions() { add_action( 'admin_init', 'Ga_Admin::admin_init_googleanalytics' ); add_action( 'admin_menu', 'Ga_Admin::admin_menu_googleanalytics' ); add_action( 'admin_enqueue_scripts', 'Ga_Admin::enqueue_scripts' ); add_action( 'wp_dashboard_setup', 'Ga_Admin::add_dashboard_device_widget' ); add_action( 'wp_ajax_ga_ajax_data_change', 'Ga_Admin::ga_ajax_data_change' ); add_action( 'admin_notices', 'Ga_Admin::admin_notice_googleanalytics' ); add_action( 'heartbeat_tick', 'Ga_Admin::run_heartbeat_jobs' ); if ( !get_option( self::GA_SHARETHIS_TERMS_OPTION_NAME ) && !get_option( self::GA_HIDE_TERMS_OPTION_NAME ) ) { add_action( 'wp_ajax_googleanalytics_hide_terms', 'Ga_Admin::admin_notice_hide_googleanalytics' ); } } /** * Runs jobs * @param $response * @param $screen_id */ public static function run_heartbeat_jobs( $response, $screen_id = '' ) { if ( Ga_Admin::GA_HEARTBEAT_API_CACHE_UPDATE ) { // Disable cache for ajax request self::api_client()->set_disable_cache( true ); // Try to regenerate cache if needed self::generate_stats_data(); } } /** * Adds plugin's filters */ public static function add_filters() { add_filter( 'plugin_action_links', 'Ga_Admin::ga_action_links', 10, 5 ); } /** * Adds new action links on the plugin list. * * @param $actions * @param $plugin_file * * @return mixed */ public static function ga_action_links( $actions, $plugin_file ) { if ( basename( $plugin_file ) == GA_NAME . '.php' ) { array_unshift( $actions, '<a href="' . esc_url( get_admin_url( null, Ga_Helper::GA_SETTINGS_PAGE_URL ) ) . '">' . _( 'Settings' ) . '</a>' ); } return $actions; } public static function init_oauth() { $code = Ga_Helper::get_option( self::GA_OAUTH_AUTH_CODE_OPTION_NAME ); if ( !Ga_Helper::is_authorized() && !empty( $code ) ) { Ga_Helper::update_option( self::GA_OAUTH_AUTH_CODE_OPTION_NAME, "" ); // Get access token $response = self::api_client()->call( 'ga_auth_get_access_token', $code ); if ( empty( $response ) ) { return false; } $param = ''; if ( !self::save_access_token( $response ) ) { $param = '&err=1'; } else { self::api_client()->set_access_token( $response->getData() ); // Get accounts data $account_summaries = self::api_client()->call( 'ga_api_account_summaries' ); self::save_ga_account_summaries( $account_summaries->getData() ); } wp_redirect( admin_url( Ga_Helper::GA_SETTINGS_PAGE_URL . $param ) ); } } /** * Save access token. * * @param Ga_Lib_Api_Response $response * * @return boolean */ public static function save_access_token( $response, $refresh_token = '' ) { $access_token = $response->getData(); if ( !empty( $access_token ) ) { $access_token[ 'created' ] = time(); } else { return false; } if ( !empty( $refresh_token ) ) { $access_token[ 'refresh_token' ] = $refresh_token; } return update_option( self::GA_OAUTH_AUTH_TOKEN_OPTION_NAME, wp_json_encode( $access_token ) ); } /** * Saves Google Analytics account data. * * @param $data * * @return array */ public static function save_ga_account_summaries( $data ) { $return = array(); if ( !empty( $data[ 'items' ] ) ) { foreach ( $data[ 'items' ] as $item ) { $tmp = array(); $tmp[ 'id' ] = $item[ 'id' ]; $tmp[ 'name' ] = $item[ 'name' ]; if ( is_array( $item[ 'webProperties' ] ) ) { foreach ( $item[ 'webProperties' ] as $property ) { $profiles = array(); if ( is_array( $property[ 'profiles' ] ) ) { foreach ( $property[ 'profiles' ] as $profile ) { $profiles[] = array( 'id' => $profile[ 'id' ], 'name' => $profile[ 'name' ] ); } } $tmp[ 'webProperties' ][] = array( 'webPropertyId' => $property[ 'id' ], 'name' => $property[ 'name' ], 'profiles' => $profiles ); } } $return[] = $tmp; } update_option( self::GA_ACCOUNT_DATA_OPTION_NAME, wp_json_encode( $return ) ); update_option( self::GA_WEB_PROPERTY_ID_OPTION_NAME, "" ); } return $return; } /** * Handle AJAX data for the GA dashboard widget. */ public static function ga_ajax_data_change() { $date_range = !empty( $_POST[ 'date_range' ] ) ? $_POST[ 'date_range' ] : null; $metric = !empty( $_POST[ 'metric' ] ) ? $_POST[ 'metric' ] : null; echo Ga_Helper::get_ga_dashboard_widget_data_json( $date_range, $metric, false, true ); wp_die(); } /** * Displays API error messages. */ public static function display_api_errors( $alias = '' ) { $errors = self::api_client( $alias )->get_errors(); if ( !empty( $errors ) ) { foreach ( $errors as $error ) { echo Ga_Notice::get_message( $error ); } } } /** * Gets dashboard data. * * @return array */ public static function generate_stats_data() { $selected = Ga_Helper::get_selected_account_data( true ); $query_params = Ga_Stats::get_query( 'main_chart', $selected[ 'view_id' ] ); $stats_data = self::api_client()->call( 'ga_api_data', array( $query_params ) ); $boxes_data = self::api_client()->call( 'ga_api_data', array( Ga_Stats::get_query( 'boxes', $selected[ 'view_id' ] ) ) ); $sources_data = self::api_client()->call( 'ga_api_data', array( Ga_Stats::get_query( 'sources', $selected[ 'view_id' ] ) ) ); $chart = !empty( $stats_data ) ? Ga_Stats::get_chart( $stats_data->getData() ) : array(); $boxes = !empty( $boxes_data ) ? Ga_Stats::get_boxes( $boxes_data->getData() ) : array(); $last_chart_date = !empty( $chart ) ? $chart[ 'date' ] : strtotime( 'now' ); unset( $chart[ 'date' ] ); $labels = array( 'thisWeek' => date( 'M d, Y', strtotime( '-6 day', $last_chart_date ) ) . ' - ' . date( 'M d, Y', $last_chart_date ), 'lastWeek' => date( 'M d, Y', strtotime( '-13 day', $last_chart_date ) ) . ' - ' . date( 'M d, Y', strtotime( '-7 day', $last_chart_date ) ) ); $sources = !empty( $sources_data ) ? Ga_Stats::get_sources( $sources_data->getData() ) : array(); return array( $chart, $boxes, $labels, $sources ); } }