From 7360ccafe7b9d76493b4d2c5a76d70d6dd2c3c00 Mon Sep 17 00:00:00 2001 From: Klaus Weidenbach Date: Sun, 19 Feb 2012 10:17:38 +0100 Subject: [PATCH] Asynchronous tracking code for Piwik. Add an option to use asynchronous tracking code for Piwik: http://piwik.org/docs/javascript-tracking/#toc-asynchronous-tracking Fixed a small bug with the trailing slash in the traditional tracking code in the noscript part. Changed visible occurances piwik --> Piwik. Add help text for baseurl. --- piwik/README | 17 +++++++----- piwik/admin.tpl | 1 + piwik/piwik.php | 69 ++++++++++++++++++++++++++++--------------------- 3 files changed, 51 insertions(+), 36 deletions(-) diff --git a/piwik/README b/piwik/README index d5060d0b..eefd1cf9 100755 --- a/piwik/README +++ b/piwik/README @@ -3,7 +3,7 @@ by Tobias Diekershoff tobias.diekershoff(at)gmx.net This addon allows you to embed the code necessary for the FLOSS webanalytics -tool piwik into the Friendica pages. +tool Piwik into the Friendica pages. Online version of this Document: http://ur1.ca/35m2x @@ -20,17 +20,18 @@ ___ Configuration ___ Open the .htconfig.php file and add "piwik" to the list of activated addons. $a->config['system']['addon'] = "piwik, ..." -You have to add 3 more configuration variables for the addon: -$a->config['piwik']['baseurl'] = 'example.com/piwik/'; -$a->config['piwik']['sideid'] = '1'; -$a->config['piwik']['optout'] = true; +You have to add 4 more configuration variables for the addon: + $a->config['piwik']['baseurl'] = 'example.com/piwik/'; + $a->config['piwik']['sideid'] = '1'; + $a->config['piwik']['optout'] = true; + $a->config['piwik']['async'] = false; -The *baseurl* points to your piwik installation. Use the absolute path, +The *baseurl* points to your Piwik installation. Use the absolute path, remember trailing slashes but ignore the protocol (http/s) part of the URL. Change the *sideid* parameter to whatever ID you want to use for tracking your Friendica installation. The *optout* parameter (true|false) defines whether or -not a short notice about the utilization of piwik will be displayed on every +not a short notice about the utilization of Piwik will be displayed on every page of your Friendica site (at the bottom of the page with some spacing to the other content). Part of the note is a link that allows the visitor to set an _opt-out_ cookie which will prevent visits from that user be tracked by piwik. @@ -41,3 +42,5 @@ Currently the optional notice states the following: that your visits are logged this way you can set a cookie to prevent Piwik from tracking further visits of the site (opt-out). +The *async* parameter (true|false) defines whether or not to use asynchronous +tracking so pages load (or appear to load) faster. diff --git a/piwik/admin.tpl b/piwik/admin.tpl index 0edd0621..e57758a9 100755 --- a/piwik/admin.tpl +++ b/piwik/admin.tpl @@ -1,4 +1,5 @@ {{ inc field_input.tpl with $field=$baseurl }}{{ endinc }} {{ inc field_input.tpl with $field=$siteid }}{{ endinc }} {{ inc field_checkbox.tpl with $field=$optout }}{{ endinc }} +{{ inc field_checkbox.tpl with $field=$async }}{{ endinc }}
diff --git a/piwik/piwik.php b/piwik/piwik.php index 5a46cdb3..dbb1f45a 100755 --- a/piwik/piwik.php +++ b/piwik/piwik.php @@ -2,24 +2,25 @@ /** * Name: Piwik Analytics * Description: Piwik Analytics Plugin for Friendica - * Version: 1.0 + * Version: 1.1 * Author: Tobias Diekershoff + * Author: Klaus Weidenbach */ - /* Piwik Analytics Plugin for Friendica * * Author: Tobias Diekershoff * tobias.diekershoff@gmx.net * -* License: 3-clause BSD license + * License: 3-clause BSD license * * Configuration: - * Add the following two lines to your .htconfig.php file: + * Add the following lines to your .htconfig.php file: * * $a->config['piwik']['baseurl'] = 'www.example.com/piwik/'; * $a->config['piwik']['siteid'] = '1'; * $a->config['piwik']['optout'] = true; // set to false to disable + * $a->config['piwik']['async'] = false; // set to true to enable * * Change the siteid to the ID that the Piwik tracker for your Friendica * installation has. Alter the baseurl to fit your needs, don't care @@ -32,13 +33,13 @@ function piwik_install() { register_hook('page_end', 'addon/piwik/piwik.php', 'piwik_analytics'); - logger("installed piwik plugin"); + logger("installed piwik plugin"); } function piwik_uninstall() { unregister_hook('page_end', 'addon/piwik/piwik.php', 'piwik_analytics'); - logger("uninstalled piwik plugin"); + logger("uninstalled piwik plugin"); } function piwik_analytics($a,&$b) { @@ -56,40 +57,50 @@ function piwik_analytics($a,&$b) { $baseurl = get_config('piwik','baseurl'); $siteid = get_config('piwik','siteid'); $optout = get_config('piwik','optout'); + $async = get_config('piwik','async'); /* - * Add the Piwik code for the site. + * Add the Piwik tracking code for the site. + * If async is set to true use asynchronous tracking */ - $b .= "
\r\n \r\n\r\n\r\n
"; + if ($async) { + $a->page['htmlhead'] .= " \r\n\r\n"; + $b .= "
\r\n\r\n
"; + } else { + $b .= "
\r\n \r\n\r\n\r\n
"; + } + /* * If the optout variable is set to true then display the notice * otherwise just include the above code into the page. */ if ($optout) { - $b .= ""; + $b .= ""; } - } function piwik_plugin_admin (&$a, &$o) { - $t = file_get_contents( dirname(__file__)."/admin.tpl"); - $o = replace_macros( $t, array( - '$submit' => t('Submit'), - '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), ''), - '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), - '$optout' => array('optout', t('Show opt-out cookie link?'), get_config('piwik','optout' ), ''), - )); + $t = file_get_contents( dirname(__file__)."/admin.tpl"); + $o = replace_macros( $t, array( + '$submit' => t('Submit'), + '$baseurl' => array('baseurl', t('Piwik Base URL'), get_config('piwik','baseurl' ), t('Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)')), + '$siteid' => array('siteid', t('Site ID'), get_config('piwik','siteid' ), ''), + '$optout' => array('optout', t('Show opt-out cookie link?'), get_config('piwik','optout' ), ''), + '$async' => array('async', t('Asynchronous tracking'), get_config('piwik','async' ), ''), + )); } function piwik_plugin_admin_post (&$a) { - $url = ((x($_POST, 'baseurl')) ? notags(trim($_POST['baseurl'])) : ''); - $id = ((x($_POST, 'siteid')) ? trim($_POST['siteid']) : ''); - $optout = ((x($_POST, 'optout')) ? trim($_POST['optout']) : ''); - set_config('piwik', 'baseurl', $url); - set_config('piwik', 'siteid', $id); - set_config('piwik', 'optout', $optout); - info( t('Settings updated.'). EOL); + $url = ((x($_POST, 'baseurl')) ? notags(trim($_POST['baseurl'])) : ''); + $id = ((x($_POST, 'siteid')) ? trim($_POST['siteid']) : ''); + $optout = ((x($_POST, 'optout')) ? trim($_POST['optout']) : ''); + $async = ((x($_POST, 'async')) ? trim($_POST['async']) : ''); + set_config('piwik', 'baseurl', $url); + set_config('piwik', 'siteid', $id); + set_config('piwik', 'optout', $optout); + set_config('piwik', 'async', $async); + info( t('Settings updated.'). EOL); }