WordPress.org

Plugin Directory

Changeset 1698512


Ignore:
Timestamp:
07/19/17 00:48:21 (5 months ago)
Author:
themeblvd
Message:

1.1.0

Location:
simple-analytics
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • simple-analytics/trunk/readme.txt

    r1246231 r1698512  
    11=== Simple Analytics === 
    2 Author URI: http://www.jasonbobich.com 
     2 
     3Author URI: http://themeblvd.com 
    34Contributors: themeblvd 
    45Tags: google, analytics, tracking, Theme Blvd, themeblvd, Jason Bobich 
    5 Stable Tag: 1.0.3 
     6Stable Tag: 1.1.0 
    67 
    78A simple plugin to include your Google Analytics tracking. 
     
    19203. Go to *Settings > Analytics* to configure. 
    2021 
    21 *Note: Tracking code will not be inserted for the logged-in admin user.* 
     22*Note: Tracking code will not be active for the logged-in admin user.* 
    2223 
    2324== Screenshots == 
     
    2627 
    2728== Changelog == 
     29 
     30= 1.1.0 = 
     31 
     32* New: To avoid confusion, instead of *not* outputting analytics code in website source for the logged-in admin user, it is now outputted but commented out with explanation. 
     33* New: Added option to [anonymize IP's](https://support.google.com/analytics/answer/2763052). 
    2834 
    2935= 1.0.3 = 
  • simple-analytics/trunk/simple-analytics.php

    r1246231 r1698512  
    11<?php 
    2 /* 
    3 Plugin Name: Simple Analytics 
    4 Description: A simple plugin to include your Google Analytics tracking. 
    5 Version: 1.0.3 
    6 Author: Theme Blvd 
    7 Author URI: http://themeblvd.com 
    8 License: GPL2 
    9  
    10     Copyright 2015  Theme Blvd 
    11  
    12     This program is free software; you can redistribute it and/or modify 
    13     it under the terms of the GNU General Public License version 2, 
    14     as published by the Free Software Foundation. 
    15  
    16     You may NOT assume that you can use any other version of the GPL. 
    17  
    18     This program is distributed in the hope that it will be useful, 
    19     but WITHOUT ANY WARRANTY; without even the implied warranty of 
    20     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
    21     GNU General Public License for more details. 
    22  
    23     The license for this software can likely be found here: 
    24     http://www.gnu.org/licenses/gpl-2.0.html 
    25  
    26 */ 
    27  
    28 define( 'TB_SIMPLE_ANALYTICS_PLUGIN_VERSION', '1.0.3' ); 
     2/** 
     3 * Plugin Name: Simple Analytics 
     4 * Description: A simple plugin to include your Google Analytics tracking. 
     5 * Version: 1.1.0 
     6 * Author: Theme Blvd 
     7 * Author URI: http://themeblvd.com 
     8 * License: GPL2 
     9 * 
     10 * Copyright 2017  Theme Blvd 
     11 * 
     12 * This program is free software; you can redistribute it and/or modify 
     13 * it under the terms of the GNU General Public License version 2, 
     14 * as published by the Free Software Foundation. 
     15 * 
     16 * You may NOT assume that you can use any other version of the GPL. 
     17 * 
     18 * This program is distributed in the hope that it will be useful, 
     19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
     20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     21 * GNU General Public License for more details. 
     22 * 
     23 * The license for this software can likely be found here: 
     24 * http://www.gnu.org/licenses/gpl-2.0.html 
     25 * 
     26 * @package Simple Analytics 
     27 */ 
     28 
     29define( 'TB_SIMPLE_ANALYTICS_PLUGIN_VERSION', '1.1.0' ); 
    2930define( 'TB_SIMPLE_ANALYTICS_TWEEPLE_PLUGIN_DIR', dirname( __FILE__ ) ); 
    3031define( 'TB_SIMPLE_ANALYTICS_PLUGIN_URI', plugins_url( '' , __FILE__ ) ); 
     
    3637class Theme_Blvd_Simple_Analytics { 
    3738 
    38     /** 
    39      * Only instance of object. 
    40      */ 
    41     private static $instance = null; 
    42  
    43     /** 
    44      * Creates or returns an instance of this class. 
    45      * 
    46      * @since 1.0.0 
    47      * 
    48      * @return  Theme_Blvd_Simple_Analytics A single instance of this class. 
    49      */ 
    50     public static function get_instance() { 
    51         if( self::$instance == null ) { 
    52             self::$instance = new self; 
    53         } 
    54         return self::$instance; 
    55     } 
    56  
    57     /** 
    58      * Initiate plugin. 
    59      * 
    60      * @since 1.0.0 
    61      */ 
    62     private function __construct() { 
    63  
    64         // Output Analytics 
    65         if ( ! is_admin() && ! current_user_can( 'edit_theme_options' ) ) { 
    66             add_action( 'after_setup_theme', array( $this, 'add_output' ) ); 
    67         } 
    68  
    69         // Settings page 
    70         add_action( 'admin_menu', array( $this, 'admin_menu' ) ); 
    71         add_action( 'admin_init', array( $this, 'admin_init' ) ); 
    72  
    73     } 
    74  
    75     /** 
    76      * Hook in output to cofigured action 
    77      * 
    78      * @since 1.0.2 
    79      */ 
    80     public function add_output() { 
    81  
    82         $analytics = get_option( 'themeblvd_analytics' ); 
    83  
    84         if ( $analytics && isset( $analytics['placement'] ) ) { 
    85  
    86             if ( defined('TB_FRAMEWORK_VERSION') && $analytics['placement'] == 'body' ) { 
    87                 add_action( 'themeblvd_before', array( $this, 'output' ), 2 ); 
    88             } else if ( $analytics['placement'] == 'foot' ) { 
    89                 add_action( 'wp_footer', array( $this, 'output' ), 1000 ); 
    90             } else { 
    91                 add_action( 'wp_head', array( $this, 'output' ), 2 ); 
    92             } 
    93  
    94         } 
    95     } 
    96  
    97     /** 
    98      * Output analytics 
    99      * 
    100      * @since 1.0.0 
    101      */ 
    102     public function output() { 
    103  
    104         $analytics = get_option( 'themeblvd_analytics' ); 
    105  
    106         if ( ! empty( $analytics['google_id'] ) ) : 
     39    /** 
     40     * Only instance of object. 
     41     * 
     42     * @var Theme_Blvd_Simple_Analytics 
     43     */ 
     44    private static $instance = null; 
     45 
     46    /** 
     47     * Creates or returns an instance of this class. 
     48     * 
     49     * @since 1.0.0 
     50     * 
     51     * @return  Theme_Blvd_Simple_Analytics A single instance of this class. 
     52     */ 
     53    public static function get_instance() { 
     54 
     55        if ( null === self::$instance ) { 
     56 
     57            self::$instance = new self; 
     58 
     59        } 
     60 
     61        return self::$instance; 
     62 
     63    } 
     64 
     65    /** 
     66     * Initiate plugin. 
     67     * 
     68     * @since 1.0.0 
     69     */ 
     70    private function __construct() { 
     71 
     72        // Output Analytics. 
     73        if ( ! is_admin() ) { 
     74 
     75            add_action( 'after_setup_theme', array( $this, 'add_output' ) ); 
     76 
     77        } 
     78 
     79        // Settings page. 
     80        add_action( 'admin_menu', array( $this, 'admin_menu' ) ); 
     81        add_action( 'admin_init', array( $this, 'admin_init' ) ); 
     82 
     83    } 
     84 
     85    /** 
     86     * Hook in output to cofigured action 
     87     * 
     88     * @since 1.0.2 
     89     */ 
     90    public function add_output() { 
     91 
     92        $analytics = get_option( 'themeblvd_analytics' ); 
     93 
     94        if ( $analytics && isset( $analytics['placement'] ) ) { 
     95 
     96            if ( defined( 'TB_FRAMEWORK_VERSION' ) && 'body' === $analytics['placement'] ) { 
     97 
     98                add_action( 'themeblvd_before', array( $this, 'output' ), 2 ); 
     99 
     100            } elseif ( 'foot' === $analytics['placement'] ) { 
     101 
     102                add_action( 'wp_footer', array( $this, 'output' ), 1000 ); 
     103 
     104            } else { 
     105 
     106                add_action( 'wp_head', array( $this, 'output' ), 2 ); 
     107 
     108            } 
     109        } 
     110    } 
     111 
     112    /** 
     113     * Output analytics. 
     114     * 
     115     * @since 1.0.0 
     116     */ 
     117    public function output() { 
     118 
     119        $settings = get_option( 'themeblvd_analytics' ); 
     120 
     121        if ( ! empty( $settings['google_id'] ) ) { 
     122 
     123            echo "<!-- Simple Analytics by Theme Blvd -->\n"; 
     124 
     125            if ( current_user_can( 'edit_theme_options' ) ) { 
     126 
     127                echo '<!-- ' . esc_html__( 'Analytics code commented out because you are logged in as an admin.', 'simple-analytics' ) . "\n"; 
     128 
     129            } 
    107130?> 
    108 <!-- Simple Analytics by Theme Blvd --> 
    109131<script> 
    110     (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
    111     (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
    112     m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
    113     })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 
    114  
    115     ga('create', '<?php echo esc_attr( $analytics['google_id'] ); ?>', 'auto'); 
    116     ga('send', 'pageview'); 
     132 
     133    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 
     134        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 
     135        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 
     136    })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 
     137 
     138    ga('create', '<?php echo esc_attr( $settings['google_id'] ); ?>', 'auto'); 
     139    ga('send', 'pageview'); 
     140    <?php 
     141    if ( ! empty( $settings['anonymize'] ) ) { 
     142 
     143        echo "ga('set', 'anonymizeIp', true);\n"; 
     144 
     145    } 
     146    ?> 
    117147 
    118148</script> 
    119149<?php 
    120         endif; // end if $analytics['google_id'] ) 
    121  
    122     } 
    123  
    124     /** 
    125      * Add settings page 
    126      * 
    127      * @since 1.0.0 
    128      */ 
    129     public function admin_menu() { 
    130         add_options_page( __('Analytics', 'simple-analytics'), __('Analytics', 'simple-analytics'), 'edit_theme_options', 'simple-analytics', array( $this, 'settings_page' ) ); 
    131     } 
    132  
    133     /** 
    134      * Register settings 
    135      * 
    136      * @since 1.0.0 
    137      */ 
    138     public function admin_init() { 
    139         register_setting( 'themeblvd_analytics', 'themeblvd_analytics', array( $this, 'sanitize' ) ); 
    140     } 
    141  
    142     /** 
    143      * Sanitization callback for saving settings 
    144      * 
    145      * @since 1.0.0 
    146      */ 
    147     public function sanitize( $input ) { 
    148  
    149         global $allowedposttags; 
    150         $allowed_tags = array_merge( $allowedposttags, array( 'script' => array( 'type' => true, 'src' => true ) ) ); 
    151  
    152         $output = array(); 
    153  
    154         foreach ( $input as $key => $value ) { 
    155  
    156             switch ( $key ) { 
    157  
    158                 case 'google_id' : 
    159                     $output[$key] = esc_attr( $value ); 
    160                     break; 
    161  
    162                 case 'placement' : 
    163                     $choices = array( 'head', 'body', 'foot' ); 
    164                     if ( in_array( $value, $choices ) ) { 
    165                         $output[$key] = $value; 
    166                     } else { 
    167                         $output[$key] = $choices[0]; 
    168                     } 
    169                     break; 
    170  
    171             } 
    172  
    173         } 
    174  
    175         return $output; 
    176  
    177     } 
    178  
    179     /** 
    180      * Display settings page 
    181      * 
    182      * @since 1.0.0 
    183      */ 
    184     public function settings_page() { 
    185  
    186         // Setup current settings 
    187         $settings = get_option( 'themeblvd_analytics' ); 
    188  
    189         $code = ''; 
    190         if ( isset( $settings['google_id'] ) ) { 
    191             $code = $settings['google_id']; 
    192         } 
    193  
    194         $placement = 'body'; 
    195  
    196         if ( isset( $settings['placement'] ) ) { 
    197             $placement = $settings['placement']; 
    198         } 
    199  
    200         if ( $placement == 'body' && ! defined('TB_FRAMEWORK_VERSION') ) { 
    201             $placement = 'head'; 
    202         } 
    203  
    204         ?> 
    205         <div class="wrap"> 
    206  
    207             <?php settings_errors( 'themeblvd_analytics' ); ?> 
    208  
    209             <div id="icon-options-general" class="icon32"><br></div> 
    210             <h2><?php _e('Analytics', 'simple-analytics'); ?></h2> 
    211  
    212             <form method="POST" action="options.php"> 
    213  
    214                 <?php settings_fields( 'themeblvd_analytics' ); ?> 
    215  
    216                 <table class="form-table"> 
    217                     <tbody> 
    218                         <tr valign="top"> 
    219                             <th scope="row"> 
    220                                 <label for="themeblvd_analytics[code]"><?php _e('Google Tracking ID', 'simple-analytics'); ?></label> 
    221                             </th> 
    222                             <td> 
    223                                 <input name="themeblvd_analytics[google_id]" type="text" class="regular-text" value="<?php echo $code; ?>" /> 
    224                                 <p class="description"><?php _e('Input your Google Analytics "Tracking ID"<br />Example: UA-12345678-9', 'simple-analytics'); ?></p> 
    225                             </td> 
    226                         </tr> 
    227                         <tr valign="top"> 
    228                             <th scope="row"> 
    229                                 <label for="themeblvd_analytics[placement]"><?php _e('Analytics Placement', 'simple-analytics'); ?></label> 
    230                             </th> 
    231                             <td> 
    232                                 <fieldset> 
    233                                     <label> 
    234                                         <input type="radio" name="themeblvd_analytics[placement]" value="head" <?php checked( 'head', $placement ); ?>> <span><?php _e('Include within <code>&lt;head&gt;</code> tag.', 'simple-analytics'); ?></span> 
    235                                     </label><br> 
    236                                     <?php if ( defined('TB_FRAMEWORK_VERSION') ) : // Only Theme Blvd theme will have an action hook for this ?> 
    237                                         <label> 
    238                                             <input type="radio" name="themeblvd_analytics[placement]" value="body" <?php checked( 'body', $placement ); ?>> <span><?php _e('Include immediately after the opening <code>&lt;body&gt;</code> tag.', 'simple-analytics'); ?></span> 
    239                                         </label><br> 
    240                                     <?php endif; ?> 
    241                                     <label> 
    242                                         <input type="radio" name="themeblvd_analytics[placement]" value="foot" <?php checked( 'foot', $placement ); ?>> <span><?php _e('Include before closing <code>&lt;/body&gt;</code> tag.', 'simple-analytics'); ?></span> 
    243                                     </label><br> 
    244                                 </fieldset> 
    245                             </td> 
    246                         </tr> 
    247                     </tbody> 
    248                 </table> 
    249  
    250                 <?php submit_button(); ?> 
    251  
    252             </form> 
    253  
    254         </div><!-- .wrap (end) --> 
    255         <?php 
    256  
    257     } 
     150            if ( current_user_can( 'edit_theme_options' ) ) { 
     151 
     152                echo "-->\n"; 
     153 
     154            } 
     155        } 
     156    } 
     157 
     158    /** 
     159     * Add settings page. 
     160     * 
     161     * @since 1.0.0 
     162     */ 
     163    public function admin_menu() { 
     164 
     165        add_options_page( 
     166            __( 'Analytics', 'simple-analytics' ), 
     167            __( 'Analytics', 'simple-analytics' ), 
     168            'edit_theme_options', 
     169            'simple-analytics', 
     170            array( $this, 'settings_page' ) 
     171        ); 
     172 
     173    } 
     174 
     175    /** 
     176     * Register settings. 
     177     * 
     178     * @since 1.0.0 
     179     */ 
     180    public function admin_init() { 
     181 
     182        register_setting( 
     183            'themeblvd_analytics', 
     184            'themeblvd_analytics', 
     185            array( $this, 'sanitize' ) 
     186        ); 
     187 
     188    } 
     189 
     190    /** 
     191     * Sanitization callback for saving settings. 
     192     * 
     193     * @since 1.0.0 
     194     * 
     195     * @param array $input Data from settings page to sanitized. 
     196     * @return array $output Data from settings page after sanitization. 
     197     */ 
     198    public function sanitize( $input ) { 
     199 
     200        global $allowedposttags; 
     201 
     202        $allowed_tags = array_merge( $allowedposttags, array( 'script' => array( 'type' => true, 'src' => true ) ) ); 
     203 
     204        $output = array( 
     205            'google_id' => '', 
     206            'placement' => 'body', 
     207            'anonymize' => false, 
     208        ); 
     209 
     210        foreach ( $input as $key => $value ) { 
     211 
     212            switch ( $key ) { 
     213 
     214                case 'google_id' : 
     215 
     216                    $output[ $key ] = esc_attr( $value ); 
     217 
     218                    break; 
     219 
     220                case 'placement' : 
     221 
     222                    $choices = array( 'head', 'body', 'foot' ); 
     223 
     224                    if ( in_array( $value, $choices, true ) ) { 
     225 
     226                        $output[ $key ] = $value; 
     227 
     228                    } 
     229 
     230                    break; 
     231 
     232                case 'anonymize' : 
     233 
     234                    if ( '1' === $value ) { 
     235 
     236                        $output[ $key ] = true; 
     237 
     238                    } 
     239 
     240                    break; 
     241 
     242            } 
     243        } 
     244 
     245        return $output; 
     246 
     247    } 
     248 
     249    /** 
     250     * Display settings page. 
     251     * 
     252     * @since 1.0.0 
     253     */ 
     254    public function settings_page() { 
     255 
     256        $settings = get_option( 'themeblvd_analytics' ); 
     257 
     258        $code = ''; 
     259 
     260        if ( isset( $settings['google_id'] ) ) { 
     261 
     262            $code = $settings['google_id']; 
     263 
     264        } 
     265 
     266        $placement = 'body'; 
     267 
     268        if ( isset( $settings['placement'] ) ) { 
     269 
     270            $placement = $settings['placement']; 
     271 
     272        } 
     273 
     274        if ( 'body' === $placement && ! defined( 'TB_FRAMEWORK_VERSION' ) ) { 
     275 
     276            $placement = 'head'; 
     277 
     278        } 
     279 
     280        $anonymize = false; 
     281 
     282        if ( isset( $settings['anonymize'] ) ) { 
     283 
     284            $anonymize = $settings['anonymize']; 
     285 
     286        } 
     287        ?> 
     288        <div class="wrap"> 
     289 
     290            <?php settings_errors( 'themeblvd_analytics' ); ?> 
     291 
     292            <div id="icon-options-general" class="icon32"><br></div> 
     293 
     294            <h2><?php esc_html_e( 'Analytics', 'simple-analytics' ); ?></h2> 
     295 
     296            <form method="POST" action="options.php"> 
     297 
     298                <?php settings_fields( 'themeblvd_analytics' ); ?> 
     299 
     300                <table class="form-table"> 
     301                    <tbody> 
     302                        <tr> 
     303                            <th scope="row"> 
     304                                <label for="themeblvd_analytics[code]"><?php esc_html_e( 'Google Tracking ID', 'simple-analytics' ); ?></label> 
     305                            </th> 
     306                            <td> 
     307                                <input name="themeblvd_analytics[google_id]" type="text" class="regular-text" value="<?php echo esc_attr( $code ); ?>" /> 
     308                                <p class="description"><?php echo esc_html__( 'Input your Google Analytics "Tracking ID"', 'simple-analytics' ) . '<br>' . esc_html__( 'Example: UA-12345678-9', 'simple-analytics' ); ?></p> 
     309                            </td> 
     310                        </tr> 
     311                        <tr> 
     312                            <th scope="row"> 
     313                                <label for="themeblvd_analytics[placement]"><?php esc_html_e( 'Analytics Placement', 'simple-analytics' ); ?></label> 
     314                            </th> 
     315                            <td> 
     316                                <fieldset> 
     317                                    <label> 
     318                                        <input type="radio" name="themeblvd_analytics[placement]" value="head" <?php checked( 'head', $placement ); ?>> <span><?php printf( esc_html__( 'Include within %s tag.', 'simple-analytics' ), '<code>&lt;head&gt;</code>' ); ?></span> 
     319                                    </label><br> 
     320                                    <?php if ( defined( 'TB_FRAMEWORK_VERSION' ) ) : // Only Theme Blvd theme will have an action hook for this. ?> 
     321                                        <label> 
     322                                            <input type="radio" name="themeblvd_analytics[placement]" value="body" <?php checked( 'body', $placement ); ?>> <span><?php printf( esc_html__( 'Include immediately after the opening %s tag.', 'simple-analytics' ), '<code>&lt;body&gt;</code>' ); ?></span> 
     323                                        </label><br> 
     324                                    <?php endif; ?> 
     325                                    <label> 
     326                                        <input type="radio" name="themeblvd_analytics[placement]" value="foot" <?php checked( 'foot', $placement ); ?>> <span><?php printf( esc_html__( 'Include before closing %s tag.', 'simple-analytics' ), '<code>&lt;/body&gt;</code>' ); ?></span> 
     327                                    </label><br> 
     328                                </fieldset> 
     329                            </td> 
     330                        </tr> 
     331                        <tr> 
     332                            <th scope="row"> 
     333                                <label for="themeblvd_analytics[code]"><?php esc_html_e( 'IP Anonymization', 'simple-analytics' ); ?></label> 
     334                            </th> 
     335                            <td> 
     336                                <fieldset> 
     337                                    <legend class="screen-reader-text"> 
     338                                        <span>IP Anonymization</span> 
     339                                    </legend> 
     340                                    <label> 
     341                                        <input name="themeblvd_analytics[anonymize]" type="checkbox" value="1" <?php checked( true, $anonymize ); ?>> 
     342                                        <?php esc_html_e( 'Anonymize IP addresses in tracking code.', 'simple-analytics' ); ?> 
     343                                    </label> 
     344                                </fieldset> 
     345                            </td> 
     346                        </tr> 
     347                    </tbody> 
     348                </table> 
     349 
     350                <?php submit_button(); ?> 
     351 
     352            </form> 
     353 
     354        </div><!-- .wrap (end) --> 
     355        <?php 
     356 
     357    } 
    258358} 
    259359 
     
    264364 */ 
    265365function themeblvd_simple_analytics_init() { 
    266     Theme_Blvd_Simple_Analytics::get_instance(); 
     366 
     367    Theme_Blvd_Simple_Analytics::get_instance(); 
     368 
    267369} 
    268370add_action( 'plugins_loaded', 'themeblvd_simple_analytics_init' ); 
     
    274376 */ 
    275377function themeblvd_simple_analytics_textdomain() { 
    276     load_plugin_textdomain('simple-analytics'); 
     378 
     379    load_plugin_textdomain( 'simple-analytics' ); 
     380 
    277381} 
    278382add_action( 'init', 'themeblvd_simple_analytics_textdomain' ); 
Note: See TracChangeset for help on using the changeset viewer.