settings menu */ add_action('admin_menu', array($this, 'add_to_settings_menu')); } /** * Function to instantiate our class and make it a singleton */ public static function get_instance() { if (!self::$instance) self::$instance = new self; return self::$instance; } /* * Save default settings upon plugin activation */ function add_default_options() { //if options already exists then return early if (get_option($this->option_name)) return; update_option($this->option_name, $this->getDefaultOptions()); } /*Register our settings, using WP setting api*/ function ASGA_admin_init() { register_setting('asga_plugin_options', $this->option_name, array($this, 'ASGA_validate_options')); } /** * Adds a 'Settings' link for this plugin on plugin listing page * * @param $links * @param $file * @return array Links array */ function add_plugin_actions_links($links, $file) { if (current_user_can('manage_options')) { $build_url = add_query_arg('page', $this->plugin_slug, 'options-general.php'); array_unshift( $links, sprintf('%s', $build_url, __('Settings')) ); } return $links; } /* * Adds link to Plugin Option page + do related stuff */ function add_to_settings_menu() { $page_hook_suffix = add_submenu_page('options-general.php', 'Ank Simplified GA', 'Ank Simplified GA', 'manage_options', $this->plugin_slug, array($this, 'ASGA_Options_Page')); /*add help stuff via tab*/ add_action("load-$page_hook_suffix", array($this, 'add_help_menu_tab')); /*we can load additional css/js to our option page here */ } /** * Return all roles plus superAdmin if multi-site is enabled * @return array */ private function getAllRoles() { global $wp_roles; if (!isset($wp_roles)) { $wp_roles = new WP_Roles(); } $role_list = $wp_roles->get_names(); //append a custom role if multi-site is enabled if (is_multisite()) { $role_list['networkAdmin'] = 'Network Admin'; } return $role_list; } /** * Return default options for this plugin * @return array */ private function getDefaultOptions() { $defaults = array( 'plugin_ver' => ASGA_PLUGIN_VER, 'ga_id' => '', 'js_location' => 1, //default to header 'js_priority' => 10, 'log_404' => 0, 'log_search' => 0, 'ua_enabled' => 1, //UA is enabled by default 'displayfeatures' => 0, 'ga_ela' => 0, 'anonymise_ip' => 0, 'ga_domain' => '' ); //store roles as well foreach ($this->getAllRoles() as $role => $role_info) { $defaults = array_merge($defaults, array('ignore_role_' . $role => 0)); } return $defaults; } /** * Callback Function to handle and validate the form data * * @param array $in - POST array * @returns array - Validated array */ function ASGA_validate_options($in) { $out = array(); //always store plugin version to db $out['plugin_ver'] = ASGA_PLUGIN_VER; //start handle form data // Get the actual tracking ID if (preg_match('#UA-[\d-]+#', (string)$in['ga_id'], $matches)) $out['ga_id'] = $matches[0]; else $out['ga_id'] = ''; //warn user that the entered id is not valid if (empty($out['ga_id'])) { add_settings_error($this->option_name, 'ga_id', 'Your GA tracking ID seems invalid. Please check.'); } $out['js_location'] = absint($in['js_location']); $out['js_priority'] = ($in['js_priority']=='') ? 10 : absint($in['js_priority']); $out['ga_domain'] = esc_attr($in['ga_domain']); $checkbox_items = array('ua_enabled', 'anonymise_ip', 'displayfeatures', 'ga_ela', 'log_404', 'log_search'); foreach ($this->getAllRoles() as $role => $role_info) { $checkbox_items[] = 'ignore_role_' . $role; } foreach ($checkbox_items as $checkbox_item) { if (isset($in[$checkbox_item]) && '1' == $in[$checkbox_item]) $out[$checkbox_item] = 1; else $out[$checkbox_item] = 0; } return $out; } /** * Function will print our option page form * @initiated by add_submenu_page */ function ASGA_Options_Page() { if (!current_user_can('manage_options')) { wp_die(__('You do not have sufficient permissions to access this page.')); } ?>

Ank Simplified GA (v)

option_name); //if options not exists in db then init with defaults , also always append default options to existing options $options = empty($options) ? $this->getDefaultOptions() : $options + $this->getDefaultOptions(); //wp inbuilt nonce field etc settings_fields('asga_plugin_options'); ?>
Google Analytics tracking ID:

Paste your Google Analytics tracking ID (e.g. "UA-XXXXXX-X")

Enable Universal GA:

Un-check this, If you are using Classic GA . OR upgrade.

Set domain: %s

',get_blogaddress_by_id(get_current_blog_id())) ; } ?>
Enable Display Advertising :
Enhanced Link Attribution :
Anonymize IP's:
Code Location:
Action Priority:

0 means highest priority, default is 10

Disable Tracking when : getAllRoles() as $id => $label) { echo '
'; } ?>
Event Tracking: 'Log 404 errors as events', 'log_search' => 'Log searched items' ); //loop through array foreach ($events as $event => $label) { echo '
'; } ?>

Developed by- Ankur Kumar | Fork on GitHub

Showing Debugging Info:
'; var_dump($options); echo '


'; }?> add_help_tab( array( 'id' => 'asga-overview', 'title' => 'Basic', 'content' => '

Do you have a Google Analytics Account ?
' . 'In order to use this plugin you need to have a Google Analytics Account. Create an account here. It is FREE.
' . 'How do i find my Google Analytics ID ?
' . 'Please check out this link
' . 'How do i view my stats ?
' . 'Login to Google Analytics Account with your G-Mail ID to view stats.' . '

' ) ); $curr_screen->add_help_tab( array( 'id' => 'asga-troubleshoot', 'title' => 'Troubleshoot', 'content' => '

Things to remember
' . '

' ) ); $curr_screen->add_help_tab( array( 'id' => 'asga-more-info', 'title' => 'More', 'content' => '

Need more information ?
' . 'A brief FAQ is available to solve your common issues, ' . 'click here for more.
' . 'Support is only available on WordPress Forums, click here to ask anything about this plugin.
' . 'You can also browse the source code of this plugin on GitHub. ' . '

' ) ); /*add a help sidebar with links */ $curr_screen->set_help_sidebar( '

Quick Links

' . '

Plugin FAQ

' . '

Plugin Home

' ); } } //end class