2011-01-26 09:03:10 -05:00
< ? php
2011-06-14 09:08:03 -04:00
/**
* Name : Piwik Analytics
* Description : Piwik Analytics Plugin for Friendika
* Version : 1.0
* Author : Tobias Diekershoff < https :// diekershoff . homeunix . net / friendika / profile / tobias >
*/
2011-01-26 09:03:10 -05:00
/* Piwik Analytics Plugin for Friendika
*
* Author : Tobias Diekershoff
* tobias . diekershoff @ gmx . net
*
* License : 3 - clause BSD license ( same as Friendika )
*
* Configuration :
* Add the following two lines to your . htconfig . php file :
*
* $a -> config [ 'piwik' ][ 'baseurl' ] = 'www.example.com/piwik/' ;
* $a -> config [ 'piwik' ][ 'sideid' ] = '1' ;
* $a -> config [ 'piwik' ][ 'optout' ] = true ; // set to false to disable
*
* Change the sideid to the ID that the Piwik tracker for your Friendika
* 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 .
2011-02-08 08:39:59 -05:00
*
* Documentation see http :// diekershoff . homeunix . net / redmine / wiki / friendikaplugin / Piwik_Plugin
2011-01-26 09:03:10 -05:00
*/
function piwik_install () {
register_hook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
logger ( " installed piwik plugin " );
}
function piwik_uninstall () {
unregister_hook ( 'page_end' , 'addon/piwik/piwik.php' , 'piwik_analytics' );
logger ( " uninstalled piwik plugin " );
}
function piwik_analytics ( $a , & $b ) {
/*
* styling of every HTML block added by this plugin is done in the
* associated CSS file . We just have to tell Friendika to get it
* into the page header .
*/
$a -> page [ 'htmlhead' ] .= '<link rel="stylesheet" type="text/css" href="' . $a -> get_baseurl () . '/addon/piwik/piwik.css' . '" media="all" />' . " \r \n " ;
/*
* Get the configuration variables from the . htconfig file .
*/
$baseurl = get_config ( 'piwik' , 'baseurl' );
$sideod = get_config ( 'piwik' , 'sideid' );
$optout = get_config ( 'piwik' , 'optout' );
/*
* Add the Piwik code for the side .
*/
$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 \" , 8); \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=8 \" 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'>This website is tracked using the <a href='http://www.piwik.org'>Piwik</a> analytics tool. If you do not want that your visits are logged this way you <a href='http:// " . $baseurl . " index.php?module=CoreAdminHome&action=optOut'>can set a cookie to prevent Piwik from tracking further visits of the site</a> (opt-out).</div> " ;
}
}
2011-06-23 14:47:24 -04:00
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' ), '' ),
'$sideid' => array ( 'sideid' , t ( 'Side ID' ), get_config ( 'piwik' , 'sideid' ), '' ),
'$optout' => array ( 'optout' , t ( 'Show opt-out cookie link?' ), get_config ( 'piwik' , 'optout' ), '' ),
));
}
function piwik_plugin_admin_post ( & $a ) {
$url = (( x ( $_POST , 'baseurl' )) ? notags ( trim ( $_POST [ 'baseurl' ])) : '' );
$id = (( x ( $_POST , 'sideid' )) ? trim ( $_POST [ 'sideid' ]) : '' );
$optout = (( x ( $_POST , 'optout' )) ? trim ( $_POST [ 'optout' ]) : '' );
set_config ( 'piwik' , 'baseurl' , $url );
set_config ( 'piwik' , 'sideid' , $id );
set_config ( 'piwik' , 'optout' , $optout );
info ( t ( 'Settings updated.' ) . EOL );
}