From e6e06e647b34ff5b36923d40206c17b50bf5e41e Mon Sep 17 00:00:00 2001 From: E Camden Fisher Date: Tue, 9 Sep 2014 13:38:37 -0400 Subject: [PATCH] add support for google enhanced link attribution --- serendipity_event_google_analytics/ChangeLog | 6 ++++++ .../lang_en.inc.php | 2 ++ .../serendipity_event_google_analytics.php | 21 +++++++++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/serendipity_event_google_analytics/ChangeLog b/serendipity_event_google_analytics/ChangeLog index 01c09e93..e585a57b 100644 --- a/serendipity_event_google_analytics/ChangeLog +++ b/serendipity_event_google_analytics/ChangeLog @@ -1,4 +1,10 @@ +1.4.0 (fishnix): +----- +# add enhanced link attribution option +# changed link to kleinerChemiker's github since the blog seems gone + 1.3.0: +----- # added tracking for Google AdSense # memo for myself: correct version number scheme: major release number -> plugin rewrite, minor release number -> new feature, patch level -> bug fix diff --git a/serendipity_event_google_analytics/lang_en.inc.php b/serendipity_event_google_analytics/lang_en.inc.php index 031575e0..93090f1c 100644 --- a/serendipity_event_google_analytics/lang_en.inc.php +++ b/serendipity_event_google_analytics/lang_en.inc.php @@ -18,3 +18,5 @@ @define('PLUGIN_EVENT_GOOGLE_ANALYTICS_INTERNAL_HOSTS_DESC', 'One host per line (www.example.net).'); @define('PLUGIN_EVENT_GOOGLE_ANALYTICS_EXCLUDE_GROUPS', 'Which usergroups should not be tracked?'); @define('PLUGIN_EVENT_GOOGLE_ANALYTICS_EXCLUDE_GROUPS_DESC', 'Select group(s) from list.'); +@define('PLUGIN_EVENT_GOOGLE_ANALYTICS_ENH_LINK_ATTR', 'Enhanced link attribution?'); +@define('PLUGIN_EVENT_GOOGLE_ANALYTICS_ENH_LINK_ATTR_DESC', 'https://support.google.com/analytics/answer/2558867?hl=en&utm_id=ad'); diff --git a/serendipity_event_google_analytics/serendipity_event_google_analytics.php b/serendipity_event_google_analytics/serendipity_event_google_analytics.php index af002f43..defd18d5 100644 --- a/serendipity_event_google_analytics/serendipity_event_google_analytics.php +++ b/serendipity_event_google_analytics/serendipity_event_google_analytics.php @@ -20,8 +20,8 @@ class serendipity_event_google_analytics extends serendipity_event { $propbag->add ('name', PLUGIN_EVENT_GOOGLE_ANALYTICS_NAME); $propbag->add ('description', PLUGIN_EVENT_GOOGLE_ANALYTICS_DESC); $propbag->add ('stackable', false); - $propbag->add ('author', 'kleinerChemiker'); - $propbag->add ('version', '1.3.0'); + $propbag->add ('author', 'kleinerChemiker'); + $propbag->add ('version', '1.4.0'); $propbag->add ('requirements', array ('serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add ('groups', array ('STATISTICS' )); $propbag->add ('cachable_events', array ('frontend_display' => true )); @@ -38,6 +38,7 @@ class serendipity_event_google_analytics extends serendipity_event { $conf_array[] = 'analytics_download_extensions'; $conf_array[] = 'analytics_internal_hosts'; $conf_array[] = 'analytics_exclude_groups'; + $conf_array[] = 'analytics_enh_link_attr'; foreach ( $this->markup_elements as $element ) { $conf_array[] = $element['name']; @@ -90,6 +91,12 @@ class serendipity_event_google_analytics extends serendipity_event { $propbag->add ('description', PLUGIN_EVENT_GOOGLE_ANALYTICS_DOWNLOAD_EXTENSIONS_DESC); $propbag->add ('default', 'zip,rar'); break; + case 'analytics_enh_link_attr' : + $propbag->add ('type', 'boolean'); + $propbag->add ('name', PLUGIN_EVENT_GOOGLE_ANALYTICS_ENH_LINK_ATTR); + $propbag->add ('description', PLUGIN_EVENT_GOOGLE_ANALYTICS_ENH_LINK_ATTR_DESC); + $propbag->add ('default', 'false'); + break; case 'analytics_exclude_groups' : $_groups = & serendipity_getAllGroups (); if (is_array ($_groups)) { @@ -194,6 +201,7 @@ class serendipity_event_google_analytics extends serendipity_event { static $analytics_track_adsense = null; static $analytics_track_external = null; static $analytics_track_downloads = null; + static $analytics_enh_link_attr = null; static $analytics_exclude_groups = null; static $usergroup = false; $hooks = &$bag->get ('event_hooks'); @@ -214,6 +222,10 @@ class serendipity_event_google_analytics extends serendipity_event { $analytics_track_external = serendipity_db_bool ($this->get_config ('analytics_track_external', true)); } + if ($analytics_enh_link_attr === null) { + $analytics_enh_link_attr = serendipity_db_bool ($this->get_config ('analytics_enh_link_attr', false)); + } + if ($analytics_exclude_groups === null) { $analytics_exclude_groups = explode ("^", $this->get_config ('analytics_exclude_groups', true)); if (!empty ($analytics_exclude_groups)) { @@ -232,14 +244,15 @@ class serendipity_event_google_analytics extends serendipity_event { if (isset ($hooks[$event])) { switch ($event) { case 'frontend_header' : + $analytics_enh_link_attr ? $analytics_enh_link_attr_code = "var pluginUrl = '//www.google-analytics.com/plugins/ga/inpage_linkid.js'; _gaq.push(['_require', 'inpage_linkid', pluginUrl]);" : $analytics_enh_link_attr_code = ''; $analytics_anonymizeIp ? $analytics_anonymizeIp_code = "_gaq.push(['_gat._anonymizeIp']);\r " : $analytics_anonymizeIp_code = ''; $analytics_track_adsense ? $analytics_track_adsense_code = "\r\r" : $analytics_track_adsense_code = ''; if ($serendipity['authorid'] === null || !$this->in_array_loop ($usergroup, $analytics_exclude_groups)) { echo $analytics_track_adsense_code; echo '