]> git.mxchange.org Git - friendica-addons.git/commitdiff
Asynchronous tracking code for Piwik.
authorKlaus Weidenbach <Klaus.Weidenbach@gmx.net>
Sun, 19 Feb 2012 09:17:38 +0000 (10:17 +0100)
committerKlaus Weidenbach <Klaus.Weidenbach@gmx.net>
Sun, 19 Feb 2012 09:17:38 +0000 (10:17 +0100)
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
piwik/admin.tpl
piwik/piwik.php

index d5060d0b0e7d73171d8154fb5153e37c90cfd504..eefd1cf96b876d5b11c714e77a7101980f759f90 100755 (executable)
@@ -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.
index 0edd062104bca003f54f0f8264df8e6ec9e4c637..e57758a9daecb28c929f4fc9b396332e5d36cb27 100755 (executable)
@@ -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 }}
 <div class="submit"><input type="submit" name="page_site" value="$submit" /></div>
index 5a46cdb3898e3b331458e7b2c0485687f66177eb..dbb1f45a257ea99a672d4aef7eaeff9914decfd4 100755 (executable)
@@ -2,24 +2,25 @@
 /**
  * Name: Piwik Analytics
  * Description: Piwik Analytics Plugin for Friendica
- * Version: 1.0
+ * Version: 1.1
  * Author: Tobias Diekershoff <https://diekershoff.homeunix.net/friendika/profile/tobias>
+ * 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
 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 .= "<div id='piwik-code-block'> <!-- Piwik -->\r\n <script type=\"text/javascript\">\r\n var pkBaseURL = ((\"https:\" == document.location.protocol) ? \"https://".$baseurl."\" : \"http://".$baseurl."\");\r\n document.write(unescape(\"%3Cscript src='\" + pkBaseURL + \"piwik.js' type='text/javascript'%3E%3C/script%3E\"));\r\n </script>\r\n<script type=\"text/javascript\">\r\n try {\r\n var piwikTracker = Piwik.getTracker(pkBaseURL + \"piwik.php\", ".$siteid.");\r\n piwikTracker.trackPageView();\r\n piwikTracker.enableLinkTracking();\r\n }\r\n catch( err ) {}\r\n </script>\r\n<noscript><p><img src=\"http://".$baseurl."/piwik.php?idsite=".$siteid."\" style=\"border:0\" alt=\"\" /></p></noscript>\r\n <!-- End Piwik Tracking Tag --> </div>";
+       if ($async) {
+         $a->page['htmlhead'] .= "<!-- Piwik --> <script type=\"text/javascript\">\r\nvar _paq = _paq || [];\r\n(function(){ var u=((\"https:\" == document.location.protocol) ? \"https://".$baseurl."\" : \"http://".$baseurl."\");\r\n_paq.push(['setSiteId', ".$siteid."]);\r\n_paq.push(['setTrackerUrl', u+'piwik.php']);\r\n_paq.push(['trackPageView']);\r\n_paq.push(['enableLinkTracking']);\r\nvar d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript';\r\ng.defer=true; g.async=true; g.src=u+'piwik.js';\r\ns.parentNode.insertBefore(g,s); })();\r\n </script>\r\n<!-- End Piwik Code -->\r\n";
+         $b .= "<div id='piwik-code-block'> <!-- Piwik -->\r\n<noscript><p><img src=\"http://".$baseurl."piwik.php?idsite=".$siteid."\" style=\"border:0\" alt=\"\" /></p></noscript>\r\n <!-- End Piwik Tracking Tag --> </div>";
+       } else {
+               $b .= "<div id='piwik-code-block'> <!-- Piwik -->\r\n <script type=\"text/javascript\">\r\n var pkBaseURL = ((\"https:\" == document.location.protocol) ? \"https://".$baseurl."\" : \"http://".$baseurl."\");\r\n document.write(unescape(\"%3Cscript src='\" + pkBaseURL + \"piwik.js' type='text/javascript'%3E%3C/script%3E\"));\r\n </script>\r\n<script type=\"text/javascript\">\r\n try {\r\n var piwikTracker = Piwik.getTracker(pkBaseURL + \"piwik.php\", ".$siteid.");\r\n piwikTracker.trackPageView();\r\n piwikTracker.enableLinkTracking();\r\n }\r\n catch( err ) {}\r\n </script>\r\n<noscript><p><img src=\"http://".$baseurl."piwik.php?idsite=".$siteid."\" style=\"border:0\" alt=\"\" /></p></noscript>\r\n <!-- End Piwik Tracking Tag --> </div>";
+       }
+
        /*
         *   If the optout variable is set to true then display the notice
         *   otherwise just include the above code into the page.
         */
        if ($optout) {
-            $b .= "<div id='piwik-optout-link'>";
-            $b .= t("This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool.");
-            $b .= " ";
-            $the_url =  "http://".$baseurl ."index.php?module=CoreAdminHome&action=optOut";
-            $b .= sprintf(t("If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."), $the_url);
-            $b .= "</div>";
+               $b .= "<div id='piwik-optout-link'>";
+               $b .= t("This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool.");
+               $b .= " ";
+               $the_url =  "http://".$baseurl ."index.php?module=CoreAdminHome&action=optOut";
+               $b .= sprintf(t("If you do not want that your visits are logged this way you <a href='%s'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out)."), $the_url);
+               $b .= "</div>";
        }
-
 }
 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);
 }