2011-09-25 08:56:03 +00:00
< ? php
/**
* Name : Piwik Analytics
2012-01-31 11:08:46 +00:00
* Description : Piwik Analytics Plugin for Friendica
2012-02-19 09:17:38 +00:00
* Version : 1.1
2012-04-07 07:21:49 +00:00
* Author : Tobias Diekershoff < http :// diekershoff . homeunix . net / friendika / profile / tobias >
2012-02-19 09:17:38 +00:00
* Author : Klaus Weidenbach
2011-09-25 08:56:03 +00:00
*/
2012-01-31 11:08:46 +00:00
/* Piwik Analytics Plugin for Friendica
2011-09-25 08:56:03 +00:00
*
* Author : Tobias Diekershoff
* tobias . diekershoff @ gmx . net
*
2012-02-19 09:17:38 +00:00
* License : 3 - clause BSD license
2011-09-25 08:56:03 +00:00
*
* Configuration :
2012-02-19 09:17:38 +00:00
* Add the following lines to your . htconfig . php file :
2011-09-25 08:56:03 +00:00
*
* $a -> config [ 'piwik' ][ 'baseurl' ] = 'www.example.com/piwik/' ;
* $a -> config [ 'piwik' ][ 'siteid' ] = '1' ;
* $a -> config [ 'piwik' ][ 'optout' ] = true ; // set to false to disable
2012-02-19 09:17:38 +00:00
* $a -> config [ 'piwik' ][ 'async' ] = false ; // set to true to enable
2011-09-25 08:56:03 +00:00
*
2012-01-31 11:08:46 +00:00
* Change the siteid to the ID that the Piwik tracker for your Friendica
2011-09-25 08:56:03 +00:00
* installation has . Alter the baseurl to fit your needs , don ' t care
* about http / https but beware to put the trailing / at the end of your
* setting .
*
* Documentation see http :// diekershoff . homeunix . net / redmine / wiki / friendikaplugin / Piwik_Plugin
*/
function piwik_install () {
register_hook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
2012-02-19 09:17:38 +00:00
logger ( " installed piwik plugin " );
2011-09-25 08:56:03 +00:00
}
function piwik_uninstall () {
unregister_hook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
2012-02-19 09:17:38 +00:00
logger ( " uninstalled piwik plugin " );
2011-09-25 08:56:03 +00:00
}
function piwik_analytics ( $a , & $b ) {
/*
* styling of every HTML block added by this plugin is done in the
2012-01-31 11:08:46 +00:00
* associated CSS file . We just have to tell Friendica to get it
2011-09-25 08:56:03 +00:00
* into the page header .
*/
2012-04-07 07:21:49 +00:00
$a -> page [ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . $a -> get_baseurl () . '/addon/piwik/piwik.css' . '" media="all" />' ;
2011-09-25 08:56:03 +00:00
/*
* Get the configuration variables from the . htconfig file .
*/
$baseurl = get_config ( 'piwik' , 'baseurl' );
$siteid = get_config ( 'piwik' , 'siteid' );
$optout = get_config ( 'piwik' , 'optout' );
2012-02-19 09:17:38 +00:00
$async = get_config ( 'piwik' , 'async' );
2011-09-25 08:56:03 +00:00
/*
2012-02-19 09:17:38 +00:00
* Add the Piwik tracking code for the site .
* If async is set to true use asynchronous tracking
2011-09-25 08:56:03 +00:00
*/
2012-02-19 09:17:38 +00:00
if ( $async ) {
$a -> page [ 'htmlhead' ] .= " <!-- Piwik --> <script type= \" text/javascript \" > \r \n var _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 \n var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; \r \n g.defer=true; g.async=true; g.src=u+'piwik.js'; \r \n s.parentNode.insertBefore(g,s); })(); \r \n </script> \r \n <!-- End Piwik Code --> \r \n " ;
2012-08-14 16:22:31 +00:00
$b .= " <div id='piwik-code-block'> <!-- Piwik --> \r \n <noscript><p><img src= \" // " . $baseurl . " piwik.php?idsite= " . $siteid . " \" style= \" border:0 \" alt= \" \" /></p></noscript> \r \n <!-- End Piwik Tracking Tag --> </div> " ;
2012-02-19 09:17:38 +00:00
} else {
2012-08-14 16:22:31 +00:00
$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= \" // " . $baseurl . " piwik.php?idsite= " . $siteid . " \" style= \" border:0 \" alt= \" \" /></p></noscript> \r \n <!-- End Piwik Tracking Tag --> </div> " ;
2012-02-19 09:17:38 +00:00
}
2011-09-25 08:56:03 +00:00
/*
* If the optout variable is set to true then display the notice
* otherwise just include the above code into the page .
*/
if ( $optout ) {
2012-02-19 09:17:38 +00:00
$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 .= " " ;
2012-08-14 16:22:31 +00:00
$the_url = " // " . $baseurl . " index.php?module=CoreAdminHome&action=optOut " ;
2012-02-19 09:17:38 +00:00
$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> " ;
2011-09-25 08:56:03 +00:00
}
}
function piwik_plugin_admin ( & $a , & $o ) {
2012-02-19 09:17:38 +00:00
$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' ), '' ),
));
2011-09-25 08:56:03 +00:00
}
function piwik_plugin_admin_post ( & $a ) {
2012-02-19 09:17:38 +00:00
$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 );
2011-09-25 08:56:03 +00:00
}